Programación En AutoLISP - Donuts

3y ago
113 Views
5 Downloads
941.86 KB
245 Pages
Last View : 11d ago
Last Download : 3m ago
Upload by : Angela Sonnier
Transcription

Programación en AutoLISP1. INTRODUCCIÓNA parte de todo lo visto en cuestión de personalización, AutoCAD 14 ofrece al usuariola posibilidad de crear programas y aplicaciones verticales totalmente funcionales.Estos programas podrán ser distribuidos por el creador, eso sí, siempre correrán bajoAutoCAD.La capacidad para hacer un programa nos lleva mucho más allá de la simplepersonalización de menús o patrones de sombreado, nos lleva a un mundo totalmenteintegrado en AutoCAD desde donde podremos diseñar nuestros propios comandos,manipular dibujos o incluso acceder a la Base de Datos interna del programa.AutoCAD 14 proporciona diversas interfaces de programación de aplicaciones quevamos a comentar ahora de forma somera.1.1. AutoLISP, ADS, ARX, VBA y Visual Lisp1.1.1. Entorno AutoLISPDentro de lo que es la programación existen diversas interfaces para crear programaspara AutoCAD. El más antiguo y, quizá el más utilizado hasta ahora, es AutoLISP.AutoLISP es una adaptación del lenguaje de programación LISP que forma parte íntimae integrada con AutoCAD, esto es, AutoCAD posee internamente un propio intérpretede LISP.El lenguaje LISP está basado en lo que se denominan listas de símbolos. Es unlenguaje de alto nivel (como BASIC) y que, en principio, fue diseñado para lainvestigación en el campo de la inteligencia artificial. AutoLISP es un lenguajeevaluado, es decir, está a un paso entre los lenguajes interpretados, por un lado, y loslenguajes compilados, por otro.Como hemos dicho, AutoCAD provee al usuario de un propio intérprete de AutoLISPinterno. Este intérprete, al que habría que llamarle evaluador, se encarga —precisamente— de evaluar las expresiones incluidas en el código fuente de unprograma. Estos programas pueden introducirse directamente desde la línea decomandos de AutoCAD, o bien cargarse en memoria a partir de un programacompleto escrito es un archivo de texto ASCII. Dichos archivos tendrán habitualmentela extensión .LSP.De la programación en AutoLISP hablaremos largo y tendido en este MÓDULO.1.1.2. Entorno ADS1

ADS (AutoCAD Development System) es un entorno de programación el lenguaje Cpara AutoCAD. Las aplicaciones programadas de esta manera han de ser llamadasdesde un propio programa AutoLISP, ya que AutoCAD las considera como funcionesexternas.El código fuente de estas aplicaciones ha de escribirse y compilarse en un compiladorexterno de C, es decir, AutoCAD no provee de un entorno de programación para estasaplicaciones, como ocurre con AutoLISP o VBA. El programa objeto ejecutable .EXE(normalmente), producto de la compilación del fuente, podrá ser cargado desdeAutoCAD.NOTA: Este entorno está ya obsoleto en la versión 14 y los programas desarrollados enél deberán adaptarse a ARX mediante el entorno ADSRX.1.1.3. Entorno ARXARX (AutoCAD Runtime Extension) es desde la versión 13 de AutoCAD otro entornode programación C que posibilita, al contrario que ADS, una comunicación directa delas aplicaciones con AutoCAD. De esta forma, no es necesaria la intervención deAutoLISP como intermediario. La aplicación Render, en RENDER.ARX, es un ejemplo deprograma en este formato.La no integración de un entorno de programación en C dentro del software deAutoCAD ha hecho que su utilización para desarrollar aplicaciones para el programano esté muy extendida. Es necesario, pues, adquirir un compilador de Ccomplementario para poder desarrollar en este lenguaje aplicaciones ADS o ARX, loque no ocurre con AutoLISP o VBA. Por este motivo, tampoco se tratará en este curso.NOTA: En la versión 14 de AutoCAD existe el comando ARX para cargar, descargar yobtener información sobre aplicaciones ARX sin necesidad de utilizar AutoLISP.1.1.4. Entorno VBAVBA (Visual BASIC for Applications) es un novedoso entorno, incluido en la versión 14,que parece hacer furor entre los programadores últimamente. La programación enVisual BASIC para Windows viene siendo, desde hace unos años, una de lasherramientas más versátiles y, a la vez, más sencillas y utilizadas en el mundo de laprogramación informática. El usuario puede desarrollar sus programas en uncompilador Visual BASIC externo o utilizar el propio módulo VBA que incluye AutoCAD14. Este módulo contiene la sintaxis del lenguaje, un depurador y un entorno dedesarrollo. Así, el programador, puede programar rutinas VBA e ir probándolas en unasesión de AutoCAD mientras se van depurando.VBA será ampliamente tratado en el MÓDULO DOCE.2

1.1.5. Entorno Visual LispA partir de la Versión 14 existe un nuevo entorno de desarrollo denominado Visual Lispque permite realizar aplicaciones en AutoLISP de una manera más rápida y efectiva.Este entorno proporciona herramientas para desarrollar y depurar las rutinas ycompilarlas como aplicaciones ARX. También dispone de su propio evaluador, queemula al de AutoLISP, además de un completo control de codificación y seguridad delas rutinas creadas.El entorno de Visual Lisp es un módulo que se carga bajo demanda. No está incluido enel propio núcleo de AutoCAD, como ocurre con el evaluador de AutoLISP. El nuevoconjunto de funciones incorporadas en Visual Lisp permite trabajar en diferentes áreasy niveles que incluyen funciones añadidas de AutoLISP, funciones de acceso al sistemaoperativo y E/S de archivos, funciones de carga y vinculación de objetos y bases dedatos, almacenamiento directo de listas en un archivo de dibujo, acceso al conjunto deobjetos ActiveX de AutoCAD y tecnología basada en ObjectARX que no necesita lapresencia de AutoCAD para su ejecución.De esta manera, el entorno de Visual Lisp permite a los desarrolladores laprogramación en ARX y ActiveX.2. CARACTERÍSTICAS DE AutoLISPComo ya hemos dicho, LISP (LISt Processing) es un lenguaje de programación que seremonta a los años cincuenta y que fue desarrollado para la investigación deinteligencia artificial. La base de su funcionamiento es el manejo de listas, en lugar dedatos numéricos como otros lenguajes. AutoLISP es una implantación LISP enAutoCAD.Una lista es un conjunto de símbolos. El símbolo es la unidad mínima básica de unalista, y puede ser una variable, una función inherente a AutoLISP, una función deusuario, un dato constante. Las listas elaboradas mediante símbolos son evaluadas yprocesadas para obtener un resultado.Para programar en AutoCAD, este lenguaje proporciona una serie de posibilidadescomo la facilidad para manejar objetos heterogéneos (números, caracteres, funciones,entidades u objetos de dibujo, etcétera), la facilidad para la interacción en un procesode dibujo, la sencillez del lenguaje y su sintaxis, y otras que hacen de él unaherramienta muy útil y sencilla de manejar y aprender.Como también hemos dicho ya, el lenguaje AutoLISP (y LISP) es un lenguaje evaluado,y no interpretado o compilado. Los lenguajes interpretados son leídos palabra apalabra por el ordenador, al ser introducidas, y cada una de ellas convertida a lenguajemáquina. Esto hace que sea sencilla su edición y detección de errores de sintaxis uotros; por el contrario, hace que sean muy lentos (ejemplo: Microsoft QBASIC). Loscódigos de los lenguajes compilados son escritos por completo y, antes de su ejecuciónfinal, es necesario compilarlos, convirtiéndolos así en código fuente ejecutable ycomprensible por la máquina. Este tipo de lenguajes hace que su ejecución sea másrápida y pura pero, en contra, resulta más difícil su depuración (ejemplos: MicrosoftQuickBASIC o Borland C ).3

Los lenguajes evaluados —AutoLISP— están a caballo entre unos y otros. No son tanrápidos como los compilados pero son más flexibles e interactivos que estos. Esposible, por ejemplo, construir un programa con AutoLISP que sea capaz demodificarse a sí mismo bajo determinadas circunstancia; ésta es la base de losllamados Sistema Expertos.El mecanismo evaluador de AutoLISP es la propia lista: conjunto de símbolosseparados entre sí por, al menos, un espacio blanco y encerrados entre paréntesis.Esto es, desde el momento que existe una expresión encerrada entre paréntesis,AutoLISP la evalúa e intenta ofrecer un resultado.AutoLISP es un subconjunto del lenguaje Common LISP. Como ha sido diseñado paratrabajar desde AutoCAD, se han seleccionado las características de LISP másadecuadas para este fin y, además, se han añadido otras nuevas, sobre todo en lamanipulación de objetos de dibujo, acceso a la Base de Datos de AutoCAD einteracción gráfica general.Los programas en AutoLISP son simples archivos de texto ASCII, con la extensiónhabitual .LSP. Una vez hecho el programa, habremos de cargarlo desde el propioeditor de dibujo de AutoCAD. También es posible escribir líneas de código AutoLISPdesde la línea de comandos del programa, como veremos en breve.Es posible la creación de órdenes nuevas que llamen a programas en AutoLISP, asícomo la redefinición de comandos propios de AutoCAD, como por ejemplo LINEA oDESPLAZA. Pero una de las más importantes potencialidades de AutoLISP es el accesodirecto a la Base de Datos interna de AutoCAD. Toda la información de un dibujo,como deberíamos saber, no se guarda como objetos de dibujo en sí, o sea, cuandosalvamos un .DWG, en disco no se guardan los círculos, líneas, etcétera, sino unarelación o base de datos donde se dice dónde aparece un círculo o una línea, con quécoordenadas de origen y final, con qué radio o diámetro, tipo de línea, color.Podremos pues desde AutoLISP acceder a dicha base de datos para modificarla,editarla o para exportar datos, por ejemplo, a una base de datos externa.2.1. Tipos de objetos y datos en AutoLISPAtendiendo a sus características podemos definir varios tipos de objetos y datos enAutoLISP, que son los de la tabla siguiente:Objeto o dato ------------------------ -------------------Lista ---------------------------------- Objeto compuesto de un paréntesis de aper--------------------------------------- tura, uno o más elementos separados por, al--------------------------------------- menos, un espacio en blanco y un paréntesis--------------------------------------- de cierre. Los elementos de una lista pueden--------------------------------------- ser símbolos, valores concretos (constantes--------------------------------------- numéricas o cadenas) o listas incluidas. Por--------------------------------------- ejemplo: (DEFUN seno (x) (SETQ xr (* PI (/x4

180.0))) (SETQ--------------------------------------cinco ---------s (SIN xr))), se trata de una lista que contienetos: una función inherente de AutoLISPDEFUN, un nombre de función de usuarioseno, una lista con un único elemento (x) ydos listas SETQ con tres elementos cada una.Elemento ----------------------------- Cualquiera de los componentes de una lista.Símbolo ------------------------------- Cualquier elemento de una lista que no sea--------------------------------------- una constante. Puede ser el nombre de una--------------------------------------- variable, un nombre de función definida por--------------------------------------- el usuario o un nombre de función de AutoLISP.Enteros ------------------------------- Valores numéricos enteros, sin punto deci--------------------------------------- mal. Internamente son números de 32 bits--------------------------------------- con signo, sin embargo, en la -- de datos con AutoCAD son valores de 16 bits--------------------------------------- con signo, comprendidos por lo tanto entre--------------------------------------- -32768 y 32767.Reales -------------------------------- Valores numéricos con coma flotante de do--------------------------------------- precisión. Esto representa un mínimo de 14--------------------------------------- dígitos representativos. Se pueden expresar--------------------------------------- en notación científica exponencial mediante e o E.Cadenas ----------------------------------- Valores textuales que contienen cadenas de--------------------------------------- caracteres en código ASCII. Deben ir entre--------------------------------------- comillas y se permite una longitud máxima--------------------------------------- de 132 caracteres. Se pueden construir cadenas--------------------------------------- mayores como veremos.Descriptores de archivo --------------- Valores que representan un archivo abierto--------------------------------------- para lectura o escritura.Nombres de objetos de dibujo ---------- Valores que representan el "nombre" hexade--------------------------------------- cimal de un objeto de la Base de Datos.Conjuntos designados de AutoCAD ----- Valores que representan un conjunto de se--------------------------------------- lección de objetos de dibujo.Funciones de usuario --------------------- Símbolo que representa el nombre de una--------------------------------------- función definida por el usuario.Función inherente o subrutina ----------- Símbolo con el nombre de una función prede--------------------------------------- finida de AutoLISP. Se suelen denominar con--------------------------------------- la abreviatura inglesa subrs. Pueden ser in--------------------------------------- ternas o externas.5

2.2. Procedimientos de evaluaciónLa base de todo intérprete de LISP es su algoritmo evaluador. Éste analiza cada líneade programa y devuelve un valor como resultado. La evaluación sólo se realizarácuando se haya escrito una lista completa y ésta podrá ser cargada desde un archivode texto o tecleada directamente en la línea de comandos de AutoCAD 14.El primer elemento de la lista es comparado con todos los nombres de funcionesinherentes base o subrs internas de AutoLISP, con todos los nombres de subrsexternas cargadas desde aplicaciones ADS o ARX y en su caso con todos los nombresde funciones de usuario cargadas en memoria. Si el nombre es reconocido, se realizala evaluación de la expresión de AutoLISP. Esta puede consistir en asignar un valor auna variable, cargar en memoria una función de usuario, escribir un resultado enpantalla o en un archivo, dibujar un objeto gráfico, etc.El primer elemento de la lista debe ser por tanto un nombre de función. El resto deelementos se consideran argumentos de dicha función. La evaluación en AutoLISP serealiza de acuerdo a las siguientes reglas.Primera:Las listas se evalúan quedando determinadas por el primer elemento. Si éste es unnombre de función inherente o subrutina, los elementos restantes de la lista sonconsiderados como los argumentos de esa función. En caso contrario se consideracomo un nombre de función definida por el usuario, también con el resto de elementoscomo argumentos. Cuando los elementos de una lista son a su vez otras listas, éstasse van evaluando desde el nivel de anidación inferior (las listas más "interiores"). Elvalor resultante en cada evaluación de las listas "interiores", es utilizado por las listas"exteriores". Por ejemplo:(SETQ sx (SIN (* PI (/ x 180.0))))La lista más "interior" contiene como primer elemento el nombre de la función deAutoLISP / que realiza el cociente o división del siguiente elemento entre los restantes.La evaluación de dicha lista devuelve el resultado del cociente, en este caso el valorcontenido en la variable x dividido entre el número real 180.0. Dicho valor es utilizadocomo elemento en la lista circundante que empieza por la función de AutoLISP * querealiza una multiplicación o producto. Esta lista se evalúa ofreciendo como resultado elproducto de PI (3,14159) por el valor anterior. A su vez el resultado interviene comoargumento en la lista que empieza por la función de AutoLISP SIN, que es evaluadaobteniéndose el seno. Este interviene por último como argumento de la lista másexterior que empieza por la función de AutoLISP SETQ , cuyo resultado es asignar oalmacenar en la variable sx el valor del seno. Este valor es devuelto por la lista deSETQ como resultado final.Segunda:Puesto que cada lista contiene un paréntesis de apertura y otro de cierre, cuandoexisten listas incluidas en otras, todos los paréntesis que se vayan abriendo debentener sus correspondientes de cierre. Si se introduce desde el teclado una expresión enAutoLISP a la que falta por cerrar algún paréntesis, se visualiza un mensaje del tipo n 6

donde n es un número que indica cuántos paréntesis faltan por cerrar. Se puedenintroducir por teclado esos paréntesis y subsanar el error. Por ejemplo:Comando: (SETQ sx (SIN (* PI (/ x 180.0))2 ))0.523599Tercera:También es posible evaluar directamente un símbolo (extraer por ejemplo el valoractual contenido en una variable), introduciendo por teclado el signo de cerraradmiración seguido del nombre del símbolo. Esta evaluación se puede producir inclusoen mitad de un comando. Por ejemplo, para suministrar como ángulo para un arco elvalor contenido en la variable x, se responde a la solicitud de AutoCAD con !x. Porejemplo:Comando: !sx0.523599Cuarta:Los valores enteros, reales, cadenas de texto y descriptores de archivos, devuelven supropio valor como resultado. Los nombres de funciones inherentes o subrutinas deAutoLISP devuelven un número interno hexadecimal (suele cambiar de una sesión dedibujo a otra). Por ejemplo:!72.5 devuelve 72.5!"Inicio" devuelve "Inicio"!SETQ devuelve Subr: #1a93e24 Quinta:Los símbolos de variables participan con el valor que contienen (que les está asociado)en el momento de la evaluación. Por ejemplo:!x devuelve 30!sx devuelve 0.523599Sexta:Determinadas funciones de AutoLISP pueden devolver un valor nulo, que se representamediante la expresión nil. Por ejemplo:Comando: (PROMPT "Bienvenido a AutoLISP\n")Bienvenido a AutoLISPnil7

La función PROMPT escribe en la línea de comando el mensaje especificado y devuelvenil. El código \n equivale a INTRO.2.3. Archivos fuente de programasLas expresiones contenidas en un programa de AutoLISP pueden introducirsedirectamente desde el teclado durante la edición de un dibujo de AutoCAD, escribirlasen un fichero de texto ASCII o ser suministradas por una variable del tipo cadena,como ya se ha dicho varias veces.Para una correcta evaluación, las expresiones deben cumplir unos requisitos desintaxis, que se pueden resumir en los siguientes puntos:— Una expresión puede ser tan larga como se quiera. Puede ocupar varias líneas delarchivo de texto.— Los nombres de símbolos pueden utilizar todos los caracteres imprimibles (letras,números, signos de puntuación, etc.) salvo los prohibidos que son: ( ) . ' " ;— Los nombres de símbolos no son sensibles a las mayúsculas. Así, seno y SENOrepresentan el mismo nombre. Los nombres pueden contener números, pero no estarformados exclusivamente por números. Así, 1pt, pt-1, p12 son válidos como nombresde variables, pero no 21, que será interpretado como un valor numérico constante.— Los caracteres que terminan un nombre de símbolo o un valor explícito (unaconstante numérica o de texto) son: paréntesis de apertura y cierre, apóstrofo,comillas, punto y coma, espacio en blanco o final de línea en el archivo. Estoscaracteres sirven de separación entre elementos de una lista.— Los espacios en blanco de separación entre símbolos son interpretados como un soloespacio entre cada par de símbolos. Se recuerda que es necesario un espacio enblanco para separar un símbolo del siguiente, siempre que no haya paréntesis,apóstrofo, comillas o punto y coma. Debido a la longitud de las expresiones deAutoLISP y a la profusión de paréntesis que dificultan su lectura, suele ser normahabitual realizar sangrados en las líneas del archivo de texto, para resaltar losparéntesis interiores de los exteriores. Todos los espacios añadidos son interpretadoscomo uno solo.—Los valores explícitos (constantes) de números pueden empezar con el carácter o que es interpretado como el signo del número.— Los valores de constantes de números reales deben empezar con una cifr

El entorno de Visual Lisp es un módulo que se carga bajo demanda. No está incluido en el propio núcleo de AutoCAD, como ocurre con el evaluador de AutoLISP. El nuevo conjunto de funciones incorporadas en Visual Lisp permite trabajar en diferentes áreas y niveles que incluyen funciones añadidas de AutoLISP, funciones de acceso al sistema

Related Documents:

AutoLISP Programming Techniques AutoLISP Programming Techniques Lesson One in the CADalyst/University of Wisconsin Advanced AutoLISP Programming course covers AutoLISP program structure & development. by Anthony Hotchkiss, Ph.D, P.Eng. About this course. Advanced AutoLISP Programmin

Connection Network: Dunkin' Donuts Connection Matrix: Dunkin' Donuts Strategy per Platform: Dunkin' Donuts Responding to complaints: Dunkin' Donuts Overall Social Media Strategy: Dunkin' Donuts Audience Analysis Scorecard Winner Revenue Suggestions for Starbucks Dunkin' Donuts Correction Example Suggestions for Dunkin' Donuts

El nombre verdadero de la programaci on Una concepci on de ensenanza de la programaci on para la sociedad de la informaci on Pablo E. Mart nez L opez*, Eduardo A. Bonelli**, and Federico A. Sawady O’Connor*** Universidad Nacional de Quilmes Cuando sepas re

AutoLISP Functions AutoLISP Functions The following is a catalog of the AutoLISP functions available in AutoCAD . The functions are listed alphabetically. In this chapter, each listing contains a brief description of the function's use and a function syntax statement showing the order and the type of arguments required by the function.File Size: 1MB

3.1 Handling of string in AutoLISP : AutoLISP is basically a graphics mode output program tool but text also forms a part of drawings and diagrams, so handling the string is also a important part of AutoLISP programming. String is nothing but a sequence of alphanume

AutoLISP (1) Pripremio Dragan Cvetković AutoLISP je poseban deo LISP programskog jezika, koji se isporučuje unutar programskog paketa za projektovanje AutoCAD. AutoLISP omogućava korisnicima AutoCAD-a da pišu i kreiraju makroe i funkcije u višem programskom jeziku, što je izuzetno p

The Franchisor is DUNKIN' DONUTS FRANCHISING LLC ("Dunkin' Donuts" "we" or "DD"). We develop, operate and franchise retail stores utilizing the Dunkin' Donuts system in single-brand stores. Our franchised stores sell Dunkin' Donuts coffee, donuts, bagels, muffins, compatible bakery products, sandwiches, and other beverages.

“ASTM D 4255/D 4255M The standard test method for in-plane shear properties of polymer matrix composite materials by the rail shear method ”. This set-up, however, requires drilling holes through the specimen. In this study, a new design based on friction and geometrical gripping, without the need of drilling holes through the composite specimen is presented. Quasi-static tests have been .