如何使用Autocad中的Process Dll通过visual studio Exe绘制Circle?

时间:2013-10-01 10:50:36

标签: c# autocad

我需要通过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执行吗?

提前致谢..

1 个答案:

答案 0 :(得分:1)

在进程中,需要将dll加载到AutoCAD中。使用NetLoad使您可以使用已定义的命令。您打算调用的命令必须是公共的,并具有以下命令标志:

[CommandMethod("MyCircle")]
public static void MyCircle()
{
    ...
}

编译完dll并将其加载到AutoCAD后,在命令行中输入MyCircle将调用您定义的方法。