好吧,正如在另一篇文章中已经解释的那样。XRecords不介意什么真正去哪里。不,它们不会像扩展数据中那样自动更新句柄。实际上,我建议你坚持使用扩展数据,除非你有其他理由去使用XRecords。
无论如何,您创建了一个未连接的XRecord实体。唯一经常使用的DXF代码是-1、5、0和100(我没有检查100之后需要什么)。类型是成组的,例如,1-9是字符串,10-19是3d点:
进行您自己的测试,如果您试图对代码应用错误的类型,entmakex将失败并给出nil。
接下来,将其附加到实体的字典。假设实体的名称存储在ent中:
我使用的是AxtiveX GetExtensionDictionary方法,因为它的麻烦更少。否则,您首先需要检查实体是否已经有扩展字典-通过检查它是否有(360)直接在(102.{ACAD\u XDICTIONARY”)项之后的项。如果不是,则必须entmakex一个'((0。“DICTIONARY”)(100。“AcDbDictionary”)。然后将其链接到实体…aaaagggghhh我已经受够了
无论如何现在,要获得xrecord:
然而,我不喜欢为了实现这一点而需要执行大量的编码。我更喜欢只使用内置的ldata函数:
然后列出实体的所有ldata:
这将返回一个关联列表,因此您可以使用assoc获取与“LINK\u VERT”关联的项。
或者您可以使用:
然后清除数据:
ldata基本上为您做了相同的事情,只使用VLO-VL实体而不是XRecord实体。它只是更加自动化和更少的编码。
但正如所解释的那样,这两种方法都不能像扩展数据那样“自动”处理更新。如果您需要这些(或自动缩放和点更新),那么请坚持使用扩展数据——这比XRecords更容易使用。 |