acad hispano
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Alinear MText

3 participantes

Ir abajo

Alinear MText Empty Alinear MText

Mensaje por eliasp Jue Sep 17, 2020 6:10 pm

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....

eliasp

Mensajes : 195
Fecha de inscripción : 17/03/2016

Volver arriba Ir abajo

Alinear MText Empty Re: Alinear MText

Mensaje por robierzo Sáb Sep 19, 2020 9:30 am

Es importante que aportes un dwg. Las entidades MTEXT tienen su enjundia.
robierzo
robierzo

Mensajes : 103
Fecha de inscripción : 17/03/2016
Localización : La Coruña

http://www.selmotopografia.es

Volver arriba Ir abajo

Alinear MText Empty Re: Alinear MText

Mensaje por robierzo Sáb Sep 19, 2020 10:11 am

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

Mensajes : 103
Fecha de inscripción : 17/03/2016
Localización : La Coruña

http://www.selmotopografia.es

Volver arriba Ir abajo

Alinear MText Empty Re: Alinear MText

Mensaje por eliasp Lun Sep 21, 2020 3:12 pm

Ok, es realmente muy sencillo, lo mando a tu correo a algún servicio de almacenamiento?

Saludos y gracias

eliasp

Mensajes : 195
Fecha de inscripción : 17/03/2016

Volver arriba Ir abajo

Alinear MText Empty Re: Alinear MText

Mensaje por robierzo Mar Sep 22, 2020 12:26 pm

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.
robierzo
robierzo

Mensajes : 103
Fecha de inscripción : 17/03/2016
Localización : La Coruña

http://www.selmotopografia.es

Volver arriba Ir abajo

Alinear MText Empty Re: Alinear MText

Mensaje por eliasp Mar Sep 22, 2020 3:04 pm

Buen día. Gracias Robierzo

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)))
A ver si es por ahí.

Saludos y gracias..........

eliasp

Mensajes : 195
Fecha de inscripción : 17/03/2016

Volver arriba Ir abajo

Alinear MText Empty Re: Alinear MText

Mensaje por robierzo Mar Sep 22, 2020 7:21 pm

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í
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..........
robierzo
robierzo

Mensajes : 103
Fecha de inscripción : 17/03/2016
Localización : La Coruña

http://www.selmotopografia.es

Volver arriba Ir abajo

Alinear MText Empty Re: Alinear MText

Mensaje por Marco Jacinto Jue Oct 01, 2020 3:59 pm

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

Volver arriba Ir abajo

Alinear MText Empty Re: Alinear MText

Mensaje por robierzo Sáb Oct 03, 2020 8:11 am

Marco, está genial!!!!!!! Qué gran comando!!!! No hay como conocer bien la herramienta de trabajo!!!!
robierzo
robierzo

Mensajes : 103
Fecha de inscripción : 17/03/2016
Localización : La Coruña

http://www.selmotopografia.es

Volver arriba Ir abajo

Alinear MText Empty Re: Alinear MText

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.