1、AutoCAD .NET API由不同的DLL文件組成,它們提供用於訪問圖形文件或AutoCAD應用程序的包含豐富的類、結構、方法和事件。每一個DLL文件都定義不同的使用基於功能的庫組織組件的命名空間。
下面是你將頻繁地要使用的AutoCAD .NET API 的三個主要的DLL文件:
AcDbMgd.dll. 當使用圖形文件中的對象時使用這個DLL文件。
AcMgd.dll. 當使用AutoCAD應用程序時使用這個DLL文件。
AcCui.dll. 當使用自定義文件時使用這個DLL文件。
注意:在創建CAD項目時,需要引用到以上DLL,一般來說前面兩個使用的較多。AutoCAD .NET API DLL被引用,就必須設置引用DLL文件的“復制到本地”屬性為False。復制到本地屬性確定當Microsoft Visual Studio編譯工程時是否創建一個引用DLL文件的副本並將它放在與工程的程序集文件相同的目錄下。由於引用文件已經是AutoCAD附屬文件,因此,創建引用文件的副本后當加載程序集文件到AutoCAD中時將可能引發意想不到的結果。
2、在.NET 類中加入CAD能調用的命令,必須用到CommandMethod屬性,這個屬性由Runtime命名空間提供。代碼如下所示
1 Imports Autodesk.AutoCAD.Runtime 2 Imports Autodesk.AutoCAD.ApplicationServices 3 Imports Autodesk.AutoCAD.DatabaseServices 4 5 Public Class MyHello 6 <CommandMethod("Hello")> _ 7 Public Sub Hello() 8 '獲取當前活動文檔的Editor對象, 9 Dim Doc As Autodesk.AutoCAD.ApplicationServices.Document = Application.DocumentManager.MdiActiveDocument 10 Dim Ed As Autodesk.AutoCAD.EditorInput.Editor = Doc.Editor 11 Ed.WriteMessage("Hello") 12 13 End Sub 14 End Class
3、CAD項目生成類庫后,可在 AutoCAD 的命令提示符中,輸入 netload 命令,並選中生成的DLL,加載CAD項目,即可在CAD中使用CommandMethod指定的命令。
4、CAD調試(以CAD2010、VS2010為例):右鍵打開項目屬性-->調試-->選擇啟動外部程序 \AutoCAD2010\acad.exe
斷點不起作用如下
(解決方法摘自:http://www.cnblogs.com/junqilian/archive/2010/04/29/1724403.html)
斷點不起作用的原因在於Visual Studio 2010在調試時啟動了默認的debugger(v4.0),但是為了讓我們的.net應用程序能在AutoCAD Map (或Revit)等上運行,我們需要.net 2.0 framework( 3.5也是運行在CLR 2.0之上的)。
解決辦法有如下兩個方案:
方案1
編輯宿主程序的config 文件(acad.exe.config, revit.exe.config等等),這個文件在AutoCAD的安裝目錄下。在</configuration>前面加上下面的代碼(CAD2010該行代碼已被注釋):
<startup>
<supportedRuntime version="v2.0.50727" />
</startup>
方案2
把宿主exe文件作為一個已有的項目加到您的解決方案中,並把debugger設置為v2.0
右鍵單擊Solution Explorer,選擇Add->Existing Project,瀏覽到AutoCAD的啟動文件Acad.exe
右鍵單擊該項目,把它設置為啟動項目 Set as StartUp Project
打開項目屬性對話框 Properties
設置 Debugger Type 為 Managed v2.0
5、對於不同的AutoCAD版本,推薦使用的.NET Framework版本如下:
2007-2009 -> Framework 2.0
2010-2011 -> Framework 3.5
2012-2013 -> Framework 4.0