如何获取多属性
大家好,我有一个属性块,它有两个标签
标签1=X
标签2=Y
我使用以下代码获取属性值,但此代码仅给出1个属性值:-
(setq obj (vlax-ename->vla-object theEntity))
(foreach a (vlax-invoke obj 'getattributes)
(setq tag_val (vlax-get a 'TagString))
(setq att_val (vlax-get a 'TextString))
有谁能帮我编辑这段代码以获得单个属性块的多个值吗
有关更多信息,请参阅图形文件中的图形文件
X=10,y=3
我想得到那个属性值&最后加上它
i、 e.10+3=13
提前感谢
测验图纸 (setq sum 0 obj (vlax-ename->vla-object theEntity))
(foreach a (vlax-invoke obj 'getattributes)
(setq sum (+ (atoi (vlax-get a 'TextString)) sum))
)
或
(apply '+ (mapcar '(lambda (a)
(atoi (vlax-get a 'TextString)))
(vlax-invoke obj 'getattributes))) 非常感谢你的帮助
关于其他信息,我想知道如果我想用Y值除以10
i、 e.10+(3/10)=10.3
对于这一点,代码将如何更改?????
(Defun c:demo ()
(setq theEntity (Car (entsel)))
(setq obj (vlax-ename->vla-object theEntity))
(setq data (mapcar '(lambda (a) (list (vlax-get a 'TagString) (atoi (vlax-get a 'TextString))))
(vlax-invoke obj 'getattributes)
)
)
(+ (cadr (assoc "X" data)) (/ (cadr (assoc "Y" data)) 10.0))
) 杰出的
这就是我想要的
非常感谢你。。。。pBE:) 再次提出一个问题,
我已将上述lisp修改为:-
(Defun c:demo ()
(if (and
(setq dta (ssget'((0 . "INSERT") (66 . 1))))
)
(repeat (setq i (sslength dta))
(setq theEntity (ssname dta (setq i (1- i))))
(setq obj (vlax-ename->vla-object theEntity))
(setq data (mapcar '(lambda (a) (list (vlax-get a 'TagString) (atoi (vlax-get a 'TextString))))
(vlax-invoke obj 'getattributes)
)
)
(setq att (+ (cadr (assoc "X" data)) (/ (cadr (assoc "Y" data)) 10.0)))
(princ att)
)))
但当我选择一个属性时,它会提供两次属性值
e、 g.如果我选择10.3(属性块),则返回10.310.3
plz参考上图
谢谢 (普林斯)
): 现在人们开始知道,即使是很小的代码也会让你恼火,我没有意识到。。。
我的编码知识与日俱增
多亏了你们,你们真的让事情变得简单了
你会到达那里的satishrajdev,练习。。。实践实践
页:
[1]