如何用lisp程序提取选择的属性块中的length属性,并加合,最后给出结果
1个回答
展开全部
一般有两个方案
第一个方案:用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)
)
第一个方案:用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)
)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询