CAD如何批量统计各条线段的长度 5
1、不是总长度,是各条线段的长度,要输出到excel或文本文档,不需要顺序和编号;2、阳光算量快手用不了,因为电脑和CAD都是64位的。...
1、不是总长度,是各条线段的长度,要输出到excel或文本文档,不需要顺序和编号;
2、阳光算量快手用不了,因为电脑和CAD都是64位的。 展开
2、阳光算量快手用不了,因为电脑和CAD都是64位的。 展开
7个回答
推荐于2017-11-22 · 知道合伙人软件行家
关注
展开全部
autolisp可以做到,复制以下代码到记事本,以【.lsp】为后缀命名,打开cad,【appload】加载,加载后,命令【TES】,选择曲线,得到的长度到D盘Point表格。
(defun c:tes ( / &a0 &dis1 &k1 &kw1 &ss1 &ss2)
(if (null vlax-dump-object) (vl-load-com) )
(princ "\n请选择曲线")
(setq &ss1 '("LINE" "LWPOLYLINE" "CIRCLE" "ARC" "HELIX" "ELLIPSE" "SPLINE" "POLYLINE"))
(if (setq &kw1 (ssget '((0 . "LINE,LWPOLYLINE,CIRCLE,ARC,HELIX,ELLIPSE,SPLINE,POLYLINE"))))
(progn
(setq &ss2 '())
(while (setq &k1 (ssname &kw1 0))
(setq &kw1 (ssdel &k1 &kw1) &a0 (cdr (assoc 0 (entget &k1))))
(setq &dis1 (vlax-curve-getDistAtParam &k1 (vlax-curve-getEndParam &k1)))
(setq &ss2 (cons (cons &a0 &dis1) &ss2))
);while
(s1606021 &ss1 &ss2)
)
)
(princ)
)
(defun s1606021 (&ss1 &ss2 / &a0 &dis1 &ss1 &ss2 &ss3 ff x y);写入长度到表格
(setq ff (open "D://Point.csv" "w"));D盘表格Point
(while (setq &a0 (car &ss1))
(setq &ss1 (cdr &ss1))
(if (setq &ss3 (mapcar 'cdr (vl-remove-if-not '(lambda (X) (= &a0 (car x))) &ss2)))
(progn
(setq &ss3 (vl-sort &ss3 '(lambda (x y) (< x y))));长度从小到大
(while (setq &dis1 (car &ss3))
(setq &ss3 (cdr &ss3))
(write-line (strcat &a0 "," (rtos &dis1)) ff)
);while
(write-line "" ff)
)
);if
);while
(close ff)
)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询