AngelKostadinov 发表于 2015-7-28 11:46:07

查找和分解代理对象

大家好,
我正在使用AutoCAD 2016,我正在为我们的客户批处理文件。目前,我正在处理大约200个文件,其中包含从第三方库(SYSCAD)创建的代理对象。我们的客户希望删除所有代理对象,并在其位置上保留更简单的对象。我必须在不更改图纸图形信息的情况下删除代理。
这就是为什么我试图完成以下任务:
- 打开dwg文件;
- 查找所有布局(包括模型空间)中的所有代理对象;
- 将它们分解为原始对象;
- 保存文件;
请记住,我有SYSCAD启用器dbx文件。
这让我感到沮丧的是:
- 如果我打开文件而不加载启用码并循环访问布局,我可以获取来自Prservosoentity类型的所有对象,但是如果我将它们分解,则离开的对象看起来并不完全像分解的代理对象;
- 如果我打开文件,启用码加载到AutoCAD中,则许多代理对象将被视为折线或线条或块引用,但不是代理实体。
我可以用来识别哪些对象是代理的有效标准是什么?
请参阅附加的图片> 在第一个上,对象是折线,因为启用码已加载,AutoCAD知道如何处理此对象。另一方面,在第二张图片上,您可以看到,当未加载启用码时,它表示该对象是代理。
当我迭代布局时,如何识别哪个对象是真正的折线,哪个对象是代理,但从Autocad“理解”为折线?
谢谢!



**** Hidden Message *****

owenwengerd 发表于 2015-7-28 21:12:16

您可以检查RX类名。

AngelKostadinov 发表于 2015-7-29 04:10:56

谢谢,欧文!
我看到RX类名不同。我知道所有代理对象都是僵尸,但我不确定是否所有“识别”的代理都使用与它们所类比的对象不同的名称。
在上述情况下,对象被识别为多段线,其RX类名不是AcDbPolyline,但我能否确定这始终是正确的。

AngelKostadinov 发表于 2015-7-29 10:37:34


Gile在我想的某个地方有一个僵尸清除方法。

owenwengerd 发表于 2015-7-30 04:03:05

是的,我看到了,但是他以一种非常有趣的方式遍历所有对象并检查rxClass。因为我有激活器,所以rxclass不是僵尸。我想找到一个经验法则,如何区分从SYSCAD创建的对象和那些原生的对象。

owenwengerd 发表于 2015-7-30 16:02:59

从C++,您可以检查每个RX类的应用程序名称,但我不知道您是否可以从。NET。如果他们注册了他们的类以进行需求加载,您可以梳理他们的需求加载注册表项,并将RX类名列表收集到一个静态列表中,您可以对其进行硬编码。
页: [1]
查看完整版本: 查找和分解代理对象