我正在尝试修改下面的代码
我正在尝试修改下面的代码以获取3D模型Plant3D中的总管道长度,代码查找设置为新状态的所有管道,但我收到一条错误消息:“没有功能定义:状态“,
有人可以帮帮我吗?谢谢!
(defun c:TL ( / selnew selAll status Length)
(vl-load-com)
(setq selnew(ssadd))
(setq Length 0)
(if (setq selAll (ssget "x" '((0 . "ACPP*"))))
(progn
(setq i 0
n (sslength selAll)
)
(while (< i n)
(setq ent (ssname selAll i))
;convert to vl object
(setq vlaObj (vlax-ename->vla-object ent))
(if (vlax-property-available-p vlaObj 'CutLength)
(progn
(setq status (vlax-get-property vlaObj 'CutLength))
(ssadd ent selnew)
)
)
(setq Length (status + Length))
(setq i (1+ i))
);while
)
)
(sssetfirst nil selnew)
alert (Length)
(princ)
)
您的警报缺少 ( infront.also (length) 使其查找该名称的函数并导致错误“没有函数定义:”如果您尝试这样做(警报长度),它仍然会出错,因为该变量是一个数字,您需要使用 rtos 将其转换为字符串。(defun c:TL ( / selnew selAll len)
(vl-load-com)
(setq selnew (ssadd))
(setq len 0)
(if (setq selAll (ssget "_X" '((0 . "ACPP*"))))
(foreach ent (mapcar 'cadr (ssnamex selAll))
(setq vlaObj (vlax-ename->vla-object ent))
(if (vlax-property-available-p vlaObj 'CutLength)
(progn
(setq len (+ (vlax-get-property vlaObj 'CutLength) len))
(ssadd ent selnew)
)
)
)
)
(sssetfirst nil selnew)
(if (> len 0)
(alert (strcat "Total Length: " (rtos len 2 3)))
)
(princ)
)
页:
[1]