AutoCAD 2006 引入 .NET Managed Wrapper(acdbmgd.dll、acmgd.dll),允許以 C#/VB.NET 開發外掛,享受受控代碼優勢:記憶體安全、豐富類庫、Visual Studio 整合偵錯。本教程基於 Autodesk 官方實驗室文檔,帶你從零建立首個 HelloWorld 命令。
Lab1,位置自選Class1.csC:\Program Files\AutoCAD 2006\)檢視 → 其他視窗 → 物件瀏覽器,展開:
Autodesk.AutoCAD.EditorInput.Editor:命令列輸出、使用者互動、選擇集Autodesk.AutoCAD.ApplicationServices.Application:文件管理、系統變數Autodesk.AutoCAD.DatabaseServices:圖形資料庫操作(後續實驗室)using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
public class Class1
{
[CommandMethod("HelloWorld")]
public void HelloWorld()
{
// 取得當前文件的編輯器
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
// 向命令列寫入訊息
ed.WriteMessage("\nHello World");
}
}
關鍵點:
[CommandMethod("HelloWorld")] 屬性將方法註冊為 AutoCAD 命令Editor.WriteMessage 輸出至命令列,支援 \n 換行acad.exe(AutoCAD 安裝目錄)NETLOADLab1.dllHELLO WORLD(不區分大小寫)Hello Worlded.WriteMessage 行打斷點HELLO WORLDCommandMethod 提供 7 種多載,控制:
CommandFlags.Modal、Session、NoHistory、Transparent 等[CommandMethod("MyGroup", "MyCmd", "MyLocal", CommandFlags.Modal)]| 問題 | 原因與解決 |
|---|---|
| NETLOAD 失敗「無法載入組件」 | 目標框架版本不符(AutoCAD 2006 需 .NET 1.1/2.0),專案屬性 → 應用程式 → 目標框架調整 |
| 命令無反應 | 檢查 CommandMethod 拼寫、組件確實載入(NETLOAD 成功訊息)、命令名衝突 |
| 偵錯無法命中斷點 | 確認偵錯啟動設定正確、PDB 檔案存在、建置配置為 Debug |
| 編輯器為 null | 無開啟文件時 MdiActiveDocument 為 null,需加判斷 |
短短幾分鐘,我們完成了:專案建立 → 參考加入 → 命令定義 → 偵錯設定 → NETLOAD 載入 → 命令執行 → 斷點偵錯。這就是 AutoCAD .NET 開發的標準工作流。掌握 Editor、Document、Database 三大核心物件,即可展開無限可能的 AutoCAD 二次開發之旅。