前一段時間在做CAD二次開發。不管是誠懇地說還是不誠懇地說,做出來的東西都很坑爹,不值一提。現在那個任務已經暫告一個段落了,所以寫篇博客把值得總結得東西記錄下來。下面的兩個技巧都是困惑了很長時間才解決的,應當略有一些價值。
第一個技巧是啟動CAD的方法。CAD二次開發的技術貌似有很多種,我不太熟悉所以不一一列舉。我是在
首先當然是添加引用(如果沒有裝CAD的話,第一步的第一步是先安裝CAD)。我這里添加的引用有三個,分別是AutoCAD,AXDBLib,MPolygonComlib。我忘了是不是有哪一條可以刪除了?
然后using下面兩條
using
using
然后在窗體所在的命名空間里寫這么一行
[ComImport,
#p#分頁標題#e#然后在這個命名空間里寫一個接口
public
然后在窗體類里寫上下面這些東西
[DllImport("ole32.dll")]
static extern int CoRegisterMessageFilter(IMessageFilter lpMessageFilter, out IMessageFilter lplpMessageFilter);#p#分頁標題#e#
int IMessageFilter.HandleInComingCall(int dwCallType, IntPtr hTaskCaller, int dwTickCount, IntPtr lpInterfaceInfo)
{
}
int IMessageFilter.RetryRejectedCall(IntPtr hTaskCallee, int dwTickCount, int dwRejectType)
{
}
int IMessageFilter.MessagePending(IntPtr hTaskCallee, int dwTickCount, int dwPendingType)
{
}
然后在窗體的構造函數里加上兩行,把構造函數弄成下面這樣
public Form1()
{
}
#p#分頁標題#e#以上內容除了加引用以外我都不知道是干什么用的,不過經過實驗以上內容缺了哪一行都不能啟動CAD。
接下來的步驟就比較清晰了。
AcadApplication pCAD;
System.Type oType = System.Type.GetTypeFromProgID("AutoCAD.Application");
pCAD = System.Activator.CreateInstance(oType,true) as AcadApplication;
pCAD.Visible = true;
pCAD.Documents.Open("CAD文件的路徑",
CAD就成功啟動了。
第二個技巧是用代碼往CAD里發送命令行。說起來很慚愧,有很多操作,比如合并多段線,我沒有找到相應的接口。解決方法之一是讀取兩條多段線的坐標,新畫一條合并后的多段線并刪除兩個舊的多段線,但是這個做法太惡心了。于是我找到了一個方法,用代碼往CAD里發送命令行。下面是一句合并多段線的代碼。
pCAD.ActiveDocument.SendCommand("pen(handent""
里面這個命令行等價于下面這個操作。
首先,在CAD里輸入命令pe,回車,進入多段線操作。
然后,如果是在CAD#p#分頁標題#e#里直接操作的話,這個時候應該用鼠標選擇一個實體。但是代碼不能實現這個操作,所以要用代碼指定一個實體。例如(handent"EX21")是指定了編號為EX21的實體。這個實體用代碼表示是"(handent""
然后,往CAD里輸入命令j,即選擇合并多段線命令。
然后再用代碼選中另外一個實體,比如"XE78"號實體。這相當于在CAD中輸入(handent"XE78")并回車。
然后再回車,合并兩條多段線。
輸入(command),回車,退出多段線操作命令。在CAD中,這個操作可以通過點擊esc鍵實現,但是用代碼的話只能輸入(command)并回車。
用代碼發送命令行跟直接往CAD里輸入命令行是一樣的,上面那句代碼執行后CAD的命令行窗口里會顯示相應的命令。上面這個例子說明了命令行的構造規則,其他命令可以按照這個規則構造。同時這導致一個問題,即代碼執行完畢前千萬不要點擊CAD窗口,否則點擊操作可能被視為一個選擇實體的操作,從而干擾命令行的執行。例如,如果系統認為點擊操作是在"pen"之后、"(handent""
致謝:肖澤云編著的《基于Visual
相關文章
- 2021-08-23精通AutoCAD三維設計與開發PDF下載
- 2021-08-22AutoCAD 2013應用與開發系列中文版AutoCAD 2013室內裝
- 2021-08-22AutoCAD 2013應用與開發系列中文版AutoCAD 2013機械圖
- 2021-08-19數字化成圖-最新AutoCAD地形圖測繪高級開發PDF下載
- 2021-08-03Autodesk RevitStructure2012應用寶典 [歐特克軟件(中
- 2021-08-02Autodesk RevitMEP2012應用寶典 [歐特克軟件(中國)有限
- 2021-08-02Autodesk Revit2013族達人速成 [歐特克軟件(中國)有限公
- 2021-08-01Visual Basic與AutoCAD二次開發PDF下載
- 2021-07-31Autodesk Revit2012族達人速成 [歐特克軟件(中國)有限公
- 2021-07-18AutoCAD VBA開發手冊PDF下載