Articulo de referencia

AutoLISP

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 Civil 3D , ...

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 Civil 3D , AutoCAD Map 3D , AutoCAD Architecture y AutoCAD Mechanical . [ 1 ] Ni la interfaz de programación de aplicaciones (API) ni el intérprete para ejecutar código AutoLISP están incluidos en la línea de productos AutoCAD LT (hasta la versión 2023; AutoCAD LT 2024 incluye AutoLISP). [ 2 ] Un subconjunto de funciones de AutoLISP está incluido en la aplicación web AutoCAD basada en navegador.

Características

AutoLISP es un dialecto de lenguaje Lisp pequeño, de ámbito y tipado dinámicos, con recolección de basura , estructura de lista inmutable y símbolos configurables, pero carece de características habituales de Lisp como el sistema de macros , las funciones de definición de registros, los arreglos, las funciones con número variable de argumentos y las vinculaciones `let`. Aparte del lenguaje principal, la mayoría de las funciones primitivas se utilizan 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 como puntos de definición, radios, colores, capas, tipos de línea, etc. AutoCAD carga el código AutoLISP desde archivos .LSP. [ 3 ]

El código AutoLISP puede interactuar con el usuario a través del editor gráfico de AutoCAD mediante funciones primitivas que permiten al usuario seleccionar puntos, elegir objetos en pantalla e introducir números y otros datos. AutoLISP también cuenta con una interfaz gráfica de usuario (GUI) integrada, un mini -lenguaje específico de dominio (DSL), el Lenguaje de Control de Diálogo ( DIAL ), para crear cuadros de diálogo modales con diseño automatizado dentro de AutoCAD. [ 3 ]

Historia

AutoLISP se derivó de una versión temprana de XLISP , creada por David Betz. [ 4 ] El lenguaje se introdujo en AutoCAD versión 2.18 en enero de 1986 y continuó mejorándose en versiones sucesivas hasta la versión 13 en febrero de 1995. Posteriormente, Autodesk descuidó su desarrollo en favor de entornos de desarrollo más populares como Visual Basic para Aplicaciones (VBA), .NET Framework y ObjectARX . Sin embargo, ha seguido siendo el principal lenguaje de personalización de usuario de AutoCAD.

Vital-LISP , una versión considerablemente mejorada de AutoLISP que incluía un entorno de desarrollo integrado (IDE), depurador , compilador y compatibilidad con ActiveX , fue desarrollada y comercializada por el desarrollador externo Basis Software. Vital LISP era un superconjunto del lenguaje AutoLISP existente que añadía acceso similar a VBA al modelo de objetos de AutoCAD, reactores (gestión de eventos para objetos de AutoCAD), compatibilidad general con ActiveX y algunas otras funciones generales de Lisp. Autodesk lo adquirió, lo renombró Visual LISP y lo vendió brevemente como complemento para 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 ha centrado sus esfuerzos en VBA , .NET y C++ . A fecha de 31 de enero de 2014 Autodesk dejó de dar soporte a las versiones de VBA anteriores a la 7.1, como parte de un proceso a largo plazo de cambio de VBA a .NET para la personalización por parte del usuario. [ 5 ] [ 6 ]

AutoLISP cuenta con una gran popularidad, hasta el punto de que otros proveedores de aplicaciones de diseño asistido por ordenador (CAD) lo incorporan a sus productos. Bricscad , IntelliCAD , DraftSight y otros programas ofrecen funcionalidades de AutoLISP, lo que permite a sus usuarios considerarlos como una alternativa a AutoCAD. La mayor parte del desarrollo relacionado con AutoLISP desde AutoCAD 2000 se realiza dentro de Visual LISP, ya que el motor original de AutoLISP fue reemplazado por este último. Existen miles de utilidades y aplicaciones desarrolladas con AutoLISP o Visual LISP (distribuidas como archivos LSP, FAS y VLX). [ 7 ] [ 8 ]

Ejemplos

Un programa sencillo de "Hola mundo" en AutoLISP sería:

( defun hola ( )( princ "\n¡Hola Mundo!" )( principio ))

Observe la última línea dentro de la definición de la función: cuando se evalúa sin argumentos, la princfunció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!" en la línea de comandos, seguido inmediatamente por el valor de retorno de la llamada a princ. Por lo tanto, sin la llamada final a la princfunción, el resultado sería:

Hello World!"\nHello World!"

Esta prin1función también puede utilizarse para lograr el mismo resultado.

Un ejemplo más complejo es:

( defun c:pointlabel ( / pnt )( si ( setq pnt ( getpoint "\nEspecifique el punto: " ))( progn( entmake( lista;; tipo de entidad que se está creando' ( 0 . "PUNTO" );; punto de inserción en el Sistema de Coordenadas Mundiales( cons 10 ( trans pnt 1 0 ))))( entmake( lista' ( 0 . "TEXTO" )( cons 10 ( trans ( cons ( + ( car pnt ) 0.6 )( cdr pnt ))1 0 ));; altura del texto( cons 40 ( getvar 'textsize ));; contenido del texto( cons 1 ( strcat "X:" ( rtos ( car pnt ))" Y:" ( rtos ( cadr pnt ))))))))( principio ))

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 junto a él. El nombre de la función incluye un prefijo especial, c:, que hace que AutoCAD reconozca el resto del nombre de la función pointlabelcomo un comando normal en la línea de comandos. Al escribir 'pointlabel' en la línea de comandos de AutoCAD, se le pedirá al usuario que seleccione un punto, ya sea escribiendo las coordenadas X e Y o haciendo clic en una ubicación del dibujo. La función colocará entonces un marcador en ese punto y creará 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 (SCU) activo. La función no requiere parámetros y contiene una variable local ('pnt').

El ejemplo anterior también podría escribirse para usar los comandos integrados de AutoCAD desde dentro del código AutolISP para crear los objetos de punto y texto, en lugar de crearlos directamente a través de la entmakefunción; sin embargo, este enfoque es susceptible a cambios en los mensajes de comandos entre las versiones de AutoCAD.

Referencias

  1. "AutoLISP" . Consultado el 14 de abril de 2014 .
  2. "AutoCAD LT vs. AutoCAD" . Archivado del original el 15 de abril de 2014. Consultado el 14 de abril de 2014 .
  3. 1 2 "Guía del desarrollador de AutoLISP" (PDF) . Consultado el 14 de abril de 2014 .
  4. "Historia de AutoLISP" . Archivado del original el 26 de enero de 2025. Consultado el 17 de marzo de 2025 .
  5. "Preguntas frecuentes sobre el módulo de Microsoft Visual Basic para aplicaciones" . Consultado el 14 de abril de 2014 .
  6. "Soporte de VBA en AutoCAD 2011" . Archivado del original el 15 de abril de 2014. Consultado el 14 de abril de 2014 .
  7. "Comparar versiones de BricsCAD" . Archivado del original el 15 de marzo de 2014. Consultado el 14 de abril de 2014 .
  8. "Plataforma CAD IntelliCAD: características y ventajas" . Consultado el 14 de abril de 2014 .
  • Preguntas frecuentes sobre AutoLISP
Obtenido de " https://en.wikipedia.org/w/index.php?title=AutoLISP&oldid=1359706072 "