Hola, me gustaría sugerir un nuevo comando que acotara las dimensiones lineales de la lineas que componen una polilinea, en formato texto de una linea y que en el caso de que sean curvas acote también su radio en una linea de texto paralela a la perpendicular del centro del arco debajo de la dimensión de la linea entre los vértices o cuerda; ya tengo un programa que me acota en formato texto de una linea las distancias entre los vértices pero en el caso de que sea un arco no me acota el radio ya que no lo tiene en cuenta el programa es este.
(defun chgterr (s)
(princ "Error: ")(terpri)
(prin1)
)
(setq estilo (getvar "textstyle"))
(setq lent (tblsearch "style" estilo))
(if (= (cdr(assoc 40 lent)) 0)(progn(if (not h_txo)
(setq h_txo "2" h_txot h_txo h_txo(getstring (strcat"\nAltura de Texto<"h_txo">: ")))
(if (= h_txo "")(setq h_txo h_txot)))))
(if (not d_txo)(progn
(setq d_txo 0.5 d_txot d_txo d_txo (getreal (strcat "\nSeparacion del texto de la poligonal <"(rtos d_txo 2 2)"> : ")))
(if (= d_txo nil)(setq d_txo d_txot))
))
(setq p0 '(0 0))
(defun c:bp94()
(setq salida "n")
(while (/= salida "S")
(setvar "osmode" 0)(setvar "orthomode" 0)(setvar "blipmode" 0)(setvar "cmdecho" 0)
(setq olderr *error* *error* chgterr)
(if ,,()(232323))
(setq p1 (getpoint p0 "\n Insercion del lote : "))
(command "_bpoly" p1 "_A" "_X" "" )
(pl_cor)
(entdel (entlast) )
(setq lgg (strlen c_x))
(setq n_n 1 ktr t)
(c:q990)(setq pv1 (list (atof x) (atof y)))
(setq pv1 (trans pv1 0 1))
(setq pv3 pv1)
(while (< n_n lgg)
(c:q990)(setq pv2 (list (atof x) (atof y) ))
(setq pv2(trans pv2 0 1))
(setq p3 (polar pv1 (angle pv1 pv2) (/ (distance pv1 pv2) 2)))
(setq estilo (getvar "textstyle"))
(setq lent (tblsearch "style" estilo))
(if (= (cdr(assoc 40 lent)) 0)
(command "_text" "_mc" p3 h_txo (angtos(angle pv1 pv2)) (rtos (distance pv1 pv2) 2 2) )
(command "_text" "_mc" p3 (angtos(angle pv1 pv2)) (rtos (distance pv1 pv2) 2 2) )
)
(ps_fn)
; (command "_line" p0 p3 "")(getstring)(entdel (entlast))
(setq pv1 pv2)
);while
(prin1)
(setq salida(strcase (substr (getstring "Salir?Si/No\n") 1 1)))
)
);defun bp94
(defun c:q990()
(q980)(setq nt1 (+ nt1 1))
(setq x (substr c_x nt1 (- nt2 nt1)))
(q980)(setq nt1 (+ nt1 1))
(setq y (substr c_x nt1 (- nt2 nt1)))
)
(defun q980()
(setq ktr t)(while ktr (setq txt(substr c_x n_n 1))
(if (/= txt " ")(setq nt1 (1- n_n) ktr nil)(setq n_n (+ n_n 1)))
(if (< lgg n_n)(setq nt1 n_n ktr nil)))
(setq ktr t)(while ktr(setq txt (substr c_x n_n 1))
(if (= txt " ")(setq nt2 n_n ktr nil)(setq n_n (+ n_n 1)))
(if (< lgg n_n)(setq nt2 n_n ktr nil))))
(defun pl_cor()
(setq lent (entget (entlast)))
(setq m 0 ctr 0)
(while (/= ctr 10)
(setq vvv (nth m lent))
(setq ctr (car vvv))
(setq m (+ 1 m))
)
(setq pv1 (cdr vvv))
(setq pv1 (trans pv1 0 1))
(setq pv3 pv1)
(repeat 4
(setq vvv (nth m lent))
(setq m (+ 1 m))
)
(setq txxt (strcat (rtos (car pv1) 2 8)" "(rtos (cadr pv1) 2 8)" "))
(setq pv2 (cdr vvv))
(setq pv2 (trans pv2 0 1))
(setq ang (angle pv1 pv2))
(setq pv1 pv2)
(repeat 4
(setq vvv (nth m lent))
(setq m (+ 1 m))
)
(setq v "T")
(while v
(setq pv2 (cdr vvv))
(setq pv2 (trans pv2 0 1))
(setq ang2 (angle pv1 pv2))
(if (= (rtos ang 2 8) (rtos ang2 2 8))(progn
(setq pv1 pv2)
)(progn
(setq txxt (strcat txxt (rtos (car pv1) 2 8)" "(rtos (cadr pv1) 2 8)" "))
(setq ang ang2)
(setq pv1 pv2)
))
(repeat 4
(setq vvv (nth m lent))
(setq m (+ 1 m))
)
(if (= (car vvv) 210)(setq v nil))
);while
(setq txxt (strcat txxt (rtos (car pv2) 2 8)" "(rtos (cadr pv2) 2 8)" "))
(setq txxt (strcat txxt (rtos (car pv3) 2 8)" "(rtos (cadr pv3) 2 8)" "))
(setq c_x txxt)
);defun
(defun ps_fn()
;(initget "1 2 3 4")
;(setq posf(getint "\n Posicion final 1,2,3,4 :"))
(if
(or
(< (angle pv1 pv2) (* pi 0.55))
(< (*(/ pi 2)3) (angle pv1 pv2))
)
(setq posf 1)(setq posf 3)
)
;(getstring (rtos posf))
(if (= posf 1)(progn
(setq lent (entget (entlast)))(entmod (subst (cons 73 0) (assoc 73 lent) lent ))
(command "_move" (entlast) "" p3 (polar p3 (+ (angle pv1 pv2) (/ pi 2)) d_txo ))
))
(if (= posf 2)(progn
(setq lent (entget (entlast)))(entmod (subst (cons 73 3) (assoc 73 lent) lent ))
(command "_move" (entlast) "" p3 (polar p3 (- (angle pv1 pv2) (/ pi 2)) d_txo ))
))
(if (= posf 3)(progn
(command "_rotate" (entlast) "" p3 "180")
(setq lent (entget (entlast)))(entmod (subst (cons 73 3) (assoc 73 lent) lent ))
(command "_move" (entlast) "" p3 (polar p3 (+ (angle pv1 pv2) (/ pi 2)) d_txo ))
))
(if (= posf 4)(progn
(command "_rotate" (entlast) "" p3 "180")
(setq lent (entget (entlast)))(entmod (subst (cons 73 0) (assoc 73 lent) lent ))
(command "_move" (entlast) "" p3 (polar p3 (- (angle pv1 pv2) (/ pi 2)) d_txo ))
))
)
(c:bp94)