ttray33y 发表于 2022-7-5 16:17:31

块中的属性对象ID

块中的属性对象ID。
 
大家好,又是我,我正在尝试创建一个将属性链接到文本字段的标记系统,我有一个来自@Tharwat的例程,它在单击带有属性的目标块后创建一个文本+字段(它确实适用于默认ent。属性如块单位、颜色、层、名称等),但我的问题是属性定义。它有一个不同的ObjectId,由于Tharwat创建使用的例程(car(entsel),它将只返回块ObjectId,而不返回内部的属性ObjID。
属性ObjId 8796087888544
其他目标8796087888528
 
你知道这可行吗?
 
Tharwats例程
(vl-load-com)
(defun c:TAG (/ space ss pt)

(setq space (vla-get-modelspace
(vla-get-ActiveDocument (vlax-get-acad-object))
)
)
(if (and (setq ss (car (entsel "\n Select a BLOCK : ")))
(setq pt (getpoint "\n Specify TAG Location :"))
)
(vla-addMText
space
(vlax-3d-point pt)
4.
(strcat "%<\\AcObjProp Object(%<\\_ObjId "
(itoa (vla-get-ObjectID (vlax-ename->vla-object ss)))
">%).TextString \\f \"%tc1\">%"
)
)
(princ)
)
(princ)
)

Tharwat 发表于 2022-7-5 16:29:39

你好
 
将函数entsel替换为entsel,并在要求选择块时拾取属性本身。

ttray33y 发表于 2022-7-5 16:36:29

它现在使用大BUT,因此属性需要可见,对吗?
 
谢谢Tharwat

Tharwat 发表于 2022-7-5 16:44:55

 
不客气。
 
当然,它应该是可见的,因为用户输入功能要求您选择屏幕上可用/可见的对象。

BIGAL 发表于 2022-7-5 16:58:47

如果属性不可见,可以通过其创建顺序获取属性,但这取决于您知道创建时的数字。
 
或使用“.”对于属性值,它几乎不可见,然后使用Tharwat的方法。

ttray33y 发表于 2022-7-5 17:03:16

 
任何关于“如果属性不可见,则可以通过其创建顺序获取属性,但这取决于您知道创建时的数字”的快速片段

BIGAL 发表于 2022-7-5 17:12:09

如果你看这个,当它循环时,你会得到每个属性,这样你就可以改变一个属性,知道你需要经过foreach多少次,使用另一个If来改变属性值和可见性状态。
 

(setq y (getint "attribute counter"))
(setq x 1)
(foreach att (vlax-invoke (vlax-ename->vla-object (ssname SS1 0 )) 'getattributes)
(if (= x y)(vla-put-textstring att newstr1))
(setq x (+ x 1))
)

ttray33y 发表于 2022-7-5 17:22:34

好的,将其视为求解。我找到了一个解决办法。
 
我没有使用属性,而是为设备和阀门创建了一个自定义属性。
 
再次感谢你。
页: [1]
查看完整版本: 块中的属性对象ID