如何使用 lisp 将 Block/autocad 内的对象区域放入变量中
How get Area of Objects inside a Block/autocad into a variable using lisp
这是代码;
(setq Tobjs (vla-Explode Tvlaobj))
(setq ObjectsAsList (vlax-safearray->list (vlax-variant-value Tobjs ) ) )
(foreach % ObjectsAsList
(setq TSublayerNew (vla-get-layer %))
(cond ((eq TSublayerNew TLaynemeShort)
(command "_.AREA" "_O" %)
(setq Teee (getvar 'area))
(setq Ttvm (+ Ttvm Teee))
(princ (strcat (rtos Teee 2 0) " | "))
(setq Tcntr (+ Tcntr 1))
)
)
)
(setq TNumF Ttvm)
(princ (strcat (rtos TNumF 2 2)))
我想将块中所有区域和实体的总面积 (Tobjs) 获取到变量 TNumF 中,如果它符合条件,
它给出错误:参数值错误:AutoCAD 命令:#
请帮忙
提前致谢
这是因为 % 是作为 vla-object 的实体,但是命令需要实体,所以试试这个代码:
(command "_.AREA" "_O" (vlax-vla-object->ename % ))
这是代码;
(setq Tobjs (vla-Explode Tvlaobj))
(setq ObjectsAsList (vlax-safearray->list (vlax-variant-value Tobjs ) ) )
(foreach % ObjectsAsList
(setq TSublayerNew (vla-get-layer %))
(cond ((eq TSublayerNew TLaynemeShort)
(command "_.AREA" "_O" %)
(setq Teee (getvar 'area))
(setq Ttvm (+ Ttvm Teee))
(princ (strcat (rtos Teee 2 0) " | "))
(setq Tcntr (+ Tcntr 1))
)
)
)
(setq TNumF Ttvm)
(princ (strcat (rtos TNumF 2 2)))
我想将块中所有区域和实体的总面积 (Tobjs) 获取到变量 TNumF 中,如果它符合条件,
它给出错误:参数值错误:AutoCAD 命令:#
请帮忙
提前致谢
这是因为 % 是作为 vla-object 的实体,但是命令需要实体,所以试试这个代码:
(command "_.AREA" "_O" (vlax-vla-object->ename % ))