Grenco 发表于 2022-7-6 12:57:41

事实上,这篇文章的这一部分与其说是手柄变化的可能原因,不如说是需要在你们继续前进的过程中进行调查。
 
我不确定是什么构成了AutoCAD中的“新”对象。例如,可以创建一个圆并获取句柄。它可以移动,甚至可以缩放,但手柄将保持不变。然而,如果修剪了圆的一部分,则该圆可能构成一个新实体(弧),从而获得一个新的控制柄。
 
一旦添加或减去元素,块对象可能会认为自己“改变”,从而获得新的句柄。
 
不过,听起来您只对块引用感兴趣,因此在块级别发生的事情可能无关紧要。
 
我想底线是,如果我计划使用基于句柄的协调系统,我应该全面了解AutoCAD在后台处理句柄的功能。
 
设置一些可以在试用期使用的持久性事件监视器可能是有益的,以查看如何以及何时修改句柄。我怀疑这将是一个有点痛苦的工作,但可能是相当有益的。

SEANT 发表于 2022-7-6 13:01:00

好的,在设置了一个向下且脏的例程之后,我可以说一个被修剪成圆弧的圆不会立即引起句柄的更改。显然,控制柄是一个基于“对象”的属性,无论发生了什么变化,圆弧仍然是一个对象。

SEANT 发表于 2022-7-6 13:06:24

所以你的把手保持不变?

Grenco 发表于 2022-7-6 13:08:57

是的,至少在短期内是这样。

SEANT 发表于 2022-7-6 13:13:12

你觉得我的解决方案怎么样?
 
将Block his句柄添加到同一块中的一个单独属性,以便比较块。具有具有原始句柄值的属性的句柄。如果这些值不相等,我会更改数据库中的记录并在新句柄中更改它。我还将属性中的原始句柄值更改为新句柄。这样,我可以使数据库中的唯一句柄与图形中的句柄保持最新。

Grenco 发表于 2022-7-6 13:14:43

 
这一过程似乎足够合理,尽管我认为这将取决于如何以及为什么处理变化。
 
如果在一天的工作过程中复制了标记的元素,并且图形的句柄“更新”,则所有元素都不会具有匹配的句柄/属性。确定哪个元素是原始元素和维护协调的外部数据库可能会出现问题。
 
如果可以确定句柄更改仅在绘图打开时发生,则可能应该将协调外部数据库降到该时间。

SEANT 发表于 2022-7-6 13:17:14

我的计划是将对象添加到图形中(acaddocument\u objectadded(ByVal object As object))以用新对象的句柄值填充属性。这样,当我复制/粘贴(或其他命令)时,具有句柄的属性将按其自己的值而不是较旧的(粘贴时)值刷新。

Grenco 发表于 2022-7-6 13:22:09

页: 1 [2]
查看完整版本: 向每个b添加新属性