標籤:cad 調試 vs2005
1)開啟VS2005,選擇Visual C#--》類庫--》名稱為:Line2,如下:
圖(1) 建立C# 的類庫
2)為項目Line2引用三個dll檔案,分別為acdbmgd.dll、acmgd.dll、DotNetARX.dll。其中acdbmgd.dll、acdmgd.dll是AutoCCAD託管封裝類,DotNetARX.dll是一個用於.net開發AutoCAD程式的類庫。前兩個dll在AutoCAD的安裝檔案裡可以找到,DotNetARX.dll可以在網上下一個,我用的是DotNetARX6.0。acdbmgd.dll、acdmgd.dll的屬性有一個“複製到本地“:False。
圖(2)添加三個dll引用
圖(3)將cdbmgd.dll、acdmgd.dll的”複製本地“選為False
3)禁用LoaderLock。點擊”調試“--》異常--》 Managed Debugging Assistans-->去掉”LoaderLock“前面的對勾。
圖(4)禁用LoaderLock
4)啟用外部程式:C:\Program Files\AutoCAD 2006\acad.exe。
右擊項目”Line2“--》屬性--》調試--》勾選”啟用外部程式“。如下:
圖(5)啟用外部的acad.exe
5) C#編寫的代碼如下:
using System;using System.Collections.Generic;using System.Text;using Autodesk.AutoCAD.DatabaseServices;using Autodesk.AutoCAD.Geometry;using Autodesk.AutoCAD.Runtime;namespace Line2{ public class Line2 { [CommandMethod("FirstLine")] public static void FirstLine() { //擷取當前活動圖表形資料庫 Database db = HostApplicationServices.WorkingDatabase; Point3d startPoint = new Point3d(500, 500, 0); //直線起點 Point3d endPoint = new Point3d(700, 500, 0); //直線終點 Line line = new Line(startPoint, endPoint); //建立一直線對象 //定義一個指向當前資料庫的交易處理,以添加直線 using (Transaction trans = db.TransactionManager.StartTransaction()) { BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead); //以讀方式開啟塊表. //以寫方式開啟模型空間塊表記錄. BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite); //將繪圖物件的資訊添加到塊表記錄中,並返回ObjectId對象. btr.AppendEntity(line); trans.AddNewlyCreatedDBObject(line, true); //把對象添加到交易處理中. trans.Commit(); //提交交易處理 } } }}
6)按F5鍵啟動調試,在AutoCAD的命令列視窗輸入命令:
netload
找到Line2.dll(一般在工程的Debug目錄裡),開啟Line2.dll,在AutoCAD的命令列視窗輸入自訂的命令:
FirstLine
效果如下:
圖(6)輸入netload,載入Line2.dll
圖(7)輸入自訂的命令FirstLine,畫一條直線