如何用lisp程序提取选择的属性块中的length属性,并加合,最后给出结果

上次你给我的答案不能加合,而且只能选择一个块,我不是想学习lisp,我只是想要一个结果
我需要的是我在图中选出我需要的块,然后把它们的length属性合计,给出结果

第1个回答  2014-09-11
一般有两个方案
第一个方案:用AutoLisp方案,首先用 取得图块这个图元,然后用 entnext 逐一找到属性块来找到其中length的属性,然后将它的值给找出来,然后进行运算,注意 entnext 的运用。这个很简单,你自己应该写吧。
第二个方案:用VisualLisp方案,注意vla-getattributes,vlax-variant-value,vlax-safeArray->list这几个函数的运用,以下为 VisualLisp的例子
(Defun C:Test ()
(setq en0 (car (entsel)))
;;此处请选有属性定义的图块
(setq vn0 (vlax-ename->vla-object en0))
(setq lstVar (vla-getattributes vn0))
(setq lstAttrs (vlax-safeArray->list (vlax-variant-value lstVar)))
(setq TextString nil)
(foreach attr lstAttrs
(setq TagString (vla-get-TagString attr))
(if (equal TagString "length") ;此处为你想要的元素
(setq TextString (vla-get-TextString attr))
)
)
(if TextString
(princ (strcat "The content of length = " TextString))
(princ "没有找到length ")
)
(prin1)
)
以上回答你满意么?追问

这个不行,只能选择一个块,我要的是合计。你给出第一个方案也行,我不太懂lisp,我只是要一个结果,能用就行

相似回答