当前位置 - 股票行情交易網 - 股票交易 - 如何快速計算cad中多條多段線的總長

如何快速計算cad中多條多段線的總長

用插件計算。

很多插件都有計算長度功能,比如天正超越工具集等。

autolisp代碼如下:

(defun?c:TE?(?/?&k1?&kw1?&ss1?cd1?i?x)

(setvar?"cmdecho"?0)

(setvar?"blipmode"?0)

(if?(null?vlax-dump-object)?(vl-load-com)?)

(princ?"\n請選擇曲線")

(if?(setq?&kw1?(ssget?'((0?.?"*LINE,ARC,CIRCLE,HELIX,ELLIPSE"))))

(progn

(setq?i?-1.0?&ss1?'())

(while?(setq?&k1?(ssname?&kw1?(setq?i?(1+?i))))

;(vla-put-color?(vlax-ename->vla-object?&k1)?252)

(setq?&ss1?(cons?&k1?&ss1))

)

(setq?&ss1?(mapcar?'(lambda?(X)?(*?0.001?(vlax-curve-getDistAtParam?x?(vlax-curve-getEndParam?x))))?&ss1))

(setq?cd1?(apply?'+?&ss1))

(setq?&ss1?(apply?'strcat?(cdr?(apply?'append?(mapcar?'(lambda?(x)?(list?"+"?(rtos?x)))?&ss1)))))

(setq?&ss1?(strcat?"("?&ss1?")"))

(s1611151?&kw1?

(list?(strcat?"\n"?(rtos?i?2?0)?"條曲線計算公式為:"?&ss1)?(strcat?"\n"?(rtos?i?2?0)?"條曲線總長度:"?(rtos?cd1)?"米"))

)

)

)

(princ)

)

(defun?s1611151?(&kw1?str?/?&k1?&kw1?a1?a2?ss1)

(setq?ss1?'()?a1?0.0?i?0.0)

(while?(setq?&k1?(ssname?&kw1?0))

(setq?&kw1?(ssdel?&k1?&kw1))

(if?(and?(vlax-curve-isClosed?&k1);如果對象是閉合對象

(setq?&k1?(vlax-ename->vla-object?&k1));轉換為vlax對象

(null?(vl-catch-all-error-p?(setq?a2?(vl-catch-all-apply?'vla-get-area?(list?&k1)))))

);計算面積

(progn

(setq?a2?(*?0.000001?a2)?i?(1+?i))

(setq?a1?(+?a1?a2));總面積

(setq?a2?(rtos?a2))

(if?(car?ss1)

(setq?ss1?(append?ss1?(list?"+"?a2)));計算公式

(setq?ss1?(cons?a2?ss1))

)

)

)

);while

(if?(>?a1?0.0)

(progn

(princ?(car?str))

(princ?(strcat?"\n"?(rtos?i?2?0)?"個封閉對象面積計算公式為:("?(apply?'strcat?ss1)?")"));顯示計算公式

(princ?(cadr?str))

(princ?(strcat?";"?(rtos?i?2?0)?"個封閉對象總面積:"(rtos?a1)?"?平方米"))

)

(princ?(apply?'strcat?str))

)

)