Combinar dos codigos lisp en AutoCAD

Combinar dos codigos lisp en AutoCAD

sergio_gonza
Participant Participant
1.269 Vistas
3 Respuestas
Mensaje 1 de 4

Combinar dos codigos lisp en AutoCAD

sergio_gonza
Participant
Participant

Hola, estoy intentando combinar dos codigos diferentes para la utilizacion de un archivo .lsp

Lo que intento hacer es copiar la parte que me selecciona todas las polilineas (codigo mas corto con nombre cpol) e insertarla en algun lado del codigo del otro lsp (Polyinfo) ya que este ultimo solo me saca las coordenadas y longuitud de solo una polilinea, por lo que querria seleccionar varias polilineas a la vez y exportarlas a un formato CSV para tratar esos datos (coordenadas y longuitud de las polilineas).

 

@sergio_gonza  para una mayor claridad @joaquim.moral ha editado el título original:

Combinar dos codigos lisp. Recuerda consultar cómo escoger el mejor título para tu post. ¡Gracias por participar!

1.270 Vistas
3 Respuestas
Respuestas (3)
Mensaje 2 de 4

Joao-Rafael
Advocate
Advocate

Hola @sergio_gonza 

Aquí hay una explicación de cómo funciona:

La rutina comienza creando una selección de objetos (ss) usando el comando ssget para obtener todas las polilíneas en la selección actual.
A continuación, abre un archivo .csv para escribir polilíneas.csv con la función with-open.
Dentro del with-open, lo primero que sucede es la escritura de la línea de encabezado del archivo .csv, que será "X, Y, Longitud".
Luego itera sobre todos los nombres de objetos en la selección ss con la función foreach.
Para cada objeto, utiliza la función entget para obtener la entidad de polilínea.
Luego itera sobre la entidad de polilínea para extraer las coordenadas X e Y usando el código 10.
También extrae la longitud de la polilínea utilizando el código 40.
Finalmente, escribe las coordenadas X e Y y la longitud de la polilínea en el archivo .csv usando la función princ.
Cuando finaliza la rutina, muestra el mensaje "Datos de polilínea exportados a polilíneas.csv".
Puede agregar esta rutina a su archivo de secuencia de comandos de AutoCAD y ejecutarla desde el comando (exportar polilíneas a csv).



(defun c:export-polylines-to-csv (/ ss i j pline coords length)
(setq ss (ssget "X" '((0 . "LWPOLYLINE"))))
(with-open (f "polylines.csv" "w")
(princ "X,Y,Length" f)
(foreach i (ssname ss)
(setq pline (entget i))
(setq coords nil)
(foreach j pline
(if (eq (car j) 10)
(setq coords (cons (cdr j) coords))))
(setq length (rtos (cdr (assoc 40 pline))))
(foreach j coords
(princ (strcat (rtos (car j)) "," (rtos (cdr j)) "," length) f)
(princ "\n" f))))
(princ "Polyline data exported to polylines.csv"))

espero que funcione !
Saludos



At.t

João Rafael A. Dias


[pt] Esse post foi de ajuda para você? Mostre seu Apoio dando uma curtida! Sua pergunta obteve uma resposta que resolveu a duvida? Então clique no botão 'Aceitar Solução '


[en] Did this post help you? Show your support by liking it! Did your question receive an answer that solved your doubts? Then click on the "Accept Solution" button.


[es] ¿Te ayudó esta publicación? Demuestra tu apoyo dándole un me gust. ¿Tu pregunta recibió una respuesta que resolvió tus dudas? Entonces haz clic en el botón "Aceptar solución"



Siga-me // Folow me LinkedIN
Mensaje 3 de 4

joaquim.moral
Community Manager
Community Manager

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

¿Te ha ayudado la respuesta de @Joao-Rafael 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,


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'

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


Joaquim Moral
Senior Community Manager

Mensaje 4 de 4

sergio_gonza
Participant
Participant

Muchas gracias por tu tiempo, pero no me funciona el codigo, me muestra un mensaje de error como que la funcion "F" no esta definida.

sergio_gonza_0-1675756460368.png

He intentado guardar el codigo como .lsp, le he metido tambien en la barra de comandos, y tambien en el visual lisp y no funciona de ninguna manera.