stringtranslate.com

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 , 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 (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 alcance dinámico y tipado dinámico con recolección de basura , estructura de lista inmutable y símbolos configurables, que carece de características habituales de Lisp como sistema de macros , facilidades de definición de registros, matrices, funciones con número variable de argumentos o enlaces let. Aparte del lenguaje principal, la mayoría de las funciones primitivas 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 como puntos de definición, radios, colores, capas, tipos de línea, etc. AutoCAD carga el código de 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, un minilenguaje 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. [3]

Historia

AutoLISP se derivó de una versión anterior de XLISP , creada por David Betz. [4] 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 for Applications (VBA), .NET Framework y ObjectARX . Sin embargo, ha seguido siendo el principal lenguaje de personalización del usuario de AutoCAD.

Vital-LISP , una versión considerablemente mejorada de AutoLISP que incluye un entorno de desarrollo integrado (IDE), un depurador , un 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 agregó 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 renombró Visual LISP y lo vendió brevemente como un complemento a 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 más esfuerzos en VBA y .NET y C++ . A partir del 31 de enero de 2014 , Autodesk finalizó el soporte para versiones de VBA anteriores a 7.1, como 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 ordenador (CAD) lo añaden a sus productos. Bricscad , IntelliCAD , DraftSight y otros tienen funcionalidad de AutoLISP, por lo que los usuarios de AutoLISP pueden considerar su uso como una alternativa a AutoCAD. La mayor parte del desarrollo que involucra a AutoLISP desde AutoCAD 2000 se realiza dentro de Visual LISP, ya 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 (distribuidos como archivos LSP, FAS y VLX). [7] [8]

Ejemplos

Un programa simple Hola mundo en AutoLISP sería:

( defun hola ( )    ( princ "\n¡Hola mundo!" )  ( príncipe ))

Tenga en cuenta la línea final 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 e impresión (REPL), 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 de esto sería:

Hello World!"\nHello World!"

La prin1función también se puede utilizar para lograr el mismo resultado.

Un ejemplo más complejo es:

( defun c:pointlabel ( / pnt )      ( if ( setq pnt ( getpoint "\nEspecificar punto: " ))     ( pronóstico ( hacer ( lista ' ( 0 . "PUNTO" )   ( contras 10 ( trans punto 1 0 ))      ) ) ( hacer ( lista ' ( 0 . "TEXTO" )   ( contras 10 ( trans ( contras ( + ( punto del coche ) 0,6 ) ( punto del cdr )) 1 0 ))            ( contras 40 ( obtener la variable 'tamaño de texto '))    ( cons 1 ( strcat "X:" ( rtos ( punto de coche )) " Y:" ( rtos ( punto de cadr ))))           ) ) ) ) ( príncipe ))

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 junto a él. El nombre de la función incluye un prefijo especial 'c:', que hace que AutoCAD reconozca la función como un comando normal. Al escribir 'pointlabel' en la línea de comandos de AutoCAD, se le solicitará al usuario que seleccione un punto, ya sea escribiendo las coordenadas X e Y o haciendo clic en una ubicación en el dibujo. La función colocará 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 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

  1. ^ "AutoLISP" . Consultado el 14 de abril de 2014 .
  2. ^ "AutoCAD LT vs. AutoCAD". Archivado desde el original el 15 de abril de 2014 . Consultado el 14 de abril de 2014 .
  3. ^ ab "Guía del desarrollador de AutoLISP" (PDF) . Consultado el 14 de abril de 2014 .
  4. ^ "Historia de AutoLISP".
  5. ^ "Preguntas frecuentes sobre el módulo Microsoft Visual Basic para aplicaciones" . Consultado el 14 de abril de 2014 .
  6. ^ "Compatibilidad con VBA en AutoCAD 2011". Archivado desde el original el 15 de abril de 2014 . Consultado el 14 de abril de 2014 .
  7. ^ "Comparación de versiones de BricsCAD". Archivado desde el 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 .

Enlaces externos