只需一步,快速开始
(vl-load-com)(princ "\n请选择物体:")(setq ss (ssget))(setq m 0 n (sslength ss))(while (> m n) (setq en (ssname ss m) ent en)(setq f (vlax-ename->vla-object ent))(vla-get-Length f) (setq m (+ m 1)))。。。。。。。
这是计算周长的,
如果有多个物体,怎么把每一次得到的结果加起来?DX帮忙啊
使用道具 举报
用循环把选择集的每个实体的周长计算一遍,用累加得到周长的总和。
以多段线为例,选取图中多段线,取得总周长
(defun c:zc (/ ss zl f) (vl-load-com) (princ "\n请选择物体:") (setq ss (ssget)) (setq zl 0);实体的总周长 (while (setq en (ssname ss 0)) (setq f (vla-get-Length(vlax-ename->vla-object en)));单个实体周长 (setq ss (ssdel en ss)) (setq zl(+ zl f)) ) (alert (strcat "所选实体的总周长为:" (rtos zl 2 3) "m!")) (print))
您需要 登录 才可以下载或查看,没有账号?注册
多谢,我的那个循环条件搞錯了。
(vl-load-com)(defun C:TT (/ SS ZL I L) (princ "\n请选择对象...") (if (setq SS (ssget '((0 . "*LINE")))) (progn ;;实体的总周长 (setq ZL 0 I 0 ) (repeat (sslength SS) ;;单个实体周长 (setq L (vla-get-length (vlax-ename->vla-object (ssname SS I)) ) ) (setq ZL (+ ZL L) I (1+ I) ) ) (alert (princ (strcat "所选实体的总长度为:" (rtos ZL 2 3)) ) ) ) ) (print))
xgr发表于2007-10-7 4:30:00以多段线为例,选取图中多段线,取得总周长(defun c:zc (/ ss zl f) (vl-load-com) (princ \"\n请选择物体:\") (setq ss (ssget)) (setq zl 0);实体的总周长 (w
如果图档中有圆和多段线,要一次性选择,怎么计算圆的周长?有没有办法选一次,得出二个选集?圆的选集单独计算,另一个就用现在这个代码就可以了,不知能不能搞定?
;;;自动全图选择多段线、直线、园的总长度统计!
(defun c:zc (/ ss en ddx_zl zx_zl yuan_zl f1 f2 f3) (vl-load-com) (princ "\n自动全图选择多段线、直线、园的总长度统计!:") (setq ss (ssget "x" '((-4 . "<OR") (-4 . "<AND") (0 . "LWPOLYLINE") (-4 . "AND>") (-4 . "<AND") (0 . "POLYLINE") (-4 . "AND>") (-4 . "<AND") (0 . "CIRCLE") (-4 . "AND>") (-4 . "<AND") (0 . "LINE") (-4 . "AND>") (-4 . "OR>") ) ) ) (setq ddx_zl 0) ;多段线的总长 (setq zx_zl 0) ;直线的总长 (setq yuan_zl 0) ;圆的总周长 (while (setq en (ssname ss 0)) (setq st_style (cdr (assoc 0 (entget en)))) (cond ((or (= st_style "LWPOLYLINE") (= st_style "POLYLINE") ) (setq f1 (vla-get-Length (vlax-ename->vla-object en))) (setq ddx_zl (+ ddx_zl f1)) ) ((= st_style "LINE") (setq f2 (vla-get-Length (vlax-ename->vla-object en))) (setq zx_zl (+ zx_zl f2)) ) ((= st_style "CIRCLE") (setq f3 (* (cdr (assoc 40 (entget en))) 2 pi)) (setq yuan_zl (+ yuan_zl f3)) ) ) (setq ss (ssdel en ss)) ) (alert (strcat "图中实体统计:" "\n多段线总长" (rtos ddx_zl 2 3) "\n直线总长:" (rtos zx_zl 2 3) "\n圆总周长:" (rtos yuan_zl 2 3) ) ) (princ))
结果放于表
apply '+ lst
起总和
本版积分规则 发表回复 回帖后跳转到最后一页
小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 ) ©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途
GMT+8, 2025-6-20 04:04 , Processed in 0.155464 second(s), 27 queries , Gzip On.
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.