我可以使用 COM api 过滤 AutoCAD 选择集吗?

Posted

技术标签:

【中文标题】我可以使用 COM api 过滤 AutoCAD 选择集吗?【英文标题】:Can I filter an AutoCAD SelectionSet with the COM api? 【发布时间】:2019-09-09 06:49:21 【问题描述】:

我正在为 AutoCAD 编写一个外部工具(使用 COM api),我需要过滤一个 SelectionSet,但我无法确定“FilterType”和“FilterData”参数的正确类型。

我知道它已经过时了,但我需要使用 COM api,而且我一辈子都找不到任何文档。有更多经验的人可以帮我解决这个问题吗?

这些是有问题的行:

AcadApplication app = Marshal.GetActiveObject(AppID) as AcadApplication;
AcadSelectionSet SelectionSet = app.ActiveDocument.SelectionSets.Add(name);

int[] filterType = new int[1];
object[] filterData = new object[1];

filterType[0] = (int)DxfCode.BlockName;
filterData[0] = "T-siman";

SelectionSet.SelectOnScreen(filterType, filterData);

最后一行返回以下异常: System.ArgumentException: 'SelectOnScreen 中的参数 FilterType 无效'

【问题讨论】:

【参考方案1】:

我一直在寻找解决方案,因为我被卡住了,但后来我找到了THIS QUESTION 并注意到这个人使用“短”类型的数组而不是“int”类型的数组作为“FilterType”参数。这样做对我有用。

我的工作代码:

AcadApplication app = Marshal.GetActiveObject(AppID) as AcadApplication;
AcadSelectionSet SelectionSet = app.ActiveDocument.SelectionSets.Add(name);

short[] filterType = new short[1];
object[] filterData = new object[1];

filterType[0] = (short)DxfCode.BlockName;
filterData[0] = "T-siman";

SelectionSet.SelectOnScreen(filterType, filterData);

【讨论】:

以上是关于我可以使用 COM api 过滤 AutoCAD 选择集吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 .NET API 打开 AutoCAD 2015

如何使用设计自动化 API 从上传的 AutoCAD 文件中提取元数据?

AutoCAD二次开发——AutoCAD.NET API开发环境搭建

有没有办法使用 Forge Viewer API 在查看器上运行 Autocad 命令?

PADS AUTOCAD导入板框问题

Forge API 可以实现下面的东西吗?