學習AutoCAD二次開發已經有一段時間了,磕磕碰碰,十分的艱辛枯燥。但回想一下還是會有些小激動,嘿嘿!最近這段時間一直都有這么個想法,就是將我學習CAD二次開發的過程用文字的方式記錄下來,形成系列,並定期更新。主要內容就是記錄自己每天學習過程中所碰見的問題和感悟,並總結今天所學到的內容。目的一是激勵自己堅持下去,看着自己一步一步的提高,多有成就感。還有就是和大家積極溝通,希望能夠指正我的錯誤,減少我的彎路。再者就是望能給后面學習的人一點點借鑒經驗,好吧其實還有點裝B的心里。廢話不多說就進入今天的正題:
⦁ 使用工具:Visual Studio 2013和AutoCAD2010
⦁ 學習工具:《AutoCAD VBA和VB.NET開發基礎和實例教程》C#版、《深入淺出AutoCAD.NET二次開發》、《AutoCAD .net開發人員手冊》和網絡(目前)
⦁ 操作系統:Win10 64位
⦁ 開發語言:C#
⦁ 軟件設置:
1.打開Visual Studio 2013,新建一個【類庫】項目;
2.在軟件右側【解決方案資源管理器】(如果沒有,在【視圖】中選擇第一個選項即可)的項目內找到“引用”,右擊選擇【添加引用】,然后選擇【瀏覽】選項卡,接着找到CAD安裝目錄下的acdbmgd.dll和acmgd.dll這兩個文件,【確定】;
3.在“引用”中找到剛引用的兩個文件acdbmgd.dll和acmgd.dll,右擊選擇屬性,將他們【復制本地】的值設為“False”,雙擊即可更改。顧名思義,如果【復制本地】的值為“True”時,會將這兩個文件復制到當前所創建項目下,會導致AutoCAD運行時發生未知錯誤(其實我也沒試過),在【解決方案資源管理器】里可以包含多個類庫文件,每個類庫里也可以添加多個類文件(.cs)。每次添加新的【類庫】時,都要引用acdbmgd.dll和acmgd.dll這兩個文件。
4.右擊類庫名,選擇屬性,將【應用程序】中“目標框架”里面的內容改為“.NET Framework 3.5”,將【生成】中“目標平台”改為“X64”(這個是根據操作系統來選擇的,X86是32位,X64則為64位,貌似不改也可以)。
AutoCAD .NET與Visual Studio版本對應關系 | ||
AutoCAD版本 | .NET版本 | Visual Studio版本 |
2010-2011(R18.0-R18.1) | 3.5 | VS2008 SP1 |
2012(R18.2) | 4 | VS2010 |
2013(R19.0) | 4 | VS2010 SP1 |
5.添加命名空間,目的是為了方便調用命名空間中的集成函數,剛看到這得時候也不是很理解,但到后面的具體實例,親自動手實驗了下,就明白了。前幾天剛看了教學視頻,其中有一句話對我影響很大,他是說不要心疼電腦的鍵盤,學習編程就要不斷的敲擊鍵盤,當你敲壞一個鍵盤的時候,你就入門了,當你敲得代碼有10G的時侯,你就出師了。下面是常用的幾個命名空間:
Autodesk.AutoCAD.DatabaseServices;命名空間中的類包括直線、圓、圓弧等,以及層、線型和樣式等。
Autodesk.AutoCAD.Runtime;命名空間中的類提供了系統級別的功能,比如常用的CommandMethod屬性。(其實我也沒理解)
Autodesk.AutoCAD.ApplicationServices;命名空間中的類用來定義和注冊新的AutoCAD命令。
Autodesk.AutoCAD.EditorInput;命名空間提供了與用戶交互有關的類,比如提示用戶輸入等。通過這句話就能理解出命名空間的作用。
Autodesk.AutoCAD.Colors;命名空間提供了與顏色有關的類。
Autodesk.AutoCAD.Geometry;命名空間中的類被用來執行2D和3D的幾何操作。
6.要能使能在AutoCAD中能調用命令的方法(比如畫直線的命令“L”),執行代碼,就需要在類代碼開頭加入CommandMethod屬性。
public class Class1 { [CommandMethod("HW")] public void HW() { } }
7.打開AutoCAD,輸入NETLOAD,瀏覽項目目錄...項目名稱\bin\debug文件夾下的dll文件,然后輸入相應命令即可。
感謝:《AutoCAD VBA和VB.NET開發基礎和實例教程》C#版的作者才鳥,其中大部分知識都是學習這本書上的,再次感謝。我學的時候並沒有挨着學習,而是根據具體例子來跳躍學習,具體實例會在今后的日記中說明。