Cómo calcular rápidamente la longitud total de múltiples polilíneas en CAD
Usa el cálculo del complemento.
Muchos complementos tienen funciones de cálculo de longitud, como Tianzheng Transcendence Toolset, etc.
El código de autolisp es el siguiente: (defun?c:TE?(?/?amp;k1?amp;kw1?amp;ss1?cd1?i?x) (setvar?"cmdecho"? 0) ( setvar?"blipmode"?0) (if?(null?vlax-dump-object)?(vl-load-com)?) (princ?"\nPor favor seleccione una curva") (if?(setq? amp;kw1 ?(ssget?'((0?.?"*LINE,ARC,CIRCLE,HELIX,ELLIPSE"))))
(progn (setq?i?-1.0?amp;ss1 ?'( )) (mientras?(setq?amp;k1?(ssname?amp;kw1?(setq?i?(1 ?i)))))
;(vla-put-color ?(vlax-ename-gt;vla-object?amp;k1)?252)
(setq?amp;ss1?(cons?amp;k1?amp;ss1)) ) (setq?amp ;ss1?( mapcar?'(lambda?(X)?(*?0.001?(vlax-curve-getDistAtParam?x?(vlax-curve-getEndParam?x))))?amp;ss1)) (setq?cd1 ?(aplicar? ' ?amp;ss1)) (setq?amp;ss1?(aplicar?'strcat?(cdr?(aplicar?'append?(mapcar?'(lambda?(x)?(lista?" "? (rtos?x )))?amp;ss1))))) (setq?amp;ss1?(strcat?"("?amp;ss1?")")) (s1611151?amp;kw1?
( list?(strcat?"\n"?(rtos?i?2?0)??"La fórmula de cálculo de la curva es: "?amp;ss1)?(strcat?"\n"?(rtos ?i?2?0 )?"La longitud total de la curva: "?(rtos?cd1)??"metro")) )
) ) (princ)
)
( defun?s1611151?(amp;kw1?str?/?amp;k1?amp;kw1?a1?a2?ss1) (setq?ss1?'()?a1?0.0?i? 0.0) (mientras?(setq? amp;k1?(ssname?amp;kw1?0))
(setq?amp;kw1?(ssdel?amp;k1?amp;kw1)) p>
(if? (y?(vlax-curve-isClosed?amp;k1); si el objeto es un objeto cerrado (setq?amp;k1?(vlax-ename-gt;vla-object?amp; k1)); convertido a objeto vlax(null ?(vl-catch-all-error-p?(setq?a2?(vl-catch-all-apply?'vla-get-area?(list?amp;k1) ))));Calcular área p>
(progn (setq?a2?(*?0.000001?a2)?i?(1 ?i)) (setq?a1?( ?a1?a2)); área total (setq?a2?(rtos ?a2)) (si?(car?ss1)
(setq?ss1?(append?ss1?(list?" "?a2)) fórmula de cálculo (setq?ss1?(cons?a2?ss1))
) )
) ); while (if?(gt;?a1?0.0)
(progn (princ?(car?str)) (princ?(strcat?"\n"?(rtos?i ?2?0)?"La fórmula de cálculo para el área de un objeto cerrado es: ("?(apply?'strcat?ss1)?")")) muestra la fórmula de cálculo (princ?(cadr?str) )) (princ?(strcat ?";"?(rtos?i?2?0)??"Área total de objetos cerrados: "(rtos?a1)??metros cuadrados"))
)
(princ?(apply?'strcat?str)) )
)