Red de conocimiento de abogados - Derecho de sociedades - Cómo calcular rápidamente la longitud total de múltiples polilíneas en CAD

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?

( ¿La fórmula de cálculo para list?(strcat?"\n"?(rtos?i?2?0)?" es: "?amp;ss1)?(strcat?"\n"?(rtos?i ?2?0 )?"La longitud total de la curva: "?(rtos?cd1)?"meter")) )

) ) (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))

(if? (y?(vlax-curve-isClosed?amp;k1); si el objeto es un objeto cerrado (setq?amp;k1?(vlax-ename-gt;vla-object?amp;k1) ); ));Calcular área

(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)) )

)