AutoLISP

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

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 Arquitectura y AutoCAD Mechanical. Ni la interfaz de programación de aplicaciones (API) ni el intérprete para ejecutar el código de AutoLISP están incluidos en la línea de productos de AutoCAD LT. Se incluye un subconjunto de funciones de AutoLISP en la aplicación web de AutoCAD basada en navegador.

Características

AutoLISP es un dialecto de lenguaje Lisp pequeño, de ámbito dinámico y tipado dinámicamente con recolección de basura, estructura de lista inmutable y símbolos configurables, que carece de funciones Lisp regulares como sistema de macros, facilidades de definición de registros, matrices, funciones con un número variable de argumentos o dejar ataduras. Además del lenguaje principal, la mayoría de las funciones básicas son para geometría, acceso a la base de datos DWG interna de AutoCAD o 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 tales como puntos de definición, radios, colores, capas, tipos de línea, etc. AutoCAD carga AutoLISP código de archivos.LSP.

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 o un lenguaje específico de dominio (DSL), el lenguaje de control de diálogo, para crear cuadros de diálogo modales con diseño automatizado, dentro de AutoCAD.

Historia

AutoLISP se derivó de una versión anterior de XLISP, creada por David Betz. El lenguaje se introdujo en la versión 2.18 de AutoCAD en enero de 1986 y continuó mejorándose 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, se ha mantenido como el principal lenguaje de personalización de usuarios de AutoCAD.

Vital-LISP, una versión considerablemente mejorada de AutoLISP que incluye un entorno de desarrollo integrado (IDE), depurador, compilador y compatibilidad con ActiveX, fue desarrollada y vendida por el 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), compatibilidad general con ActiveX y algunas otras funciones generales de Lisp. Autodesk lo compró, lo rebautizó como 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 mejoras importantes en Visual LISP y se ha centrado más en VBA,.NET y C++. A partir del 31 de enero de 2014, Autodesk ya no admite versiones de VBA anteriores a la 7.1. Esto es parte de un proceso a largo plazo de cambio de VBA a.NET para la personalización del usuario.

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 de AutoLISP, por lo que los usuarios de AutoLISP pueden considerar usarlos como una alternativa a AutoCAD. La mayor parte del desarrollo relacionado con 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).

1955 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 2020
LISP 1, 1,5, LISP 2(abandonado)
Maclisp
Interlisp
MDL
Lisp Machine Lisp
Plan R5RS R6RS R7RS pequeño
NIL
ZIL (Zork Implementation Language)
Franz Lisp
Lisp común ANSI standard
Le Lisp
MIT Plan
T
Chez Scheme
Emacs Lisp
AutoLISP
PicoLisp
Gambit
EuLisp
ISLISP
OpenLisp
PLT Plan Racket
GNU Guile
Visual LISP
Clojure
Arc
LFE
Hy

Ejemplos

Un sencillo programa Hello world en AutoLISP sería:

()defun Hola. () ) ()princ "nHello World!") ()princ))

Observe la línea final dentro de la definición de la función: cuando se evalúa sin argumentos, la función princ devuelve un símbolo nulo, que no se muestra en la interfaz de línea de comandos de AutoCAD. Como la línea de comando de AutoCAD funciona como un bucle de lectura, evaluación e 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 función princ, el resultado de esto sería:

Hello World!"nHello World!"

La función prin1 también se puede usar para lograr el mismo resultado.

Un ejemplo más complejo es:

()defun c:pointlabel () / pnt ) ()si ()setq pnt ()punto "nSpecify point: ") ()progn ()entmake ()lista '()0 . "POINT") ()cons 10 ()trans pnt 1 0) ) ) ()entmake ()lista '()0 . "TEXTO") ()cons 10 ()trans ()cons ()+ ()coche pnt) 0.6) ()cdr pnt) 1 0) ()cons 40 ()getvar 'textsize) ()cons 1 ()strcat "X:" ()rtos ()coche 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 determinado, 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. El usuario, al teclear 'pointlabel' en la línea de comandos 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. Luego, 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 de usuario (UCS) activo. La función no requiere parámetros y contiene una variable local ('pnt').

El ejemplo anterior también podría escribirse usando los comandos integrados de AutoCAD para lograr el mismo resultado; sin embargo, este enfoque es susceptible de cambios en las indicaciones de comando entre las versiones de AutoCAD.

Contenido relacionado

Referencia (informática)

En la programación de computadoras, una referencia es un valor que permite que un programa acceda indirectamente a un dato en particular, como el valor de...

DEC Alfa

Programación imperativa

En informática, la programación imperativa es un paradigma de programación de software que utiliza declaraciones que cambian el estado de un programa. De...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save