我需要通过process dll(Acdbmgd.dll ,acmgd.dll)
点击按钮来创建圈子。
我可以通过COM interop dll创建圆圈。但我不知道如何使用process dll
创建圆圈。
以下是示例代码:
Database db = HostApplicationServices.WorkingDatabase;
Document doc = Autodesk.AutoCAD.ApplicationServices.
Application.DocumentManager.GetDocument(db);
// Perform our addition
double res = 5 + 9;
// Lock the document before we access it
DocumentLock loc = doc.LockDocument();
using (loc)
{
Transaction tr = db.TransactionManager.StartTransaction();
using (tr)
{
// Create our circle
Circle cir =
new Circle(new Point3d(0, 0, 0), new Vector3d(0, 0, 1), res);
cir.SetDatabaseDefaults(db);
// Add it to the current space
BlockTableRecord btr = (BlockTableRecord)tr
.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
btr.AppendEntity(cir);
tr.AddNewlyCreatedDBObject(cir, true);
// Commit the transaction
tr.Commit();
}
}
当我执行上面的代码时,按钮点击意味着在运行时错误抛出“无法找到指定的模块”。
但是如果我创建一个单独的dll,那么我在我的项目中引用该dll并创建对象,这意味着它正在工作
但我需要在调试模式下运行代码,所以我需要使用exe.Is无论如何要通过exe执行吗?
提前致谢..
答案 0 :(得分:1)
在进程中,需要将dll加载到AutoCAD中。使用NetLoad使您可以使用已定义的命令。您打算调用的命令必须是公共的,并具有以下命令标志:
[CommandMethod("MyCircle")]
public static void MyCircle()
{
...
}
编译完dll并将其加载到AutoCAD后,在命令行中输入MyCircle将调用您定义的方法。