首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Autodesk 官方 .NET 教程(一):建立首個 AutoCAD .NET 外掛——Hello World 命令完整實作

     編輯:關於C語言

前言:AutoCAD .NET API 開發入門

AutoCAD 2006 引入 .NET Managed Wrapper(acdbmgd.dll、acmgd.dll),允許以 C#/VB.NET 開發外掛,享受受控代碼優勢:記憶體安全、豐富類庫、Visual Studio 整合偵錯。本教程基於 Autodesk 官方實驗室文檔,帶你從零建立首個 HelloWorld 命令。

開發環境準備

  • AutoCAD 2006 (或更新版本)
  • Visual Studio .NET 2003 / 2005 / 2019+
  • .NET Framework 1.1 / 2.0 / 4.8 對應版本

步驟 1:建立類別庫專案

  1. VS 啟動 → 檔案 → 新增 → 專案
  2. 專案類型:Visual C# → 類別庫
  3. 名稱:Lab1,位置自選
  4. 確定 → 產生 Class1.cs

步驟 2:加入 AutoCAD .NET 組件參考

  1. 方案總管右鍵「參考」→ 加入參考 → 瀏覽
  2. 定位至 AutoCAD 安裝目錄(預設 C:\Program Files\AutoCAD 2006\)
  3. 選取 acdbmgd.dll(ObjectDBX 受控類別:資料庫、實體、交易)
  4. 再次瀏覽選取 acmgd.dll(AutoCAD 受控類別:編輯器、應用程式、文件管理)
  5. 確定

步驟 3:使用物件瀏覽器探索 API

檢視 → 其他視窗 → 物件瀏覽器,展開:

  • Autodesk.AutoCAD.EditorInput.Editor:命令列輸出、使用者互動、選擇集
  • Autodesk.AutoCAD.ApplicationServices.Application:文件管理、系統變數
  • Autodesk.AutoCAD.DatabaseServices:圖形資料庫操作(後續實驗室)

步驟 4:匯入命名空間

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;

步驟 5:定義命令方法

public class Class1
{
    [CommandMethod("HelloWorld")]
    public void HelloWorld()
    {
        // 取得當前文件的編輯器
        Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
        // 向命令列寫入訊息
        ed.WriteMessage("\nHello World");
    }
}

關鍵點:

  • [CommandMethod("HelloWorld")] 屬性將方法註冊為 AutoCAD 命令
  • 命令名區分大小寫,建議 PascalCase
  • Editor.WriteMessage 輸出至命令列,支援 \n 換行

步驟 6:設定偵錯啟動 AutoCAD

  1. 專案右鍵 → 屬性 → 偵錯
  2. 啟動動作:啟動外部程式 → 選取 acad.exe(AutoCAD 安裝目錄)
  3. F5 啟動偵錯 → AutoCAD 啟動,專案自動建置載入

步驟 7:載入組件並測試命令

  1. AutoCAD 命令列輸入 NETLOAD
  2. 選擇建置輸出目錄下的 Lab1.dll
  3. 命令列輸入 HELLO WORLD(不區分大小寫)
  4. 命令列顯示 Hello World

步驟 8:斷點偵錯驗證

  1. VS 中 ed.WriteMessage 行打斷點
  2. AutoCAD 再次執行 HELLO WORLD
  3. VS 斷點命中,可檢視變數、呼叫堆疊、即時運算視窗

CommandMethod 進階用法

CommandMethod 提供 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,需加判斷

下一步學習路徑

  1. 實驗室 2:建立實體(Line、Circle、Text)、加入資料庫、交易管理
  2. 實驗室 3:選擇集操作、編輯器互動
  3. 實驗室 4:自訂物件、事件處理、反應器
  4. 進階:PaletteSet 側邊欄、Ribbon 整合、Civil 3D / Map 3D API

總結

短短幾分鐘,我們完成了:專案建立 → 參考加入 → 命令定義 → 偵錯設定 → NETLOAD 載入 → 命令執行 → 斷點偵錯。這就是 AutoCAD .NET 開發的標準工作流。掌握 Editor、Document、Database 三大核心物件,即可展開無限可能的 AutoCAD 二次開發之旅。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved