Alinear MText
3 participantes
Página 1 de 1.
Alinear MText
Buen día señores.
En un principio me pareció que era muy sencillo, pero no...
El asunto es que tengo en una serie de "Mtext" que representan los cadenamientos (progresivas) de un camino. El programa que los genera los deja en justificación "Middle Left".
Por razones de la presnetanción yo requiero dejarals con "Bottom Center". Intenté con (vla-put-property txt 'acalinmentCenter), pero me manda el texto al (0,0).
Sé que sería muy fácil seleccionar todo y cambiarlo en la ventana de propiedades, pero en un archivo puedo tener mas de tres o cuatro ejes y se complica, dado que se alinearán de diferente forma, según su posición.
Espero haber sido claro.
En resumen: CAMBIAR UN Mtex DE "Middle Left" ---> "Bottom Center" Y QUE SE QUEDE EN EL MISMO LUGAR.
Saludos y gracias....
En un principio me pareció que era muy sencillo, pero no...
El asunto es que tengo en una serie de "Mtext" que representan los cadenamientos (progresivas) de un camino. El programa que los genera los deja en justificación "Middle Left".
Por razones de la presnetanción yo requiero dejarals con "Bottom Center". Intenté con (vla-put-property txt 'acalinmentCenter), pero me manda el texto al (0,0).
Sé que sería muy fácil seleccionar todo y cambiarlo en la ventana de propiedades, pero en un archivo puedo tener mas de tres o cuatro ejes y se complica, dado que se alinearán de diferente forma, según su posición.
Espero haber sido claro.
En resumen: CAMBIAR UN Mtex DE "Middle Left" ---> "Bottom Center" Y QUE SE QUEDE EN EL MISMO LUGAR.
Saludos y gracias....
eliasp- Mensajes : 195
Fecha de inscripción : 17/03/2016
Re: Alinear MText
Yo creo que partiendo de la lista de cada MTEXT (listamtext), y haciendo estas operaciones para cada MTEXT, lo tendrías. Pero hay que comprobarlo en el dibujo. Como digo, sin verlo es complicado saber cómo están los textos.
- Código:
(setq longitud (cdr (assoc 42 listamtext)))
(setq altura_mtext (cdr (assoc 43 listamtext)))
(setq angulo (cdr (assoc 50 listamtext)))
(setq pt_inser (cdr (assoc 10 listamtext)))
(setq angulo1 (atan altura_mtext (/ longitud 2)))
(setq long1 (sqrt (+ (expt (/ longitud 2) 2) (expt altura_mtext 2))))
(setq pt_medio (polar pt_inser (- angulo angulo1) long1))
(setq nuevalista (subst (cons 10 pt_medio) (assoc 10 listamtext) listamtext))
(entmod nuevalista)
(setq listamtext (entget (car mtext)))
(setq nuevalista (subst (cons 71 8) (assoc 71 listamtext) listamtext))
(entmod nuevalista)
Re: Alinear MText
Ok, es realmente muy sencillo, lo mando a tu correo a algún servicio de almacenamiento?
Saludos y gracias
Saludos y gracias
eliasp- Mensajes : 195
Fecha de inscripción : 17/03/2016
Re: Alinear MText
Antes de subirlo a un servicio de almacenamiento, prueba lo que te envié. Si te sirve, ya no es necesario que subas nada. O.K? Saludos.
Re: Alinear MText
Buen día. Gracias Robierzo
Probé el código que enviaste, me da error en:
La verdad es que estoy un tanto, mas bien un mucho oxidado y no le encontré. Aunque después del error, mueve de posición el texto. Le agregué esta línea al principio.
Saludos y gracias..........
Probé el código que enviaste, me da error en:
- Código:
(setq listamtext (entget (car mtext)))
La verdad es que estoy un tanto, mas bien un mucho oxidado y no le encontré. Aunque después del error, mueve de posición el texto. Le agregué esta línea al principio.
- Código:
(SETQ Listamtext (ENTGET (SSNAME (SSGET) 0)))
Saludos y gracias..........
eliasp- Mensajes : 195
Fecha de inscripción : 17/03/2016
Re: Alinear MText
A ver, el código que yo hice es para que lo integres dentro de tu rutina. Bien dentro de una función, o bien dentro de un bucle tipo REPEAT. Yo no sé lo que tienes hecho.
Dentro de una función sería algo así
Si lo metes dentro de un REPEAT, tienes que ir obteniendo la lista de cada MTEXT, antes de ejecutar las operaciones que te he puesto yo. Evidentemente, primero tienes que capturar los MTEXT y meterlos dentro de un conjunto.....
Si subes tu código será más fácil. Si no, es matar pulgas a cañonazos. Y si subes el dwg, mucho mejor..........
Dentro de una función sería algo así
- Código:
(defun modificamtext (listamtext)
(setq longitud (cdr (assoc 42 listamtext)))
(setq altura_mtext (cdr (assoc 43 listamtext)))
(setq angulo (cdr (assoc 50 listamtext)))
(setq pt_inser (cdr (assoc 10 listamtext)))
(setq angulo1 (atan altura_mtext (/ longitud 2)))
(setq long1 (sqrt (+ (expt (/ longitud 2) 2) (expt altura_mtext 2))))
(setq pt_medio (polar pt_inser (- angulo angulo1) long1))
(setq nuevalista (subst (cons 10 pt_medio) (assoc 10 listamtext) listamtext))
(entmod nuevalista)
(setq listamtext (entget (car mtext)))
(setq nuevalista (subst (cons 71 8) (assoc 71 listamtext) listamtext))
(entmod nuevalista)
)
(modificamtext l)
Si lo metes dentro de un REPEAT, tienes que ir obteniendo la lista de cada MTEXT, antes de ejecutar las operaciones que te he puesto yo. Evidentemente, primero tienes que capturar los MTEXT y meterlos dentro de un conjunto.....
- Código:
(setq n 0)
(repeat (sslength conj_mtext)
(setq listamtext (entget (ssname n conj_mtext)))
(setq longitud (cdr (assoc 42 listamtext)))
(setq altura_mtext (cdr (assoc 43 listamtext)))
(setq angulo (cdr (assoc 50 listamtext)))
(setq pt_inser (cdr (assoc 10 listamtext)))
(setq angulo1 (atan altura_mtext (/ longitud 2)))
(setq long1 (sqrt (+ (expt (/ longitud 2) 2) (expt altura_mtext 2))))
(setq pt_medio (polar pt_inser (- angulo angulo1) long1))
(setq nuevalista (subst (cons 10 pt_medio) (assoc 10 listamtext) listamtext))
(entmod nuevalista)
(setq listamtext (entget (car mtext)))
(setq nuevalista (subst (cons 71 8) (assoc 71 listamtext) listamtext))
(entmod nuevalista)
(setq n (1+ n))
)
Si subes tu código será más fácil. Si no, es matar pulgas a cañonazos. Y si subes el dwg, mucho mejor..........
Re: Alinear MText
El comanto tjust hace lo que necesitas.
Marco Jacinto- Mensajes : 91
Fecha de inscripción : 12/08/2016
A robierzo y a supertxull les gusta esta publicaciòn
Re: Alinear MText
Marco, está genial!!!!!!! Qué gran comando!!!! No hay como conocer bien la herramienta de trabajo!!!!
Temas similares
» Ancho Mtext y Text
» Consulta rutina de mtext
» Cambiar propiedades de text y mtext
» Es posible cambiar la fuente de un Mtext mediante Lisp??
» Consulta rutina de mtext
» Cambiar propiedades de text y mtext
» Es posible cambiar la fuente de un Mtext mediante Lisp??
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|