AutoLISP es un dialecto del lenguaje de programación Lisp creado específicamente para su uso con la versión completa de AutoCAD y sus derivados, que incluyen AutoCAD Map 3D , AutoCAD Architecture y AutoCAD Mechanical . [1] Ni la interfaz de programación de aplicaciones (API) ni el intérprete para ejecutar el código AutoLISP están incluidos en la línea de productos AutoCAD LT. [2]
Familia | Ceceo |
---|---|
Diseñada por | David Betz |
Desarrolladores | Autodesk , software básico |
Apareció por primera vez | Enero de 1986 |
Lanzamiento estable | 13 de febrero de 1995 |
Plataforma | IA-32 |
SO | Linux |
Dialectos | |
Vital-LISP, Visual LISP | |
Influenciado por | |
Lisp , XLISP |
Características
AutoLISP es un dialecto de lenguaje Lisp pequeño, de alcance dinámico y tipado dinámicamente con recolección de basura , estructura de lista inmutable y símbolos configurables, que carece de características Lisp regulares como sistema de macros , facilidades de definición de registros, matrices, funciones con número variable de argumentos o enlaces de permisos . Aparte del lenguaje principal, la mayoría de las funciones primitivas son para la geometría, el acceso a la base de datos DWG interna de AutoCAD o la manipulación de entidades gráficas en AutoCAD. Las propiedades de estas entidades gráficas se revelan a AutoLISP como listas de asociación en las que los valores se emparejan con códigos de grupo de AutoCAD que indican propiedades como puntos de definición, radios, colores, capas, tipos de línea, etc. AutoCAD carga código AutoLISP desde archivos .LSP. [3]
El código de AutoLISP puede interactuar con el usuario a través del editor gráfico de AutoCAD mediante el uso de funciones primitivas que permiten al usuario seleccionar puntos, elegir objetos en la pantalla e ingresar números y otros datos. AutoLisp también tiene una interfaz gráfica de usuario (GUI) integrada en un lenguaje específico de dominio o en miniatura (DSL), el Lenguaje de control de diálogo , para crear cuadros de diálogo modales con diseño automatizado, dentro de AutoCAD. [3]
Historia
AutoLISP se derivó de una versión anterior de XLISP , que fue creada por David Betz. [4] El lenguaje se introdujo en la versión 2.18 de AutoCAD en enero de 1986 y continuó mejorando en versiones sucesivas hasta la versión 13 en febrero de 1995. Después de eso, Autodesk descuidó su desarrollo en favor de entornos de desarrollo más modernos como Visual Basic. para aplicaciones (VBA), .NET Framework y ObjectARX . Sin embargo, sigue siendo el idioma de personalización principal de AutoCAD.
Vital-LISP , una versión considerablemente mejorada de AutoLISP que incluye un entorno de desarrollo integrado (IDE), depurador , compilador y soporte ActiveX , fue desarrollado y vendido por un desarrollador externo Basis Software. Vital LISP era un superconjunto del lenguaje AutoLISP existente que agregaba acceso similar a VBA al modelo de objetos de AutoCAD, reactores (manejo de eventos para objetos de AutoCAD), soporte general de ActiveX y algunas otras funciones generales de Lisp. Autodesk lo compró, lo renombró Visual LISP y lo vendió brevemente como un complemento de la versión 14 de AutoCAD lanzada en mayo de 1997. Se incorporó a AutoCAD 2000 lanzado en marzo de 1999, como reemplazo de AutoLISP. Desde entonces, Autodesk ha dejado de realizar importantes mejoras en Visual LISP y ha centrado más esfuerzos en VBA, .NET y C ++ . Al 31 de enero de 2014[actualizar], Autodesk ya no admite versiones de VBA anteriores a 7.1. Esto es parte de un proceso a largo plazo de cambio de VBA a .NET para la personalización del usuario. [5] [6]
AutoLISP tiene tantos seguidores que otros proveedores de aplicaciones de diseño asistido por computadora (CAD) lo agregan a sus productos. Bricscad , IntelliCAD , DraftSight y otros tienen la funcionalidad AutoLISP, por lo que los usuarios de AutoLISP pueden considerar su uso como una alternativa a AutoCAD. La mayor parte del desarrollo que involucra AutoLISP desde AutoCAD 2000 se realiza dentro de Visual LISP desde que el motor AutoLISP original fue reemplazado por el motor Visual LISP. Hay miles de utilidades y aplicaciones que se han desarrollado utilizando AutoLISP o Visual LISP (distribuidas como archivos LSP, FAS y VLX). [7] [8]
Ejemplos de
Un programa simple de Hola mundo en AutoLISP sería:
( defun hola ( ) ( princ "\ n¡Hola mundo!" ) ( princ ))
Tenga en cuenta la línea final dentro de la definición de la función: cuando se evalúa sin argumentos, la princ
función devuelve un símbolo nulo, que no se muestra en la interfaz de línea de comandos de AutoCAD . Como la línea de comandos de AutoCAD funciona como un bucle de lectura-evaluación-impresión (REPL), esto normalmente imprimiría "¡Hola mundo!" a la línea de comando, seguido inmediatamente por el valor de retorno de la llamada a princ
. Por lo tanto, sin la llamada final a la princ
función, el resultado de esto sería:
Hello World!"\nHello World!"
La prin1
función también se puede utilizar para lograr el mismo resultado.
Un ejemplo más complejo podría ser:
( defun c: pointlabel ( / pnt ) ( if ( setq pnt ( getpoint "\ nEspecificar punto:" )) ( progn ( entmake ( lista ' ( 0 . "POINT" ) ( contras 10 ( trans pnt 1 0 )) ) ) ( entmake ( lista ' ( 0 . "TEXT" ) ( contras 10 ( trans ( contras ( + ( car pnt ) 0.6 ) ( cdr pnt )) 1 0 )) ( contras 40 ( getvar 'tamaño de texto )) ( contras 1 ( strcat "X:" ( rtos ( car pnt )) "Y:" ( rtos ( cadr pnt )))) ) ) ) ) ( princ ))
El código anterior define una nueva función que genera un objeto de punto de AutoCAD en un punto dado, con un objeto de texto de una línea que muestra las coordenadas X e Y a su lado. El nombre de la función incluye un prefijo especial 'c:', que hace que AutoCAD reconozca la función como un comando normal. Al usuario, al escribir 'pointlabel' en la línea de comando de AutoCAD, se le pedirá que elija un punto, ya sea escribiendo las coordenadas X e Y, o haciendo clic en una ubicación en el dibujo. La función colocaría un marcador en ese punto y crearía un objeto de texto de una línea junto a él, que contiene las coordenadas X e Y del punto expresadas en relación con el Sistema de coordenadas del usuario (UCS) activo. La función no requiere parámetros y contiene una variable local ('pnt').
El ejemplo anterior también podría escribirse utilizando comandos integrados de AutoCAD para lograr el mismo resultado, sin embargo, este enfoque es susceptible a cambios en las indicaciones de comando entre versiones de AutoCAD.
Referencias
- ^ "AutoLISP" . Consultado el 14 de abril de 2014 .
- ^ "AutoCAD LT frente a AutoCAD" . Archivado desde el original el 15 de abril de 2014 . Consultado el 14 de abril de 2014 .
- ^ a b "Guía del desarrollador de AutoLISP" (PDF) . Consultado el 14 de abril de 2014 .
- ^ "Historia de AutoLISP" .
- ^ "Preguntas frecuentes sobre el módulo de Microsoft Visual Basic para aplicaciones" . Consultado el 14 de abril de 2014 .
- ^ "Soporte VBA en AutoCAD 2011" . Archivado desde el original el 15 de abril de 2014 . Consultado el 14 de abril de 2014 .
- ^ "BricsCAD Compare versiones" . Archivado desde el original el 15 de marzo de 2014 . Consultado el 14 de abril de 2014 .
- ^ "Plataforma CAD IntelliCAD - Características y beneficios" . Consultado el 14 de abril de 2014 .
enlaces externos
- Preguntas frecuentes de AutoLISP