CAD上怎么算一个图层的所有线段的长度之和 (转)

如题所述

(defun C:TEST (/ CURVE TLEN SS N SUMLEN)
(vl-load-com)
(setq SUMLEN 0)
(setq SS (ssget '((0 .
"CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE,ARC"))))(setq N 0)
(repeat (sslength SS)
(setq CURVE (vlax-ename-vla-object (ssname SSN)))
(setq TLEN (vlax-curve-getdistatparam CURVE (vlax-curve-getendparamCURVE)))
(setq SUMLEN (+ SUMLEN TLEN))
(setq N (1+ N)))
(princ (strcat "\n共选择 " (itoa (sslength SS)) " 条线段. 线段总长: " (rtos
SUMLEN 2 3) "豪米."))(princ))
将以上代码复制在记事本内后“另存为”→“统计线段长度.lsp”
打开CAD,运行“appload”命令加载刚保存的“统计线段长度.lsp”文件
按命令提示“程序:统计线段长度 命令:test”
选择要统计长度的线段即可。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-22
这个简单。 先单开某个图层,冻结其它层,先执行REG命令,再执行UNI命令,选择时都输入ALL, 最后LIST就可以统计出来了。 简单,方便,快捷!]
第2个回答  2013-10-22
关掉其他图层,仅剩该层,将需统计的线段转换成多段线PL,直接LIST统计。或者直接每天LIST,最后累计。]
第3个回答  2013-10-22
(转载)给一个简单的源代码,你自己测试后可以修改编辑让它更符合你的要求:(princ "\n程序:统计线段长度 命令:test")(defun C:TEST (/ CURVE TLEN SS N SUMLEN) (vl-load-com) (setq SUMLEN 0) (setq SS (ssget '((0 . "CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE,ARC")))) (setq N 0) (repeat (sslength SS) (setq CURVE (vlax-ename->vla-object (ssname SS N))) (setq TLEN (vlax-curve-getdistatparam CURVE (vlax-curve-getendparam CURVE))) (setq SUMLEN (+ SUMLEN TLEN)) (setq N (1+ N)) ) (princ (strcat "\n共选择 " (itoa (sslength SS)) " 条线段. 线段总长: " (rtos SUMLEN 2 3) "米."))(princ) ) 将以上代码复制在记事本内后“另存为”→“统计线段长度.lsp”打开CAD,运行“appload”命令加载刚保存的“统计线段长度.lsp”文件按命令提示“程序:统计线段长度 命令:test”输入命令test选择要统计长度的线段即可。附:我的命令行操作提示命令:命令: appload已成功加载 统计线段长度.lsp。命令:程序:统计线段长度 命令:test命令:命令: test选择对象: 指定对角点: 找到 4 个选择对象:共选择 4 条线段. 线段总长: 1667.294米.命令:]
第4个回答  2013-10-22
嘿,这个安我们的刀模插件就可以,]
相似回答