Rutinas LISP para AutoCAD y Civil 3D: cómo cargarlas sin riesgo, 3 rutinas útiles y cuándo pasar a un plugin
Qué es AutoLISP, cómo cargar rutinas LISP en AutoCAD y Civil 3D de forma segura, 3 rutinas con código para copiar y cuándo conviene un plugin en C#.
AutoCAD · Civil 3D · AutoLISP
Las rutinas LISP siguen ahorrando horas en miles de oficinas. Y siguen siendo un riesgo si nadie las revisa.
Qué es AutoLISP, cómo cargar una rutina para que esté siempre disponible, tres rutinas útiles con su código, cómo protegerte del malware en LISP y cuándo conviene dar el salto a un plugin en C#.
Por qué el LISP sigue vivo
Casi toda oficina de ingeniería tiene una carpeta con rutinas LISP: unas descargadas de foros, otras escritas por alguien que ya no trabaja ahí. Siguen funcionando porque AutoLISP casi no ha cambiado en décadas, y porque para tareas de dibujo sencillas es la forma más rápida de automatizar.
El problema aparece cuando esas rutinas se vuelven críticas y nadie sabe qué hacen, o cuando se intenta usar LISP para algo que no le corresponde, como leer los objetos de ingeniería de Civil 3D. Esta guía cubre las dos cosas.
De un archivo .lsp a un comando
Archivo .lsp
Código en texto
APPLOAD o Startup Suite
Desde una ubicación de confianza
Comando nuevo
Se escribe en la línea de comandos
Uso diario
En cada dibujo que abres
Rutinas LISP para AutoCAD y Civil 3D, en 7 bloques
Qué es AutoLISP, cómo cargar rutinas de forma segura, tres rutinas con su código, el riesgo del malware y cuándo pasar a un plugin.
- 01Concepto
Qué es AutoLISP
Dónde funciona y para qué sirve hoy
- 02Primero
Cómo cargarla
APPLOAD, Startup Suite y SECURELOAD
- 03Rutina 1
Exportar puntos
Puntos a un CSV PNEZD para Civil 3D
- 04Rutina 2
Rotular coordenadas
Este y Norte de cada punto
- 05Rutina 3
Longitud total
Suma de líneas, polilíneas y arcos
- 06Riesgo
Seguridad
El malware en LISP y cómo protegerte
- 07Acción
Cuándo pasar a un plugin
Los límites del LISP frente a C#
AutoLISP es un lenguaje que AutoCAD incluye desde los años 80. Una rutina LISP define uno o más comandos nuevos que se ejecutan como cualquier comando de AutoCAD.
Dónde funciona:
- En AutoCAD y en todas sus versiones verticales, incluido Civil 3D.
- En AutoCAD LT para Windows desde la versión 2024. Antes, las versiones LT no ejecutaban LISP.
Para qué es bueno:
- Rotular, numerar, renombrar capas, cambiar propiedades en lote.
- Medir y sumar: longitudes, áreas, cantidades de bloques.
- Exportar e importar datos simples a archivos de texto o CSV.
Dónde se escribe: desde AutoCAD 2021, el editor recomendado es Visual Studio Code con la extensión de AutoLISP de Autodesk, que reemplaza al antiguo editor Visual LISP.
Para usarla una vez:
- Escribe
APPLOADen la línea de comandos. - Busca el archivo .lsp y haz clic en Cargar.
- Escribe el comando que define la rutina.
También puedes arrastrar el archivo .lsp a la ventana del dibujo.
Para que esté siempre disponible: en el mismo cuadro de APPLOAD, agrega la rutina al Startup Suite (las aplicaciones de inicio). Se cargará en cada dibujo que abras.
Exporta los objetos punto (POINT) seleccionados a un archivo CSV con el formato PNEZD: número, Norte, Este, cota y descripción. Ese archivo se importa directamente en Civil 3D como puntos COGO. Cómo importarlo sin errores, en importar puntos a Civil 3D.
;; ZPUNTOSCSV: exporta los puntos (POINT) seleccionados a un CSV PNEZD
(defun c:ZPUNTOSCSV (/ ss arch f i n p)
(setq ss (ssget '((0 . "POINT"))))
(if ss
(progn
(setq arch (getfiled "Guardar puntos" "" "csv" 1))
(if arch
(progn
(setq f (open arch "w") i 0 n 1)
(repeat (sslength ss)
(setq p (cdr (assoc 10 (entget (ssname ss i)))))
(write-line
(strcat (itoa n) ","
(rtos (cadr p) 2 3) ","
(rtos (car p) 2 3) ","
(rtos (caddr p) 2 3) ",PT")
f)
(setq i (1+ i) n (1+ n)))
(close f)
(princ (strcat "\n" (itoa (sslength ss)) " puntos exportados a " arch)))))
(princ "\nNo se seleccionaron puntos."))
(princ))
Cómo funciona: ssget con el filtro (0 . "POINT") deja seleccionar solo puntos; getfiled abre el cuadro para guardar; cada línea escribe el Norte (Y) antes que el Este (X), que es el orden de PNEZD.
Pide puntos en el dibujo y escribe al lado un texto con su Este y su Norte. Sirve para planos de ubicación, vértices de un terreno o puntos de control.
;; ZCOORD: rotula las coordenadas Este y Norte de cada punto que indiques
(defun c:ZCOORD (/ alt p w)
(setq alt (getreal "\nAltura del texto <2.5>: "))
(if (not alt) (setq alt 2.5))
(while (setq p (getpoint "\nPunto a rotular (Enter para terminar): "))
(setq w (trans p 1 0))
(entmake
(list (cons 0 "TEXT")
(cons 10 w)
(cons 40 alt)
(cons 1 (strcat "E " (rtos (car w) 2 3) " N " (rtos (cadr w) 2 3))))))
(princ))
Cómo funciona: getpoint devuelve el punto en el sistema de coordenadas del usuario (SCP); trans lo convierte al sistema universal (SCU), que es el que guarda las coordenadas reales. Sin ese paso, con un SCP girado, el rótulo mostraría coordenadas equivocadas.
Suma la longitud de todo lo seleccionado. Útil para metrar tuberías, cunetas, bordes de vereda o cualquier elemento dibujado como línea.
;; ZLONGTOTAL: suma la longitud de lineas, polilineas, arcos, circulos y splines
(vl-load-com)
(defun c:ZLONGTOTAL (/ ss i total e)
(setq ss (ssget '((0 . "LINE,LWPOLYLINE,POLYLINE,ARC,CIRCLE,SPLINE")))
total 0.0
i 0)
(if ss
(progn
(repeat (sslength ss)
(setq e (ssname ss i)
total (+ total (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)))
i (1+ i)))
(princ (strcat "\nObjetos: " (itoa (sslength ss))
" Longitud total: " (rtos total 2 3))))
(princ "\nNo se selecciono nada."))
(princ))
Cómo funciona: vl-load-com activa las funciones vlax-curve, que miden cualquier curva de la misma forma, sea una línea, una polilínea o un arco.
AutoCAD carga automáticamente ciertos archivos, como acad.lsp y acaddoc.lsp, si los encuentra en la carpeta del dibujo o en las rutas de búsqueda. Ese comportamiento se ha usado para propagar malware: un archivo LISP oculto que viaja junto a los planos y se ejecuta al abrirlos.
El caso más conocido golpeó al Perú. En 2012, la empresa de seguridad ESET documentó ACAD/Medre.A, un malware escrito en AutoLISP que se propagó sobre todo en el Perú y envió decenas de miles de planos por correo a cuentas en China.
Cómo protegerte:
- Mantén SECURELOAD en 1 o 2, nunca en 0.
- Ten una sola carpeta de rutinas revisadas como ubicación de confianza.
- Desconfía de un acad.lsp o acaddoc.lsp que aparezca junto a planos recibidos de terceros.
- No cargues archivos .fas o .vlx de origen desconocido: no se pueden leer, así que no sabes qué hacen.
LISP trabaja muy bien con lo que AutoCAD dibuja: líneas, polilíneas, textos, bloques y capas. Con los objetos de ingeniería de Civil 3D es otra historia: los ve casi como cajas cerradas. Para leer los datos de un alineamiento, una superficie o un corredor tiene que pasar por la interfaz COM de Civil 3D, que es engorrosa, cambia entre versiones y no cubre todo.
Señales de que tu rutina ya debería ser un plugin:
- Necesita leer o modificar alineamientos, perfiles, superficies, corredores o redes de tuberías.
- Necesita una ventana con opciones, validaciones o tablas, más allá de preguntas en la línea de comandos.
- La usa toda la oficina y un error cuesta horas de trabajo.
- Solo una persona la entiende.
| Criterio | Plugin en C# | Rutina LISP |
|---|---|---|
| Objetos de Civil 3D | Acceso completo por la API .NET | Limitado, por COM |
| Interfaz | Ventanas, tablas y validaciones | Línea de comandos y cuadros simples |
| Velocidad con miles de objetos | Alta | Aceptable |
| Distribución | Instalador con versión y registro de cambios | Archivo que se copia |
| Curva de aprendizaje | Meses | Días |
| Ideal para | Herramientas críticas de la oficina | Tareas de dibujo rápidas |
Si quieres dar el paso tú mismo, empieza por la API de Civil 3D en C#. Si prefieres que lo hagamos, lo explicamos en desarrollo de add-ins para Revit y Civil 3D.
Recursos relacionados
- El siguiente nivel: Civil 3D API en C#, primeros pasos.
- Sin código: 10 scripts de Dynamo para Civil 3D.
- Dynamo o C#: cuál conviene en cada caso.
- Si estás empezando a programar: programación para ingenieros civiles.
- Qué automatizar primero: automatizar Civil 3D, la guía completa.
Preguntas frecuentes sobre rutinas LISP
Es un archivo de texto con código en AutoLISP, el lenguaje que trae AutoCAD, que agrega comandos nuevos. Se usa para automatizar tareas de dibujo repetitivas, como rotular, sumar longitudes, numerar o exportar puntos. Los archivos .lsp se pueden leer; los .fas y .vlx son versiones compiladas.
Nota técnica: el código es un ejemplo de referencia. Pruébalo en un dibujo de prueba antes de usarlo en un proyecto.
Sigue leyendo sobre este tema
Automatizar Civil 3D: la guía completa en español (2026)
Qué se puede automatizar en Civil 3D y cómo: Dynamo, Python, C# y AutoLISP comparados, las 15 automatizaciones con más retorno y cuál hacer primero.
Programación para ingenieros civiles: automatizaciones que ahorran horas + buenas prácticas explicadas simple
Guía práctica para ingenieros civiles que quieren programar: automatizaciones que ahorran horas, arquitectura simple y buenas prácticas, sin jerga.
Deja de llevar tus metrados y cubicaciones en Excel: la guía para oficinas de ingeniería
Por qué llevar metrados y cubicaciones en Excel cuesta horas y errores en cada cambio de diseño, y cómo sacarlos del modelo de Civil 3D o Revit.
Automatizar metrados y cubicaciones en Civil 3D: guía práctica 2026
Cómo sacar metrados y cubicaciones de Civil 3D sin rehacerlos en Excel: superficies, volúmenes, cuadros con tus partidas y qué conviene automatizar.