1. 程式人生 > >基於.NET的CAD二次開發學習筆記一:CAD開發入門

基於.NET的CAD二次開發學習筆記一:CAD開發入門

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名稱空間提供。程式碼如下所示

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices

Public Class MyHello
    <CommandMethod("Hello")> _
    Public Sub Hello()
        '獲取當前活動文件的Editor物件,
        Dim Doc As Autodesk.AutoCAD.ApplicationServices.Document = Application.DocumentManager.MdiActiveDocument
        Dim Ed As Autodesk.AutoCAD.EditorInput.Editor = Doc.Editor
        Ed.WriteMessage("Hello")

    End Sub
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
原文地址: http://www.cnblogs.com/rliverpool/p/3949302.html