乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 83|回复: 1

[编程交流] 将扩展数据结构转换为XRE

[复制链接]

7

主题

8

帖子

1

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 10:03:59 | 显示全部楼层 |阅读模式
你好
我有一个扩展数据中描述的数据结构:
 
*注册申请名称:LINK\u POLIG
*代码1002,开始或结束大括号:{
*代码1000,ASCII字符串:编辑
*代码1002,开始或结束大括号:}
 
*注册应用程序名称:LINK\u VERT
*代码1002,开始或结束大括号:{
*代码1005,数据库句柄:F4D
*代码1005,数据库句柄:F3E
*代码1005,数据库句柄:EAE
*代码1005,数据库句柄:F43
*代码1005,数据库句柄:F48
*代码1002,开始或结束大括号:}
 
*注册申请名称:LINK\u CENT
*代码1002,开始或结束大括号:{
*代码1005,数据库句柄:31DA
*代码1002,开始或结束大括号:}
 
*注册申请名称:林
*代码1002,开始或结束大括号:{
*代码1005,数据库句柄:3B1E
*代码1005,数据库句柄:3B21
*代码1005,数据库句柄:3B24
*代码1005,数据库句柄:3B27
*代码1005,数据库句柄:3B2A
*代码1002,开始或结束大括号:}
 
该结构为定义多边形(质心)的每个块定义,因此块具有多边形的所有信息。通过限制16kb,我遇到了太大多边形的问题,如何在XRECORD中构建一个结构来记录相同的信息?XRECORD以与集成XDAT文件相同的方式更新由代码1005绑定的句柄?
 
谢谢
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 11:48:14 | 显示全部楼层
好吧,正如在另一篇文章中已经解释的那样。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:
  1. 2

 
然而,我不喜欢为了实现这一点而需要执行大量的编码。我更喜欢只使用内置的ldata函数:
然后列出实体的所有ldata:
这将返回一个关联列表,因此您可以使用assoc获取与“LINK\u VERT”关联的项。
或者您可以使用:
然后清除数据:
ldata基本上为您做了相同的事情,只使用VLO-VL实体而不是XRecord实体。它只是更加自动化和更少的编码。
 
但正如所解释的那样,这两种方法都不能像扩展数据那样“自动”处理更新。如果您需要这些(或自动缩放和点更新),那么请坚持使用扩展数据——这比XRecords更容易使用。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-6 22:10 , Processed in 0.322834 second(s), 56 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表