无论如何,今天早上我带着焕然一新的眼睛和头脑回到这里,并且已经能够解决这个问题了...所以我修改后的问题的答案是肯定的,我可以只使用一个没有任何块引用的块。然而,这确实使该块容易被清除,所以它并不完美。但是我们有其他的AutoCAD自动化软件(基于COM的没有。NET)做同样的事情,并且不会遇到任何问题。
我认为你对“修改后的问题”说“是”仍然是错的。如果不需要块参照(以可见方式插入到图形中),则是“滥用”块定义-使用它存储一些不需要看到的数据(在本例中为每个文档),这些数据可能会在无意中丢失(通过清除)。应根据数据的性质,使用不同的方法存储与AutoCAD图元无关的数据,如NamedDictionary或附加到模型空间块定义的ExtensionDictionary/XData。
是啊,听起来它最好保存在点头上。
我很好奇Daniel关于通过模型空间块上的扩展数据进行存储的评论。有什么好的理由将数据存储在那里而不是NOD? 将扩展数据存储在具有属性的块中是一个坏主意,当块被同步时,它将被删除:http://www.theswamp.org/index.php?topic=44123.msg494410#msg494410
此外,在检索属性引用时,还需要从BlockTableRecord中检索任何常量属性的属性定义,因为块引用中没有这些属性的引用。这是一种将不可变数据存储在块引用中的方法,但它只能在块定义(BlockTableRecord)中更改,并且不会出现在EATTEDIT编辑器中
一个单行属性可以存储255个字符,超过该值将使AutoCAD崩溃。尝试一下,继续在块中添加文本,编辑超过限制,然后看看会发生什么。实际上,这似乎是不可预测的,AutoCAD似乎没有对其进行监控,崩溃看起来像是典型的缓冲区溢出崩溃。多行文字属性可容纳约27963个字符。这是我在CAD中设定的限制<诺曼解决了你的问题。想想您存储的实际数据是什么,是每个图形还是图形中的每个东西?
页:
1
[2]