AutoCad - Redondeo

 
Vista:

Redondeo

Publicado por felisa (1 intervención) el 18/12/2006 11:15:54
Hola, me han pasado un archivo lisp de otro foro de autocad, el cual redondea textos que indican la longitud de una linea. Esta orden funciona redondeando uno a uno los texto, pero esto esto es algo tedioso y me gustaría saber si esta orden podria hacerlo capturando todos los texto a redondear. Sé, que seria reprogramar dicha orden, y yo no tengo ni idea de autolisp, así que si esto no fuese muy compliacado o trabajoso, os pediria si me podéis echar una mano, y si no puede ser pues nada, agradecido igualmente por vuestra atención.

Salud y Felicidad a todos. Gracias

El codigo de la rutina seria la siguiente:

(defun c:redondeo ( / uni red cen cen1 cen2 cen3 cen4 cen5 nume)
(setq nume (entget (ssname (ssget) 0)))
(setq largo_t ( cdr (assoc 1 nume))) (princ largo_t) (princ)
(setq uni (atoi (substr largo_t 4)))
(setq cen (substr largo_t 1 3))
(if ( or (= 1 uni)(= 2 uni))(progn (setq red "0")(setq largo_t (strcat cen red))))
(if ( or (= 3 uni)(= 4 uni))(progn (setq red "5")(setq largo_t (strcat cen red))))
(if ( or (= 6 uni)(= 7 uni))(progn (setq red "5")(setq largo_t (strcat cen red))))
(if (or (= 8 uni) (= 9 uni))
(progn
(setq cen1 (substr cen 1 3))
(setq cen2 (substr cen1 3))
(if (= "9" cen2)
(progn
(setq cen3 (substr cen1 1 2))
(setq cen4 (substr cen3 2))
(if (= "9" cen4)
(progn
(setq cen5 (substr cen3 1 1))
(setq cen5 (itoa (+ 1 (atoi cen5))))
(setq largo_t (strcat cen5 (strcat "0" "0" "0")))
);fin progn
(setq largo_t (strcat (itoa (+ 1 (atoi cen3))) "0" "0"))
);fin if

);fin progn
(setq largo_t (strcat (substr cen1 1 2) (itoa (+ 1 (atoi cen2))) "0"))
);fin if

);fin progn
;(setq largo_t (itoa (+ 1 (atoi largo_t))))
);fin if
;(setq numli (entget nume))
(setq nume (subst (cons 1 largo_t )(assoc 1 nume) nume))
(entmod nume)
(terpri)
(princ largo_t)
(princ)
)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder