乐筑天下

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

[编程交流] 命名/识别AcDbLine对象

[复制链接]

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 22:16:56 | 显示全部楼层 |阅读模式
大家好,
 
我试图命名/标识图形中的AcDbLine对象(用户绘制的AutoCAD线条)。我找到了他的objectID或handle属性,但问题是,如果用户剪切/复制了对象,那么他的objectID和handle属性就会改变。
 
如何识别对象?我可以用getxdata存储他的名字吗?或选择集、字典、组…
 
谢谢你的帮助,请原谅我的英语
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 22:34:43 | 显示全部楼层
如果你很好地复制了任何对象,那么它有一个新的唯一标识。旧的行仍然有正确的句柄标识。唯一的方法是你真的需要标识新对象吗?如果是这样,你必须开始通过菜单或你创建的命令来查看某种形式的控制用户输入。
 
我知道有一家公司关闭了Line等命令,所以你必须使用公司标准
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 22:47:35 | 显示全部楼层
谢谢你的回答。即使我控制了用户输入,我如何迭代来找到我的对象?我该怎么命名?
 
问题还在于,当您保存文件、关闭并重新打开它时,objectID会发生变化!
 
谢谢你抽出时间
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 23:11:56 | 显示全部楼层
 
要持久地“跟踪”对象,您需要存储一些持久的标识标准,例如自定义词典等。
 
第一个挑战是识别源实体,然后通过用户操作(即PEDIT、Copy等)跟踪它。。。第二种方法是在保存/关闭之前存储“当前”状态,这样您的代码可以说“从中断的地方开始”。
 
对于前者,您需要决定如何存储持久标识标准。。。可能是存储每个实体的扩展数据等,并实现适当的机制来做到这一点,最有可能是在IExtensionApplication时。调用Initialize()(假设这是一个插件)。另一方面,是如何使其保持最新,并针对您的问题,在需要时如何“找到”它。通过将识别标准存储到实体,而不是将某些特定于实体的数据存储到自定义词典(在NOD[命名对象词典]内)等中,您可以轻松地将其从用户操作传递到结果实体。至于在需要时获取它,您可以考虑将对象作为列表等存储到私有字段。。
 
[编辑]。。。下一个方面是实现每个文档的数据,以考虑MDI。
 
对于后者,我认为存储自定义扩展数据等,而不是存储到NOD,然而,您需要使用最适合您的情况的。。。我可能没有所有的相关信息来建议满足您需求的最佳解决方案。
 
HTH(希望这有帮助)
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 23:30:54 | 显示全部楼层
好的,谢谢。我将使用handle对象属性。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 11:39 , Processed in 0.583233 second(s), 62 queries .

© 2020-2025 乐筑天下

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