www.lci.ulsa.mx material pdf autolisp

Upload: everardo-porras

Post on 18-Jul-2015

112 views

Category:

Documents


10 download

TRANSCRIPT

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

CONTENIDOPREMBULO ESTRUCTURA GENERAL DEL AUTOCAD R12 ESTRUCTURA DE DIRECTORIOS REQUERIMIENTOS DE AUTOLISP OBJETIVOS 5 5 6 7 7

INTRODUCCIN

7

ALCANCES Y LIMITACIONES DEL AUTOLISP

8

TIPO DE VARIABLES EN AUTOLISP LISTAS: TOMOS: NOTACIN DE VARIABLES EN AUTOLISP

8 9 9 9

VALIDACIN DE VARIABLES EN AUTOLISP SET: SETQ: CREACIN DE PROGRAMAS SUBRUTINAS, COMANDO COMMAND: INSTRUCCIONES PARA CREAR PROGRAMAS Y SUBRUTINAS DEFUN : A) CUANDO SE DEFINE EL NOMBRE DE UN PROGRAMA: B) CUANDO DE DEFINE ALGUNA SUBRUTINA: REPEAT: WHILE:Capacitacin

10 10 11 12 13 14 14 14 15 15 16Pgina 1

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

MANEJO DE MENSAJES ALERT : ( ALERT "MENSAJE"). PROMPT : ( PROMPT "MENSAJE ) FUNCIONES EN AUTOLISP FUNCIONES DE ENTRADA DE DATOS GETANGLE: (GETANGLE "DAME DOS PUNTOS") GETORIENT: (GETANGLE "DAME DOS PUNTOS") GETDIST: (GETDIST "DAME UNA DISTANCIA") GETPOINT : (GETPOINT "DAME UN PUNTO") GETREAL : (GETREAL "NMERO") GETINT : (GETINT "LETRERO DE TEXTO") SSGET: (SETQ VARIABLE (SSGET)) GETVAR : (GETVAR "VARIABLE") GETSTRING: (GETSTRING "TEXTO") EN GENERAL: FUNCIONES MATEMTICAS FUNCIONES BASICAS A) REFERENTES AL LUGAR QUE OCUPAN LOS DATOS EN UNA LISTA CAR: CDR: LAST: B) REFERENTES A LAS CARACTERSTICAS DE UNA LISTA LENGTH : FUNCIONES ARITMTICAS ABS : EXP : EXPT : GCD : LOG: MAX : MIN : REM : SQRT: (ABS N) (EXP N) (EXPT N P) (GCD A B C) (LOG N) (MAX A B C ...) (MIN A B C ...) (REM X Y) (SQRT X)

16 16 17 18 18 18 18 18 19 19 19 19 20 20 20 21 22 22 22 22 22 22 22 23 23 23 24 24 24 24 25 25 25 25 25 26 26Pgina 2

FUNCIONES TRIGONOMTRICAS ATAN : COS : SIN :Capacitacin

(ATAN X) (COS X) (SIN X)

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

FUNCIONES DE TIPO RELACIONAL Y CONDICIONAL IF : (IF CONDICION VERDERO FALSO)

26 26 27 27 27 28 28 28 29 29 29 29 29 29 30 30 30 30 30 31 31 31 31 32 32 32 32 33 33 33

FUNCIONES DE TIPO LGICO (AND, OR) AND: OR: FUNCIONES DE CADENA STRCASE : STRCAT : STRLEN: SSLENGTH: (STRCASE CADENA ARGUMENTO) (STRCAT CADENA1 CADENA2) (STRLEN TEXTOS...) (SSLENGTH SS)

FUNCIONES DE CONVERSIN ASCII (ASCII CADENA) ATOF (ATOF TEXTO) ATOI (ATOI TEXTO) CHR (CHR NUMERO) FIX (FIX NUMERO) FLOAT (FLOAT NUMERO) ITOA RTOS (RTOS NUMERO FORMATO DECIMALES) FUNCIONES DE ENTRADA Y SALIDA OPEN CLOSE (CLOSE ARCHIVO) FINDFILE (FINDFILE ARCHIVO) LOAD (LOAD"PROGRAMA.LSP") READ (READ CADENA) READ-LINE (READ-LINE ARCHIVO) WRITE-LINE (WRITE-LINE ARCHIVO) FUNCIONES DE DEPURACIN TRACE (TRACE FUNCIN) UNTRACE (UNTRACE FUNCIN)

Capacitacin

Pgina 3

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

FUNCIONES VARIAS TEXTSCR (TEXTSCR) GRAPHSCR (GRAPHSCR) VER (VER) QUIT, EXIT

33 33 33 33 33

Capacitacin

Pgina 4

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

CURSO DE AUTOLISP

PREMBULOESTRUCTURA GENERAL DEL AUTOCAD R12 El presente desarrollo tiene como objetivo el conocer ampliamente la forma en que estn interrelacionados los archivos del programa, directorios, mens, utileras e iconos; todo esto para facilitar la familiarizacin del usuario con el paquete y poderle permitir detectar errores y fallas, as como una gil localizacin de las mismas. Las extensiones manejadas por AUTOCAD, son las siguientes: *.CFG: Parmetros de configuraciones del programa. *.DOC: Informacin acerca del programa, tal como novedades, actualizaciones y consejos previos por parte de AUTODESK puede citar tambin a los archivos *.TXT. *.HLP: Informacin de ayuda al usuario. *.MNU: Mens adicionales, disponibles para ser usados. (Adems de las extensiones *.MND y *.MNx) *.DWG: Archivos de trabajo o de dibujo. *.LSP: utileras y programas en AUTOLISP. *.BAK: Respaldos de los archivos de trabajo. * SHX: Tipos de letras. *.DRV: Drivers y accesorios para la configuracin del paquete *.SLD: Archivos no editables con imgenes planas de dibujos, como los iconos de los pull down mens. Algunos archivos importantes, son todos aquellos del formato ACAD*.*, ya que se trata de archivos que cuentan con parmetros de funcionamiento propios del programa, se pueden citar los siguientes: ACADR12.BAT: Es el archivo que ejecuta al ACAD.EXE, cargando en previamente las opciones y rutas de bsqueda de archivos. memoria

ACAD.CFG: Es el archivo en el que principalmente se guarda la informacin referente a la configuracin del programa, es aqu donde se encuentran los parmetros que se seleccionan al momento de instalar el paquete o bien cuando se ejecuta el comando ("CONFIG").

Capacitacin

Pgina 5

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

ACAD.DWG: Es el archivo en el que se encuentran las opciones que por default siempre estn activadas al iniciar un dibujo nuevo, tales como la opcin de desactivar las marcas de la pantalla con el comando BLIPMODE (OFF), para evitar llenar nuestra pantalla de marcas (cruces) cada vez que se ejecute algn comando (EJ. Line) ACAD.ERR: Archivo que es creado cuando se produce un error de funcionamiento del programa, se trata de un archivo que es posible editarlo desde sistema operativo para conocer cual fue la falla. Por lo general se crea y/o modifica cuando se realizan multitareas (OS SHELL) o errores atribuibles a la estructura fsica del equipo o del paquete, tales como errores al guardar informacin que provocan el paro drstico del sistema. ACAD.EXE: Archivo ejecutable con el que corre el programa, debiendo de ser invocado por el ACADR12.BAT para dar de alta las configuraciones de rutas de bsqueda de informacin. ACAD.HLP: Es el archivo general. en el que se encuentran las ayudas principales y de tipo

ACAD.HDX: Informacin referente a la lista de comandos. ACAD.LIN: Archivo que contiene la informacin referente a los tipos de lnea manejados por AUTOCAD. ACAD.MNU: Es en este archivo donde se encuentra la informacin referente a los "Pull Down Menus" (nombres, sub-menus, iconos, opciones) y algoritmos de validacin del Mouse o tableta digitalizadora. ACAD.PAT: Archivo donde se localiza la informacin referente a los patrones de ashurado. ACADR12.LSP: Archivo en el que se encuentra la informacin referente a utileras y programas en AUTOLISP que AUTOCAD siempre carga cada vez que se inicia un dibujo nuevo o se abre algn archivo. P.ej: Personalizacin de comandos. ESTRUCTURA DE DIRECTORIOS ACADCFG: Subdirectorio que contiene la informacin de los parmetros de configuracin del paquete. ACADDRV: Subdirectorio que contiene la informacin referente a los dispositivos auxiliares de la configuracin (P.ej: Listas de impresoras, tipos de mouses, etc.) ADS: Subdirectorio que contiene la informacin referente a ADS (Auto Drawing Surface). utileras hechas en

Capacitacin

Pgina 6

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

FONTS: Es el subdirectorio donde se encuentra la informacin referente a estilos y tipos de letras. SUPPORT: Es el subdirectorio en el cual se encuentran los principales archivos que requiere el programa para poder funcionar ptimamente.

REQUERIMIENTOS DE AUTOLISPPara un mejor aprovechamiento del presente curso, se requiere el conocimiento del funcionamiento general del programa AUTOCAD, su estructura; as como el dominio del 80% de los comandos de dibujo ms empleados en 2 y 3 dimensiones.

OBJETIVOS Extender las posibilidades grficas del AUTOCAD para fines prcticos, como una herramienta auxiliar en el diseo y solucin de problemas. Dar a conocer a los alumnos los alcances y las limitaciones de la programacin en AUTOLISP. Al trmino del presente curso, los alumnos sern capaces de disear aplicaciones especificas de acuerdo a sus necesidades grficas y de dibujo en AUTOCAD.

INTRODUCCINAUTOLISP es un lenguaje de programacin derivado del lenguaje LISP. Este lenguaje es utilizado para generar rutinas orientadas al uso especifico del AUTOCAD. Permite desarrollar programas y funciones para el manejo de entidades de tipo grfico. Los programas hechos en AUTOLISP aumentan los comandos y aplicaciones del AUTOCAD, creando as una solucin optima para cada problema en particular, desde el simple trazo de una lnea hasta el diseo de algn plano o pieza, llegando a clculos complejos, conviertindose en gran ayuda para las aplicaciones en ingeniera. Entre las aplicaciones ms notables del AUTOLISP se pueden citar: Dibujo de figuras bidimensionales con caractersticas especficas; Creacin de objetos tridimensionales; Generacin de grficas de funciones basndose en ecuaciones; Clculos de reas y tablas de datos, combinacin de los comandos de dibujo para realizar determinado tipo de tareas.

Capacitacin

Pgina 7

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

ALCANCES Y LIMITACIONES DEL AUTOLISPComo puede darse cuenta el usuario, dicho lenguaje de programacin es propio del programa de CAD de AUTODESK (AUTOCAD), por lo que su uso se limita a implementar aplicaciones especficas de acuerdo a las necesidades del usuario a un problema de diseo o de dibujo determinado, valindose de todas la funciones y herramientas de dibujo que proporciona el AUTOCAD, logrando obtener soluciones muy poderosas dentro de este ambiente. En general, dicho lenguaje equivale a realizar las denominadas "MACROS", pero en un ambiente grfico, donde se pueden automatizar series de labores y tareas muy repetitivas con programas simples que ahorran tiempo de trabajo en dibujo y proporcionan una mayor exactitud. Para aquellos usuarios que estn muy familiarizados con la programacin en los lenguajes BASIC y C, el AUTOLISP les resultara muy semejante y de gran simplicidad, ya que su estructura, forma de validar variables, algoritmos y secuencias lgicas son muy parecidas; con las distincin de que aqu por lo general se emplearan artificios para obtener elementos de dibujo de AUTOCAD, tales como lneas, arcos, polilneas, elipses, etc. Hay que tomar en cuenta que el nmero ms pequeo que se puede manejar dentro de AUTOLISP es: -32768 y el ms grande: +32767, lo cual se debe de tener siempre presente cuando se editen frmulas o se validen variables, ya que de existir un nmero fuera de ese rango, se cerrara a los valores anteriormente mencionados. En comparacin con otros lenguajes de programacin, en AUTOLISP no se nombran los renglones de programa con algn nmero que los anteceda para registrarlos (P.ej: BASIC, FORTRAN), sino que los programas se efectan de acuerdo al orden en que estn invocadas sus subrutinas y a su vez, en el orden en que se escriben los renglones.

TIPO DE VARIABLES EN AUTOLISPAntes de cualquier cosa, hay que tener en cuenta que AUTOLISP difiere entre el uso de las maysculas y minsculas, siendo muy importante considerar esto cuando se definan variables o nombres de subrutinas. Por lo que se recomienda que siempre se escriban este tipo de datos con MAYSCULAS para facilitar la programacin y evitar posibles confusiones en el uso de la notacin. El espacio para almacenar variables de tipo alfanumrico, es decir de texto es ilimitado, ya que AUTOLISP registra dicha informacin en forma dinmica, siendo recomendable no abusar en la extensin de dichos contenidos, para evitar complejidad en el manejo de la informacin.Capacitacin Pgina 8

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

En cuanto a las variables numricas, se pueden tener hasta 14 cifras significativas de precisin. Los principales tipos de variables empleados, y sus formas de expresin ms sencillas son los siguientes: LISTAS: Son cadenas de elementos, entre parntesis, separados entre s por espacios. Dichos elementos pueden ser variables de tipo numrico, alfanumrico, o validaciones de las mismas. Ej. (A B C D E) Es una lista que contiene 5 elementos, que son: A, B, C, D y E, separados cada uno de ellos entre parntesis y todos ellos entre parntesis. Aqu dichos elementos pueden ser variables. Es indispensable saber que todas las validaciones de variables en AUTOLISP siempre se ejecutaran a manera de LISTA, ya que los datos almacenados en una variable pueden estar separados por espacios y ser ms de uno slo. TOMOS: Son por lo general los elementos de las listas, y se identifican por que no existen espacios entre sus caracteres. Ej. (ABC DEF)

Es una lista formada por dos tomos (ABC y DEF) de 3 caracteres cada uno.

NOTACIN DE VARIABLES EN AUTOLISPEn cuanto al clculo y realizacin de operaciones matemticas que se refiere, el AUTOLISP requiere que las frmulas se editen considerando la notacin polaca inversa. Dicha notacin, consiste en que al momento de realizar una operacin, primero se edita el operando (suma, resta, multiplicacin, divisin), y luego los nmeros o variables a intervenir, cabe sealar que dicho criterio debe de ser por parejas separadas por parntesis. Como se ver ms adelante, la instruccin SETQ nos permite guardar en una variable el contenido de otra o de alguna serie de operaciones, y se vuelve indispensable su uso, cuando se editan frmulas. Por ejemplo, si se quisiera en AUTOLISP dar la ecuacin de la recta, que es Y = M*X + B, la lnea de nuestro programa que incluye dicha operacin quedara de la siguiente manera: (SETQ Y (+ (* M X) B))

Capacitacin

Pgina 9

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

Hay que notar, que para editar las frmulas, hay que hacer un uso muy extensivo y apropiado de los parntesis para que la frmula exprese lo que necesitamos. En este caso, en el primer juego de parntesis se hace el producto de M * X, en el segundo se suma el resultado del primero al valor de la variable B, y posteriormente en la variable Y se almacena toda la operacin completa. Otro ejemplo, puede ser el hecho de que se requiera emplear la frmula para el clculo de la pendiente de la recta, M = (Y2 - Y1) / (X2 - X1), la lnea de programacin en AUTOLISP es la siguiente: (SETQ M (/ (- Y2 Y1) (- X2 X1))) Es realmente importante, notar que en AUTOLISP, toda lnea de programacin inicia con un parntesis y concluye con otro, pudiendo existir a su vez combinaciones de instrucciones dentro de otras, respetando la sintaxis adecuada, tal y como se ve en el ejemplo anterior, en donde por parntesis se separan las operaciones que se realizan, siendo 3 en total, cuyo resultado se almacena en la variable M.

VALIDACIN DE VARIABLES EN AUTOLISPSe le conoce como validacin, al proceso de almacenar determinada informacin en una variable, ya sea de tipo numrico o de texto (alfanumrico). Dicha informacin a guardar puede ser un valor dado desde el programa por el usuario, o el resultado de alguna operacin. (Ver los ejemplos anteriores). Cuando no se ha definido el valor de una variable, AUTOLISP asume que su contenido es "NIL", que equivale a nulo, es decir, que no se ha realizado el proceso de validacin de la misma; entendiendo a "NIL" como el hecho de que dicha variable ni siquiera tiene el valor CERO y mucho menos alguno de cualquier otro tipo. Cuando por algn error se edita mal alguna frmula, escribiendo mal el nombre de una variable, dicha variable errnea estar validada con "NIL" (puesto que el usuario o el programador no la han definido con un valor determinado), lo que impedir realizar operaciones de tipo numrico con ella, causando errores en nuestro programa. Por lo que se aconseja en las primeras lneas de nuestro programa definir los valores iniciales de las variables que se necesiten. Las instrucciones fundamentales que nos permiten dar valores a las siguientes: variables, son las

SET: Es una instruccin que asigna el valor de una determinada expresin a un smbolo determinado.

Capacitacin

Pgina 10

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

Su sintaxis es la siguiente: (SET SIMBOLO EXPRESION) Donde el smbolo es el nombre de alguna variable, y expresin es alguna frmula editada segn los criterios vistos anteriormente o bien algn valor de tipo numrico indispensablemente. P.ej: si quisiramos almacenar el valor "5" en la variable "A", la lnea de nuestro programa es la siguiente: (SET A 5) El inconveniente de emplear esta instruccin consiste en que slo se puede asignar valor a una variable por cada comando, es decir, por cada lnea de programacin, siendo este de tipo numrico exclusivamente (dato o frmula). SETQ: Funciona de manera semejante a SET, pero con la diferencia de que permite validar varias variables al mismo tiempo, haciendo esto a la manera de una LISTA, pudiendo guardar textos en las variables. Su sintaxis es la siguiente: (SETQ SIMBOLO1 EXPRESION1 SIMBOLO2 EXPRESION2 ... ) Ej. Si se quisiera guardar el texto: "SALLE" en la variable "B", y el nmero "5" en la variable "A", empleando una sola lnea, dicha lnea de nuestro programa seria la siguiente: (SETQ A 5 B "SALLE") Aqui se tienen 4 tomos en una lista, donde con el comando SETQ realizamos la validacin de las variables de inters por parejas, as que es importante considerar el orden que se emplea en escribir dicha informacin. Es importante notar, que si la palabra SALLE no se escribiera entre comillas en la lnea de programacin en vez de almacenar dicho texto en la variable "B", lo que hara seria: B=SALLE, donde SALLE es el nombre de alguna otra variable. Anlogamente, si quisiramos validar en una misma lnea: A=1, B=2, C=3, nuestra lnea de programacin sera: (SETQ A 1 B 2 C 3)

Capacitacin

Pgina 11

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

CREACIN DE PROGRAMASEl archivo del programa se deber hacer en algn procesador de textos o editor de sistema operativo, salvndose en la modalidad de slo texto con extensin *.lsp, un ejemplo puede ser el siguiente. ; UNIVERSIDAD LA SALLE ; PROGRAMA HECHO POR ..... (DEFUN C:NOMBRE() (ALGORITMOS O SECUENCIAS) ... ... ) En donde "NOMBRE" es el nombre con el cual deseamos que sea reconocido nuestro programa como un comando adicional del AUTOCAD, algoritmos y secuencias son procedimientos de programacin que se requieran para inicializar una serie previa de instrucciones (tales como dar valores a variables, definir lmites del dibujo, nmero de vistas, factores de textos o lneas, subrutinas, etc.) Los ";" empleados, nos ayudan a escribir notas o mensajes dentro de nuestro programa, que son ignorados al momento de ejecutar la aplicacin. Esto con la finalidad de colocar comentarios tales como el nombre del autor, descripcin del programa o sus rutinas, etc. Ntese la sintaxis requerida, cada lnea de programa debe de llevar un parntesis al inicio y otro al final, de manera semejante el parntesis que indica el inicio de la rutina principal que contiene al nombre del programa, es cerrado al concluir este . Hay que considerar que cada subrutina que se emplee ms adelante requerir a su vez de un parntesis a su inicio, y otro a su terminacin, al igual que lneas de programa que contengan frmulas. Una vez hecho lo anterior, desde la lnea de comandos de AUTOCAD, se llama al programa de AUTOLISP de la siguiente forma: (LOAD"NOMBRE.LSP") Y una vez que fue cargado, aparece en pantalla el nombre con el cual AUTOCAD lo reconoce, siendo ste el previamente definido por la funcin DEFUN C: NOMBRE

Capacitacin

Pgina 12

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

SUBRUTINAS, COMANDO COMMAND: Las subrutinas son partes de nuestro programa que nos permiten distribuir eficientemente los pasos o tareas que los forman, por ejemplo se pueden destinar subrutinas para definir valores fijos de variables, otras para pedir informacin al usuario, otras para hacer clculos y otras para trazar entidades de dibujo. La sintaxis es muy semejante a la de la rutina principal, ya que aqu no se especificar la definicin de un nombre de programa. Un ejemplo puede ser una subrutina que trace una lnea a 2 puntos con coordenadas conocidas como 2,3 y 5,6: (LINEA1() (COMMAND "LINE" "2,3" "5,6" C) ) En donde (LINEA1() es el nombre de la subrutina, la siguiente lnea indica a AUTOCAD las instrucciones a ejecutar desde la lnea de comandos, de ah el emplear la instruccin COMMAND, con la sintaxis requerida del comando en cuestin, tal como en esta ocasin lo es LINE: punto de inicio de la lnea, un segundo punto y C que equivale a cancelar el comando (Control C). Es importante sealar, que entre los parntesis que estn despus del nombre de la subrutina, se pueden escribir las validaciones de las variables que estn interactivas entre el programa principal y las subrutinas, requiriendo una estricta sintaxis y orden en el listado de las mismas para lograr una ejecucin eficiente del programa. Otra opcin ms fcil es dejar vaco ese espacio para que AUTOLISP reconozca automticamente este tipo de variables, tal y como se hizo anteriormente. Anlogamente, si se desea invocar desde AUTOLISP a cualquier otro comando de AUTOCAD, se requerir de usar COMMAND con la sintaxis adecuada del comando deseado, siendo posible emplear todos los comandos y funciones con las que se cuenta para dibujo, siempre y cuando no se empleen las formas abreviadas. (P.ej: Usar "L" por "LINE") Es importante notar lo anteriormente mencionado en cuanto a la sintaxis de los parntesis, ya que AUTOLISP es un lenguaje limitado en cuanto a mensajes de errores de programa hacia el usuario, es decir, que en la mayora de las ocasiones en que por alguna causa no corra algn programa, no se sabe exactamente en donde se encuentra la falla si no se ha tenido cuidado en revisar la sintaxis.

Capacitacin

Pgina 13

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

INSTRUCCIONES PARA CREAR PROGRAMAS Y SUBRUTINASComo se mencion anteriormente, un programa en AUTOLISP es un archivo en formato de texto con extensin. LSP, que se puede llamar en forma diferente que como se registra como comando de AUTOCAD, las instrucciones siguientes nos ayudan a trabajar con subrutinas y crear programas: DEFUN: Es la instruccin empleada en la validacin de programas y sus respectivas subrutinas, es decir, le indica a AUTOLISP el nombre con el que se llama desde AUTOCAD un programa de LISP y los nombres de sus rutinas. a) Cuando se define el nombre de un programa: (DEFUN C:NOMBRE() : ) En donde NOMBRE, es el nombre con el que se va a llamar el programa dentro de AUTOCAD, es decir, el nombre como AUTOCAD lo registrar como comando adicional, pudiendo ser este, diferente del nombre del archivo en solo texto. Aqu, C: se refiere a un comando nuevo para AUTOCAD, no confundir con el prompt de algn drive de tipo disco duro. A esta rutina donde se define a nuestro programa, se le denomina RUTINA PRINCIPAL, y es ah donde se alojan las instrucciones y comandos que se ejecutan primero, es conveniente escribir ah validaciones de variables que nos sean indispensables. Las instrucciones que definen lo que hace nuestro programa de AUTOLISP, se incluyen donde se colocaron los puntos suspensivos y termina o se cierra el parntesis que se abre desde el DEFUN, pudindose llamar alguna subrutina, P.ej: (DEFUN C:NOMBRE() (INICIO) : ) En ste ltimo ejemplo, nuestro programa se llama NOMBRE, y lo primero que hace al ejecutarse, es ir a la subrutina INICIO y ejecutar las instrucciones ah contenidas, posteriormente regresar a esta rutina (PROGRAMA PRINCIPAL) y ejecutar las instrucciones siguientes hasta concluirlas todas.

Capacitacin

Pgina 14

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

b) Cuando de define alguna subrutina: El tratamiento es semejante al anterior, pero ahora sin usar C: con el DEFUN. Ejemplos: (DEFUN INICIO() : ) Aqu se define una subrutina llamada INICIO, que contiene instrucciones determinadas de programa, pudiendo llamarse a otra subrutina dentro de sta misma y as sucesivamente. Es conveniente sealar que no es adecuado llamar muchas subrutinas dentro de otras y as sucesivamente, ya que puede llegar un momento en que se pierda el control de lo que realmente est haciendo nuestro programa de AUTOLISP, ya que hay que recordar que una subrutina acaba hasta que se han ejecutado todas las instrucciones contenidas en ella, incluyendo por completo las subrutinas ah alojadas. REPEAT: Instruccin que permite ejecutar veces, ejemplo: (SETQ A 10) (SETQ B 100) (SETQ X 4) (REPEAT X (SETQ A (+ A 10)) (SETQ B (+ B 100)) ) En este ejemplo, se validan primero las variables A y B con 10 y 100 respectivamente, luego se ejecuta cuatro veces el proceso de incrementar A en 10 y B en 100, de tal forma que cuando termine el ciclo definido por el REPEAT, A valdr 50 y B valdr 500. Otro ejemplo, es repetir 3 veces una subrutina: (REPEAT 3 (PROCESO) ) Aqu es ejecutar 3 veces la subrutina llamada proceso. un proceso o subrutina un determinado nmero de

Capacitacin

Pgina 15

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

WHILE: Funciona en forma semejante al REPEAT, pero efecta algn ciclo slo mientras se cumpla algn tipo de condicionamiento, P.ej: (SETQ A 1) (WHILE (