乐筑天下

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

用C#读取块的属性

[复制链接]

21

主题

58

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
142
发表于 2019-6-20 04:35:17 | 显示全部楼层
感谢您的回复。我居然问错了问题。我的意思是问我们是否必须创建一个块引用,以便能够存储一个属性值(而不是仅仅将值存储在块中)。在这个特殊的例子中,我存储了一个“作业”(又名订单,又名项目)的属性,并且只需要它的一个实例。所以我希望只需处理块记录,而不必创建块引用。
无论如何,今天早上我带着焕然一新的眼睛和头脑回到这里,并且已经能够解决这个问题了...所以我修改后的问题的答案是肯定的,我可以只使用一个没有任何块引用的块。然而,这确实使该块容易被清除,所以它并不完美。但是我们有其他的AutoCAD自动化软件(基于COM的没有。NET)做同样的事情,并且不会遇到任何问题。
回复

使用道具 举报

4

主题

219

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
238
发表于 2019-6-20 09:46:45 | 显示全部楼层

我认为你对“修改后的问题”说“是”仍然是错的。如果不需要块参照(以可见方式插入到图形中),则是“滥用”块定义-使用它存储一些不需要看到的数据(在本例中为每个文档),这些数据可能会在无意中丢失(通过清除)。应根据数据的性质,使用不同的方法存储与AutoCAD图元无关的数据,如NamedDictionary或附加到模型空间块定义的ExtensionDictionary/XData。
回复

使用道具 举报

85

主题

404

帖子

7

银币

中流砥柱

Rank: 25

铜币
751
发表于 2019-6-20 12:07:19 | 显示全部楼层
是啊,听起来它最好保存在点头上。
我很好奇Daniel关于通过模型空间块上的扩展数据进行存储的评论。有什么好的理由将数据存储在那里而不是NOD?
回复

使用道具 举报

23

主题

239

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
327
发表于 2019-6-21 19:47:56 | 显示全部楼层
将扩展数据存储在具有属性的块中是一个坏主意,当块被同步时,它将被删除:http://www.theswamp.org/index.php?topic=44123.msg494410#msg494410
此外,在检索属性引用时,还需要从BlockTableRecord中检索任何常量属性的属性定义,因为块引用中没有这些属性的引用。这是一种将不可变数据存储在块引用中的方法,但它只能在块定义(BlockTableRecord)中更改,并且不会出现在EATTEDIT编辑器中
一个单行属性可以存储255个字符,超过该值将使AutoCAD崩溃。尝试一下,继续在块中添加文本,编辑超过限制,然后看看会发生什么。实际上,这似乎是不可预测的,AutoCAD似乎没有对其进行监控,崩溃看起来像是典型的缓冲区溢出崩溃。多行文字属性可容纳约27963个字符。这是我在CAD中设定的限制<诺曼解决了你的问题。想想您存储的实际数据是什么,是每个图形还是图形中的每个东西?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2024-11-22 10:05 , Processed in 0.220076 second(s), 58 queries .

© 2020-2024 乐筑天下

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