关于CAD命令"LENGTHEN"
<p>最近打算编一个程序,可以实现“统计一个区域内所有直线,圆,椭圆、弧线等的长度”的功能。CAD中有个命令是<font face="Verdana">"LENGTHEN",可以实现对直线,圆,椭圆、弧线长度的测量。但是,不知道怎样才能通过运用此命令提取出长度数据,以便实现在程序中的累加。</font></p><p><font face="Verdana">(setq a (command "LENGTHEN"))返回为nil,不能得到长度数据。</font></p>
<p><font face="Verdana"></font> </p>
;;;-----------------------------------------------------
;;;計算線加總長度
;;;BY LUCAS(龍龍仔)
;;;2002/8/14AM 9:00
;;;初版
;;;2002/8/21PM 9:20
;;;修正LWPOLYLINE & POLYLINE & SPLINE沒有CLOSED
;;;但首尾點相連,長度不能計算題
;;;2002/9/3 PM 8:20
;;;更改計算程式
;;;-----------------------------------------------------
(defun C:LENOF (/ CURVE TLEN SS N SUMLEN)
(vl-load-com)
(setq SUMLEN 0)
(setq
SS (ssget
'((0 . "REGION,CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE,ARC"))
)
)
(setq N 0)
(repeat (sslength SS)
(setq CURVE (vlax-ename->vla-object (ssname SS N)))
(if (/= (vla-get-objectname CURVE) "AcDbRegion")
(setq TLEN (vlax-curve-getdistatparam
CURVE
(vlax-curve-getendparam CURVE)
)
)
(setq TLEN (vla-get-perimeter CURVE))
)
(setq SUMLEN (+ SUMLEN TLEN))
(setq N (1+ N))
)
(print (strcat "總長度: " (rtos SUMLEN 2 5)))
(princ)
)
<font style="BACKGROUND-COLOR: #ffffff" face="Verdana">;下面计算线、聚合线LISP: <br/> <br/> <br/>(defun c:long_1 () <br/>(setq ss (ssget '((0 . "*line")))) <br/>(setq nn (sslength ss)) <br/>(setq i 0 tnum 0) <br/>(repeat nn <br/>(setq ssn (ssname ss i)) <br/><font color="#ff0000">(command "lengthen" ssn "") <br/>(setq num (getvar "perimeter")) <br/></font>(setq tnum (+ tnum num)) <br/>(setq i (1+ i)) <br/>) <br/>(alert (strcat "框选的线段加总长为: "(rtos tnum 2))) <br/>) </font> <p>谢谢,非常感谢!</p>
<p> </p> 学习中,两位都是牛人。我还正愁怎么取得lengthen的值呢, 支持源码
页:
[1]