Supongamos que necesito escribir una frase cualquiera
siguiendo una curva dada, entonces dibujo un objeto
lineal que me sirva de eje, el cual lo pedirá la rutina,
y luego queda solo el texto curvado y borra el eje:
;|*********************************************
Rutina "fsigpl" frase que sigue
la curva de un objeto lineal........
*********************************************
by (c) Prexem Victor Adolfo Bracamonte 2008
*********************************************
-------- www.prexem.blogspot.com -------
*********************************************|;
(prompt
"\n****La rutina requiere
\nun objeto lineal para eje del texto\n*****"
)
(defun bloqtextinmeasure (/ capa_ant alt
frase cant_espacios
plineb osmant picant
vla_plineb pt long_plineb
separac ent_text cont
dat_text pt_inic ang_rotac
ang_rotac_text caract
eras
)
(vl-load-com)
(setq capa_ant (getvar 'clayer))
(command "_layer" "_m" "c-ap" "_c" "1" "c-ap" "")
(setq alt (getdist "\naltura de texto:")
frase
(getstring t
"\nFrase a escribir en curva:"
)
cant_espacios (strlen frase)
)
(setvar "clayer" "c-ap")
(setq plineb
(car
(entsel
"\nSeleccione polilinea u objeto lineal base:"
)
)
)
(setq osmant (getvar "osmode"))
(setvar 'osmode 0)
(setq picant (getvar "pickbox"))
(setvar 'pickbox 0)
(setq vla_plineb (vlax-ename->vla-object plineb)
pt (vlax-curve-getstartpoint vla_plineb)
long_plineb
(vlax-curve-getdistatparam
vla_plineb
(vlax-curve-getendparam vla_plineb)
)
separac (/ long_plineb cant_espacios)
)
(command "_text" pt alt "0" "b1")
(command "_block" "c-ap" pt (entlast) "")
(setq ent_text (entlast))
(command "_measure" plineb "b" "c-ap" "_Y" separac)
(setvar "clayer" capa_ant)
(setq cont 0)
(repeat cant_espacios
(setq ent_text (entnext ent_text)
dat_text (entget ent_text)
)
(setq pt_inic (cdr (assoc 10 dat_text))
ang_rotac (cdr (assoc 50 dat_text))
ang_rotac_text (angtos ang_rotac 2 2)
caract (substr frase (+ cont 1) 1)
)
(command "_.text" pt_inic alt ang_rotac_text caract)
(setq cont (+ cont 1))
);repeat
(setq eras
(ssget "_X"
(list
(cons 0 "INSERT")
(cons 8 "c-ap")
)
)
)
(command "_erase" eras "")
(command "_erase" plineb "")
(command "_laydel" "_n" "c-ap" "" "_Y")
(command "_purge" "_A" "*" "_N")
(setvar 'osmode osmant)
(setvar 'pickbox picant)
(princ)
);defun
(defun err1 (m)
(progn
(prompt "*Fin de la aplicacion*")
(setvar 'osmode osmant)
(setvar 'pickbox picant)
(princ)
)
)
(defun c:fsigpl (/ errant *error*)
(setq errant *error*
*error* err1
)
(bloqtextinmeasure)
(setq *error* errant)
(princ)
)
No hay comentarios:
Publicar un comentario