明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4697|回复: 6

关于CAD命令"LENGTHEN"

[复制链接]
发表于 2010-10-1 12:22:00 | 显示全部楼层 |阅读模式

最近打算编一个程序,可以实现“统计一个区域内所有直线,圆,椭圆、弧线等的长度”的功能。CAD中有个命令是"LENGTHEN",可以实现对直线,圆,椭圆、弧线长度的测量。但是,不知道怎样才能通过运用此命令提取出长度数据,以便实现在程序中的累加。

(setq a (command "LENGTHEN"))返回为nil,不能得到长度数据。

 

发表于 2010-10-1 12:44:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2010-10-2 08:34:00 | 显示全部楼层
  1. ;;;-----------------------------------------------------
  2. ;;;計算線加總長度
  3. ;;;BY LUCAS(龍龍仔)
  4. ;;;2002/8/14  AM 9:00
  5. ;;;初版
  6. ;;;2002/8/21  PM 9:20
  7. ;;;修正LWPOLYLINE & POLYLINE & SPLINE沒有CLOSED
  8. ;;;但首尾點相連,長度不能計算題
  9. ;;;2002/9/3   PM 8:20
  10. ;;;更改計算程式
  11. ;;;-----------------------------------------------------
  12. (defun C:LENOF (/ CURVE TLEN SS N SUMLEN)
  13.   (vl-load-com)
  14.   (setq SUMLEN 0)
  15.   (setq
  16.     SS (ssget
  17.   '((0 . "REGION,CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE,ARC"))
  18.        )
  19.   )
  20.   (setq N 0)
  21.   (repeat (sslength SS)
  22.     (setq CURVE (vlax-ename->vla-object (ssname SS N)))
  23.     (if (/= (vla-get-objectname CURVE) "AcDbRegion")
  24.       (setq TLEN (vlax-curve-getdistatparam
  25.      CURVE
  26.      (vlax-curve-getendparam CURVE)
  27.    )
  28.       )
  29.       (setq TLEN (vla-get-perimeter CURVE))
  30.     )
  31.     (setq SUMLEN (+ SUMLEN TLEN))
  32.     (setq N (1+ N))
  33.   )
  34.   (print (strcat "總長度: " (rtos SUMLEN 2 5)))
  35.   (princ)
  36. )
发表于 2010-10-2 22:52:00 | 显示全部楼层
;下面计算线、聚合线LISP:                                
                                                        
                                                        
(defun c:long_1 ()                                      
(setq ss (ssget '((0 . "*line"))))                      
(setq nn (sslength ss))                                 
(setq i 0 tnum 0)                                       
(repeat nn                                              
(setq ssn (ssname ss i))                                
(command "lengthen" ssn "")                             
(setq num (getvar "perimeter"))                         
(setq tnum (+ tnum num))                                
(setq i (1+ i))                                         
)                                                       
(alert (strcat "框选的线段加总长为: "(rtos tnum 2)))    
)                                                       
 楼主| 发表于 2010-10-3 20:37:00 | 显示全部楼层

谢谢,非常感谢!

 

发表于 2011-12-8 13:17:46 | 显示全部楼层
学习中,两位都是牛人。我还正愁怎么取得lengthen的值呢,
发表于 2013-8-13 20:55:03 | 显示全部楼层
支持源码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-26 11:09 , Processed in 0.179085 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表