AutoCAD插件与外部程序的接口

时间:2016-05-03 16:34:01

标签: c# python com interop autocad

我正在创建一个python应用程序来自动执行AutoCAD中的某些任务(在特定图层中绘制特定形状并检查某些圆圈的位置)。

对于第一部分,绘制内容,很容易使用AutoCAD Interop库,因为您可以轻松地将对象放在活动文档中而无需在AutoCAD上执行任何操作,甚至无法加载任何插件。但是,我没有找到任何方法使用相同的库来检查文档中对象的属性。

我需要的是一个函数,当作为参数传递图层名称时,返回该图层中每个圆的中心列表。

现在,只需加载一个插件就可以轻松完成。但我需要将信息传递给python程序(通过pythonnet加载AutoCAD Interop库),我不知道该怎么做。

总而言之,我需要:

  • 了解如何使用AutoCAD Interop库检索图纸的信息。

  • 将AutoCAD插件与在python中编写的外部应用程序连接。

我打算做什么?什么是最好的方法?

2 个答案:

答案 0 :(得分:0)

您也可以在没有Interop的情况下使用AutoCAD:

  1. 您可以在AutoCAD中托管WCF服务并与它们进行交互。我没有免费样品,对不起(只有我的私人解决方案,而不是出版)。 WCF服务可以托管在acad.exeaccoreconsole.exe(2016 {2016}除外)。

  2. 您可以在AutoCAD中托管PowerShell并与其进行交互。我通过这种方式发布了here

  3. 我对不同的情况使用这些方法。

答案 1 :(得分:0)

关于此: “将AutoCAD插件与用python编写的外部应用程序接口”

据我了解,该插件只能通过打开的AutoCAD应用程序访问,因此,要与该插件进行接口,您的应用程序必须与AutoCAD进行接口。

我不知道Python是否可以做到这一点,但是使用AutoCAD Interop和C#,您可以做到这一点:

public void SendCommand(string command, params object[] args)
{
    AcadApplication app = GetActiveApp();
    AcadDocument acDoc = app.ActiveDocument;

    // Without arguments
    acDoc.SendCommand("command");

    // With arguments
    acDoc.SendCommand("command args[2], args[1], args[2]");
}

因此,您可以像这样调用您的插件:

acDoc.SendCommand("yourPluginCommandName layerName");