[求助]如何统计线的长度之和?
<p>选中若干直线和多义线,自动计算出所有线的长度之和,并给出结果</p><p>不知道有没有这样的程序?</p><p>以前我自己统计直线的长度和的时候,就用了很笨的方法,就是每根线用两点坐标之差的平方和来计算出长度</p><p>也不知道有没有别的方法</p><p>而且我对多义线的长度就完全不知道怎么求</p><p></p><p>所以想请高手做个这样的程序,同时可以对直线和多义线的长度统计求和?</p><p>谢谢大家先</p><p>预祝圣诞快乐!</p> (DEFUN c:tt (/ ss loop num len)(SETVAR "CMDECHO" 0)
(PROMPT "\n选择需要计算长度的直线或多段线:")
(SETQ ss(SSGET '((0 . "*LINE,ARC,CIRCLE,ELLIPSE")))
loop (IF (NULL ss)
0
(SSLENGTH ss)
)
num-1
len0
)
(REPEAT loop
(COMMAND "._LENGTHEN" (SSNAME ss (SETQ num (1+ num))) "")
(SETQ len (+ len (GETVAR "PERIMETER")))
)
(PRINC (STRCAT "\n" (ITOA loop) "个对象总长 = " (RTOS len 2 5)))
(PRINC)
)就简单点写个吧
<p>(defun c:len( / i len n ss)<br/> (setq ss (ssget) i -1 len 0)<br/> (repeat (sslength ss)<br/> (setq n (vlax-ename->vla-object (ssname ss (setq i (1+ i)))))<br/> (setq len (+ len (vlax-curve-getDistAtParam n (vlax-curve-getEndParam n))))<br/> )<br/> len<br/>)</p><p>任意线的</p> <p>太谢谢两位大侠了!</p><p>非常有用的程序啊</p> <p>很早以前写了一个这方面的程序,看看能用不:)</p><p>c:\11.gif</p> <p>再次谢谢各位了!</p><p>我想再提一个请求!希望各位把程序深化一下</p><p>就是当线和线有重叠的时候,重叠部分的长度不重复计算,只算一次长度</p><p>不知道是否可以做到这个功能?</p><p>谢谢大家!</p> 可以用ET中的<strong>FLATTEN</strong>命令消去重线后再计算。 ZZXXQQ发表于2008-12-28 13:34:00static/image/common/back.gif可以用ET中的FLATTEN命令消去重线后再计算。
<p></p><p>我是希望能够仍然保持原来的线不变</p><p>比如2个矩形,一个400X2000,一个400X6000</p><p>Y方向坐标都一样,水平段有重叠1000</p><p>我希望得到400X4+(2000+6000-1000)X2=15600这样的结果</p><p>希望最后还是原来的2个矩形,不想这2个矩形变成别的东西</p> <p>希望高手有时间的话,考虑一下我的想法</p><p>谢谢</p> 回复 ZZXXQQ 的帖子
也可以用ET中的OVERKILL
页:
[1]
2