Comunidad
AutoCAD - Todos los productos - Español
Bienvenido/a al foro de los productos de la familia AutoCAD de Autodesk! Comparte tu conocimiento, haz preguntas y explora los temas populares de AutoCAD.
cancelar
Mostrando los resultados de 
Mostrar  solo  | Buscar en lugar de 
Quiere decir: 

LISP para extraer longitud de polilínea y colocarlo en un texto en AutoCAD

8 RESPUESTAS 8
RESUELTAS
Responder
Mensaje 1 de 9
lbenavidesmDCQ4S
1049 Vistas, 8 Respuestas

LISP para extraer longitud de polilínea y colocarlo en un texto en AutoCAD

Hola . Estoy empezando en el mundo de los lisp. Actualmente vengo realizando un trabajo de metrado. Tengo la siguiente inquietud, es saber si es posible con una rutina LISP extraer la longitud de una polilinea y al mismo tiempo colocarlo dentro de un texto.

lbenavidesmDCQ4S_0-1714106542442.png

 

@IbenavidesDCQ4S para una mayor claridad @joaquim.moral ha editado el título original: LISP para extraer longitud de polilínea y colocarlo en un texto. Consulta cómo escoger el mejor título para tu post. ¡Gracias por participar!

 

8 RESPUESTAS 8
Mensaje 2 de 9
Valentin-WSP
en respuesta a: lbenavidesmDCQ4S

@lbenavidesmDCQ4S ,

 

Puede utilizar el LSP adjunto (DimPoly.lsp) creado por Kent Cooper o utilizar DISPLAYLEN – Display Polyline Segment Lengths de la tienda de Autodesk App Store .

 

ValentinWSP_0-1714119520579.png

 

 

 

 

ValentinWSP_1-1714119856460.png

  • DISPLAYLEN – Display Polyline Segment Lengths

 



Please select the "Accept as Solution" button if my post solves your issue or answers your question.


Emilio Valentin
Mensaje 3 de 9

Hola @lbenavidesmDCQ4S,
¡Gracias por participar en la Comunidad Autodesk!

¿Te ha ayudado la respuesta de @Valentin-WSP a solucionar tu duda?

Si es así, puedes hacer clic en el botón "Aceptar como solución". De esta manera ayudas a que otras personas usuarias puedan acceder y encontrar más fácilmente la información.

De lo contrario, coméntanos en este mismo hilo para que la comunidad pueda seguir ayudándote.

Gracias y esperamos tu respuesta,

¿Te ha parecido útil este post? ¡Deja un like!
¿Tu pregunta ha sido solucionada? Selecciona 'Marcar como solución' y ayuda a las demás a encontrar fácilmente la información.

You found a post helpful? Then feel free to give likes to these posts!
Your question got successfully answered? Then just click on the 'Mark as solution'


Joaquim Moral
Community Manager
Spanish Community

Mensaje 4 de 9
calderg1000
en respuesta a: lbenavidesmDCQ4S

Saludos @lbenavidesmDCQ4S 

Prueba este código que codifique para obtener lo que requieres. Espero te sea de ayuda. Cualquier consulta sobre el funcionamiento del código, con gusto estaré por aquí.

;;;Rutina auttolis creada por calderg1000@gmail.com para dar respuesta en el foro
;;;Acad en español; 01-05-24
;;;l_pol: Calcula la longitud de linea o polilinea y muestra su valor con un Mleader.
;;;Previamente configure las propiedades del estilo de Mleader actual.
;;;
(defun c:l_pol (/ s sn lpol pref sp ep mp)
  (princ "\nSeleccione Linea/Polilinea para calcular Longitud...:")
  (while
    (setq s (ssget "_+.:E:S" '((0 . "*line"))))
     (setq sn   (vlax-ename->vla-object (ssname s 0))
           lpol (vla-get-length sn)
     )
     (setq Pref (getstring "\nIngrese Prefijo:")
           sp   (vlax-curve-getstartpoint sn)
           ep   (vlax-curve-getendpoint sn)
           mp   (mapcar '(lambda (j k) (* (+ j k) 0.5)) sp ep)
     )
     (princ (strcat "\nLong.: " (rtos lpol 2 2) " m."))
     (vl-cmdf "mleader" mp pause (strcat Pref "=" (rtos lpol 2 2)" m"))
     (princ)
  )
)

 


Carlos Calderon G
EESignature
>Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

Mensaje 5 de 9
lbenavidesmDCQ4S
en respuesta a: calderg1000

Muya agradecido con tu aporte, la verdad es que es muy util. Si ****ple la funcion que necesito.

Mensaje 6 de 9

¡Hola @lbenavidesmDCQ4S!
Me alegro de que hayas podido encontrar una solución a tu duda con el soporte de @calderg1000.

También te agradezco que hayas marcado la respuesta adecuada como solución aceptada.
De esta manera, encontrarla será mucho más fácil, y ayudarás a futuros usuarios con dudas similares ‌‌

Te esperamos en la Comunidad para cualquier duda o pregunta que puedas tener en el futuro. No te olvides de compartir tu conocimiento con los demás, o asistir a los eventos para aprender más 🙂

¡Gracias y hasta pronto!

¿Te ha parecido útil este post? ¡Deja un like!
¿Tu pregunta ha sido solucionada? Selecciona 'Marcar como solución' y ayuda a las demás a encontrar fácilmente la información.

You found a post helpful? Then feel free to give likes to these posts!
Your question got successfully answered? Then just click on the 'Mark as solution'


Joaquim Moral
Community Manager
Spanish Community

Mensaje 7 de 9
DICSA
en respuesta a: calderg1000

Hola Calderg1000, saludos.

Un favor enorme... podría revisar la siguiente rutina lisp, estoy practicando, pero no domino mucho el lenguaje de programación; y no logro detectar los errores por los que no funciona correctamente. La rutina debe seleccionar una línea, calcular la longitud, para luego ubicarla adjunta a dicha línea.

De antemano muchas gracias por la atención.

 

DICSA_0-1723453554111.png

(defun C:LongLin()
(setvar "cmdecho" 0)
(defun grados (rg)
(* (/ rg pi) 180.0)
)

(setq alt-text (getreal "\nIntroduce altura del texto : "))
(setq num-dec (getint "\nNumero de decimales : "))
(setq ent (car (entsel "\nSelecciona una línea: ")))
(if (and ent (= (cdr (assoc 0 (entget ent))) "LINE"))
(progn
(setq p1 (cdr (assoc 10 (entget ent))))
(setq p2 (cdr (assoc 11 (entget ent))))
(setq longitud (distance p1 p2))
(setq longitud (rtos longitud 2 num-dec))
(setq rg (angle p1 p2))
)
(command "_text" "_C" "_m2p" p1 p2 alt-text (grados rg) longitud)
)
(alert "Selecciona una línea válida.")
(princ)
)

Mensaje 8 de 9
calderg1000
en respuesta a: DICSA

Saludos @DICSA 

Aqui le hice unas leves modificaciones. Cualquier información adicional con mucho gusto restare atento.

(defun c:LongLinn( / alt-text num-dec ent p1 p2 longitud rg)
(setvar "cmdecho" 0)
(defun grados (rg)
(* (/ rg pi) 180.0)
)
(setq alt-text (getreal "\nIntroduce altura del texto : "))
(setq num-dec (getint "\nNumero de decimales : "))
(while
(setq ent (car (entsel "\nSelecciona una línea: ")))
(if (and ent (= (cdr (assoc 0 (entget ent))) "LINE"))
(progn
(setq p1 (cdr (assoc 10 (entget ent))))
(setq p2 (cdr (assoc 11 (entget ent))))
(setq longitud (distance p1 p2))
(setq longitud (rtos longitud 2 num-dec))
(setq rg (angle p1 p2))
;;;)
(command "_text" "_C" "_m2p" p1 p2 alt-text (grados rg) longitud)
)
(alert "Selecciona una línea válida.")
)
)
(princ)
)

 

 


Carlos Calderon G
EESignature
>Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

Mensaje 9 de 9
DICSA
en respuesta a: calderg1000

@calderg1000 Muchas gracias por la atención prestada...

como en este caso estoy aprendiendo, me sirve para ver como se estructura la codificación.

¿No encontraste lo que buscabas? Pregúntale a la comunidad o comparte tus conocimientos.

Publicar en los foros  

Autodesk Design & Make Report

New events in the Spanish Community