Sei sulla pagina 1di 34

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

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

INTRODUCCIN

ALCANCES Y LIMITACIONES DEL AUTOLISP

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 16
Pgina 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 26
Pgina 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

PREMBULO
ESTRUCTURA 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 AUTOLISP
Para 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.

INTRODUCCIN
AUTOLISP 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 AUTOLISP


Como 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 AUTOLISP


Antes 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 AUTOLISP


En 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 AUTOLISP


Se 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 PROGRAMAS
El 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 SUBRUTINAS


Como 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 (<= A 10) : (SETQ A (+ 1 A)) En este ejemplo, el ciclo definido por los puntos suspensivos, se ejecuta siempre y cuando la variable A sea menor o igual a 10, por lo que es indispensable colocar dentro del proceso repetitivo a un contador, o a algn otro tipo de validacin para la variable A, para que sta cambie y la rutina no se efecte en forma indefinida.

MANEJO DE MENSAJES
Dentro de AUTOLISP es posible mandar mensajes para ser ledos por el usuario de nuestros programas, habiendo varias formas de hacerlo: ALERT : ( ALERT "MENSAJE") Este comando activa una ventana dentro de AUTOCAD, conteniendo un mensaje que nosotros deseemos, ya sea para avisar el inicio o terminacin de un programa, o bien para avisar al usuario de algn error o requerimiento de nuestro programa. Siendo necesario que el usuario presione el botn izquierdo del mouse en la ventana o presionar enter, para que sta desaparezca. Un ejemplo puede ser el siguiente: Donde nuestro archivo de slo texto se llama L0.LSP ; CURSO DE AUTOLISP ; ; ESTE PROGRAMA DIBUJA UNA LINEA DE LOS PUNTOS 2,3 A 5,6 Y ; DESPLIEGA UN MENSAJE DE AVISO CUANDO TERMINA. (DEFUN C:L0() (COMMAND "LINE" "2,3" "5,6" C) (ALERT "Fin del trazo de la lnea") ) En este ejemplo, tenemos unas lneas al inicio de nuestro programa con comentarios que sern ignorados por AUTOCAD al momento de ejecutar nuestro programa.

Capacitacin

Pgina 16

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

Para cargarlo desde AUTOCAD, en la lnea de comandos se escribe: (LOAD "L0"), y luego cada vez que se escriba en AUTOCAD L0, se ejecuta este programa que traza una lnea y luego despliega una ventana con el mensaje: Fin del trazo de la lnea PROMPT : ( PROMPT "MENSAJE ) Tambin despliega mensajes, pero no en una ventana como el ALERT, sino como lneas de texto que aparecen en el rea de comandos de AUTOCAD al ejecutarse nuestro programa, se le puede incluir la variante \n que sirve para dejar una lnea de separacin entre cada mensaje que se despliega. Como ejemplo se puede modificar el ejemplo anterior, de la siguiente forma: ; CURSO DE AUTOLISP ; ; ESTE PROGRAMA DIBUJA UNA LINEA DE LOS PUNTOS 2,3 A 5,6 Y ; DESPLIEGA UN MENSAJE DE AVISO CUANDO INICIA Y CUANDO TERMINA. (DEFUN C:L0() (PROMPT "\n DIBUJO DE 1 LINEA" ) (COMMAND "LINE" "2,3" "5,6" C) (ALERT "Fin del trazo de la lnea") (PROMPT "\n FIN DEL PROGRAMA" ) ) En este ejemplo se escribe un mensaje al inicio y al final de nuestro programa, adems del trazo de una lnea.

Capacitacin

Pgina 17

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

FUNCIONES EN AUTOLISP
FUNCIONES DE ENTRADA DE DATOS Son instrucciones que nos permiten pedir informacin para poderla almacenar posteriormente en alguna variable. Dicha validacin se har siempre empleando la instruccin SETQ vista anteriormente, donde se escribe en nuestra lnea de programa primero SETQ y el nombre de la variable deseada, luego la debida instruccin de entrada de datos con algn comentario entre comillas, que es el que aparecer como mensaje en la lnea de comandos de AUTOCAD. La importancia de todas estas instrucciones consiste en que son la manera en que se puede introducir informacin por el usuario una vez que se esta ejecutando algn programa de AUTOLISP, para ser almacenada en alguna variable. De acuerdo al tipo de informacin que se necesite, es la instruccin que se emplear, pudiendo ser alguna de las siguientes: GETANGLE: (GETANGLE "Dame dos puntos") Instruccin que nos ayuda a obtener el ngulo descrito por 2 puntos, es decir, la pendiente en radianes que describen esos 2 puntos seleccionados por el usuario. Dicho ngulo es medido en forma relativa, ya que se ve afectado por los valores de las variables ANGBASE y ANGDIR. GETORIENT: (GETANGLE "Dame dos puntos") Funciona igual que GETANGLE, pero con la diferencia que el ngulo que mide es en forma absoluta, es decir, tomando como referencia el eje positivo horizontal (X+). Ejemplo: (SETQ ANGULO (GETORIENT "Selecciona dos puntos ")) En este ejemplo, en la variable NGULO se est guardando el valor en radianes ngulo de inclinacin que describen 2 puntos seleccionados por el usuario. del

La utilidad de GETANGLE y GETORIENT consiste en poder obtener la pendiente o ngulo de inclinacin de alguna lnea perteneciente a una entidad de dibujo, a partir de la simple seleccin de sus vrtices. GETDIST: (GETDIST "DAME UNA DISTANCIA") Es una instruccin que permite asignarle a una variable el valor real de una distancia entre dos puntos, de tal forma que la computadora le pregunte al usuario dos puntos a tomar como referencia para calcular la distancia entre ellos, pudiendo ser stos los vrtices de alguna entidad de dibujo. Ejemplo: (SETQ X (GETDIST "Selecciona dos puntos "))
Capacitacin Pgina 18

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

Aqu lo que se est haciendo es que la computadora solicite al usuario dos puntos o coordenadas, mediante la aparicin de un texto en pantalla, que es el que se encuentra entre comillas, posteriormente calcula la distancia entre ellos y lo almacena en la variable X. GETPOINT : (GETPOINT "Dame un punto") Nos permite almacenar en una variable las coordenadas de un punto o coordenada. P.ej: (SETQ X (GETPOINT "Selecciona un punto")) En este ejemplo, la mquina le pide al usuario un punto, el cual se almacena en la variable X.

GETREAL : (GETREAL "Nmero") Con esta instruccin, se almacena en una variable el valor de un nmero real, siempre con entero, punto decimal y sus correspondientes decimales. Ejemplo: (SETQ X (GETREAL "Dame un nmero")) En caso de que el usuario teclee un nmero entero, AUTOLISP se encargar de asignarle ceros como decimales. Por otro lado, si se trata de un dato con muchas decimales, AUTOLISP redondear siempre a 6 decimales. GETINT : (GETINT "LETRERO DE TEXTO") Instruccin que nos permite preguntar un dato (valor numrico), pero con la caracterstica de que siempre ste debe de ser entero, almacenando dicho valor en alguna variable. Se usa igual que GETREAL, pero con la diferencia de que aqu el valor almacenado es entero, mandando AUTOLISP un mensaje de error cuando dicho valor no es entero. La utilidad de este comando consiste en tener que usar una funcin que slo nos tome el valor entero de un nmero, sin necesidad de hacer la conversin.

SSGET: (SETQ VARIABLE (SSGET)) Es una instruccin que nos permite almacenar en una variable una entidad de dibujo de AUTOCAD, o a un grupo de ellas cuando se identifican a manera de bloque. A diferencia de las dems instrucciones de entrada de datos, sta no puede llevar un texto dentro de comillas, sino que al dar SSGET y el nombre de una variable, automticamente guarda en una variable la entidad seleccionada. Para efectos de comentarios o textos en combinacin con este comando, se acostumbra usar el comando PROMPT para enviar textos hacia la lnea de comandos de AUTOCAD.

Capacitacin

Pgina 19

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

GETVAR : (GETVAR "VARIABLE") Con esta instruccin se puede obtener algn valor de alguno de los parmetros pertenecientes al comando SETVAR de AUTOCAD, para posteriormente ser almacenado en alguna variable dentro de AUTOLISP. Ejemplo: (SETQ F (GETVAR "PDMODE")) En este ejemplo, en la variable F se est almacenando el valor que en ese momento tenga la variable PDMODE del SETVAR de AUTOCAD. Hay que recordar que dentro del SETVAR, PDMODE define el estilo (tipo) de simbologas para dibujar puntos en alguna coordenada. Si PDMODE en ese instante tena como valor 34 (correspondiente a un punto formado por un crculo, una lnea vertical y otra horizontal), entonces F tomar el valor de 34. Para la utilizacin de GETVAR, resulta indispensable el conocimiento completo de todas las variables que maneja AUTOCAD dentro del SETVAR, as como sus aplicaciones para fines de dibujo. La principal utilidad de GETVAR, consiste en poder manejar desde AUTOLISP los valores que contenga SETVAR, hay que tomar en cuenta que para poder modificar desde AUTOLISP los valores del SETVAR, no es posible hacerlo con GETVAR, ya que su utilidad es la entrada y no la salida de informacin. Si se deseara modificar alguno de los parmetros del SETVAR, se puede hacer con la instruccin COMMAND, utilizando la sintaxis adecuada. GETSTRING: (GETSTRING "TEXTO") Es una instruccin que almacena en una variable una informacin de tipo alfanumrico, es decir, de carcter de texto. Existiendo la limitante de 132 caracteres para ser almacenados, si se excede este lmite, slo se almacenarn los primeros 132. Su utilidad principal es en la elaboracin de mens, donde con opciones se puede seleccionar alguna, en combinacin con IF. Ejemplo: (SETQ NOMBRE (GETSTRING "\n Cual es tu nombre ")) En la variable NOMBRE se almacena el valor en texto que se elija por el usuario. Si se almacena VICTOR, cuando se requiera emplear el valor de esa variable, la computadora nos devuelve "VICTOR"

EN GENERAL:
Cuando se especifique un tipo de dato a almacenar en una variable y el usuario proporcione otro, AUTOLISP mandar un mensaje de error con el que le avisa al usuario. Un caso comn es el querer almacenar un texto en una variable empleando GETREAL, querer almacenar un nmero fraccional empleando GETINT, etc.
Capacitacin Pgina 20

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

FUNCIONES MATEMTICAS
Son las que se emplean al realizar operaciones sencillas, se pueden citar: (+ NUMERO1 NUMERO2) (- NUMERO1 NUMERO2) (* NUMERO1 NUMERO2) (/ NUMERO1 NUMERO2) Para la suma de 2 nmeros Para restarle el nmero2 al valor del nmero1 Para multiplicar 2 nmeros Para dividir el Nmero1 entre el nmero2

Hay que notar que para cada una de las 4 funciones anteriores se pueden usar mas de 2 nmeros dentro de los parntesis, para realizar la operacin deseada, algunos ejemplos son: (+ 1 2 3 4) Lo cual devuelve el valor de 10 hacia la variable en la cual el usuario decida almacenar dicho resultado. (- 50 40 2.5) Lo cual nos da la siguiente operacin: (50 - 40) - 2.5, resultando 7.5 como valor devuelto por AUTOLISP. (* 2 3 4) Realiza la multiplicacin de estos 3 nmeros, resultando 24 como valor devuelto por AUTOLISP. (/ 100 20 2) Da como resultado 2, ya que siendo enteros todos los nmeros, AUTOLISP a su vez devuelve un resultado entero. Para obtener el resultado deseado de 2.5, la lnea de programa sera: (/ 100.0 20.0 2.0), hay que tomar en cuenta esto para las dems funciones. En caso de que slo se escriba un slo nmero, lo devolver como resultado para cualquiera de estas funciones, Ejemplo: (+ 2) Devuelve el valor de 2 (- 8) Nos da como resultado -8 (* 3) Devuelve 3 (/ 4) Devuelve 4 AUTOLISP tambin maneja el nmero 3.141592654, reconocindolo como pi, de tal forma que se puede usar como constante dentro de AUTOLISP. Ejemplo: (SETQ W (* pi 2)) Almacena en la variable W, el resultado de multiplicar a pi por dos = 6.2831853

Capacitacin

Pgina 21

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

FUNCIONES BSICAS
A) Referentes al lugar que ocupan los datos en una lista CAR: Es una instruccin que sirve para analizar el primer valor de una lista, es decir, siempre nos devuelve este valor. Ejemplo: (SETQ P (GETPOINT "DAME UN PUNTO")) (SETQ X (CAR P)) En este caso, cuando se ejecuten dentro de algn programa estas 2 lneas, primero se almacena en la variable P una lista de 3 valores que representa las coordenadas de un punto, posteriormente en la variable X se guardar el valor de la coordenada X de ese punto. CDR: Funciona igual que CAR, pero con la diferencia que esta instruccin nos devuelve todos los valores de una lista, exceptuando al primero. Ejemplo: Si a las lneas de nuestro ejemplo anterior, agregamos una ms: (SETQ Y (CAR (CDR P))) En la variable Y almacenaremos la coordenada en Y de nuestro punto, ya que CDR nos devolver los 2 ltimos valores de nuestra lista, correspondientes a las coordenadas Y, Z y con CAR tomaramos el primero de esos 2 valores. LAST: Esta instruccin nos devuelve el ltimo valor de una lista. En nuestro ejemplo anterior, si escribimos una lnea de programa as: (SETQ Z (LAST P)) En la variable Z almacenaremos el ltimo valor de los elementos contenidos en la lista P, que en este caso corresponde al valor de nuestro punto en la coordenada Z. B) Referentes a las caractersticas de una lista LENGTH : Es una instruccin que nos ayuda a conocer la extensin de una lista de datos, es decir, el nmero de datos que contiene dicha lista. Ejemplo: En nuestro ejemplo anterior, tenemos 3 datos que se almacenan en la variable P, de tal forma que: (SETQ L (LENGTH P)) La variable P tomar el valor de 3.
Capacitacin Pgina 22

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

FUNCIONES ARITMTICAS
Estas funciones se complementan con las anteriormente descritas, tales como la suma, resta, multiplicacin y divisin. Para utilizarse hay que seguir los criterios de uso de parntesis como en cualquier otro lenguaje de programacin en el que se usen funciones de este tipo. Es importante sealar que para todas estas instrucciones en las que se emplean listas, dichas listas deben ser por completo formadas por nmeros o variables con contenido numrico, ya que no es posible emplear variables con contenido alfanumrico para realizar este tipo de operaciones. De manera semejante con aquellas que slo usan una variable. El usuario comprende que por ejemplo, no es posible sumar dos variables: X + Y, si X = "PERRO" y Y = "GATO", necesariamente tienen que ser nmeros reales. No hay que olvidar, que al realizar alguna operacin o funcin de tipo matemtico, dicho resultado se debe de almacenar en alguna otra variable, empleando SETQ. Se pueden listar las siguientes funciones: ABS : (ABS n) Funcin que como en otros lenguajes, muestra el valor absoluto de un nmero, por ejemplo: (SETQ X (ABS Y)) Aqu lo que se est haciendo es almacenar en la variable X el valor absoluto de Y, otro ejemplo puede ser el siguiente: (SETQ X (ABS -21.365)) En este ejemplo se est almacenando en X el nmero +21.365, puesto que el valor absoluto siempre es positivo. EXP : (EXP n) Con esta instruccin se obtiene el nmero de Euler = 2.7182818 elevado a una potencia "n" determinada, de tal forma que nos ayuda a obtener el antilogaritmo natural de un nmero. Ejemplos: (EXP 1.0), nos devuelve el valor de 2.7182818 (EXP -0.4), nos devuelve el valor de 0.67032 Dichos valores no se almacenarn en alguna variable deseada, si no se usa la instruccin SETQ.

Capacitacin

Pgina 23

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

EXPT : (EXPT n p) Esta instruccin puede elevar un nmero "n" a una potencia "p", Ejemplos: (SETQ X (EXPT 3 2)) Se almacena en X el valor de 3*3 = 9 GCD : (GCD a b c) Es una instruccin que busca entre varios denominador, Ejemplos: (GCD 12 20)

nmeros (a, b, c,..,N) su

mximo comn

Nos devuelve 4, que es el mximo nmero que a la vez puede dividir al obtenindose un cociente entero. (GCD X Y Z)

12 y al 20

Nos devuelve el mximo comn denominador de los nmeros almacenados en las variables X, Y Z. LOG: (LOG n) Es una funcin que nos sirve para calcular el logaritmo natural de un nmero real, es decir, usando al nmero de Euler como base, ejemplos: (LOG 4.5) Nos devuelve:1.50408 (LOG 1.22) (LOG X) Nos devuelve:0.198851 Calcula y nos devuelve el Ln(x)

Hay que tener cuidado de no usar nmeros negativos para el clculo de logaritmos, ya sea cuando se usan variables o simplemente los nmeros en las instrucciones de programa, por que como ya todos sabemos, no es posible calcular logaritmos de nmeros negativos y la computadora nos manda algn mensaje de error. MAX: (MAX A B C ...) Nos ayuda a obtener en una lista a el nmero que es mayor de todos los dems (A, B, C, ...). , Ejemplos: (MAX 4.07 -150) Nos devuelve: 4.07 (MAX 2.1 4 8) Nos devuelve: 8

Capacitacin

Pgina 24

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

MIN: (MIN A B C ...) Se usa igual que MAX, pero esta instruccin nos devolver de una lista, a aquel valor que es menor a todos los dems, Ejemplo: (MIN 600 -10) Nos devuelve: -10

REM: (REM X Y) Esta funcin sirve para obtener el residuo de dos nmeros, de tal forma que nos devuelve el resto de la divisin de X entre Y. Ejemplos: (SETQ RESIDUO (REM 42 12)) Almacena en la variable RESIDUO, el nmero 6, que es el residuo de dividir 42 / 12.

SQRT: (SQRT X) Funcin que calcula la raz cuadrada positiva de un nmero real POSITIVO, ya que en el AUTOLISP, no se usan los nmeros de tipo complejo. Ejemplo: (SQRT 4) Nos devuelve: + 2

Como ya es sabido, la raz cuadrada de 4 puede ser +2 y adems -2, ya que al elevarlos al cuadrado, ambas opciones nos dan 4. En AUTOLISP, la computadora siempre nos da el valor positivo de una raz cuadrada.

FUNCIONES TRIGONOMTRICAS Hay que considerar, que siempre que se utilicen estas funciones, la computadora realiza los clculos en radianes, si se desea obtener o proporcionar a AUTOLISP un valor en grados, hay que hacer las conversiones necesarias, considerando que 2PIradianes = 360 grados. ATAN: (ATAN X) Nos devuelve en radianes el valor del arco cuya tangente es un nmero, es decir: calcula en radianes el valor del ngulo cuya tangente es el valor que estamos dando, Ejemplo: (ATAN 0.5) Nos devuelve: 0.4636476

Capacitacin

Pgina 25

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

COS: (COS X) Calcula el coseno de un nmero en radianes, su sintaxis es igual a la de ATAN. Ejemplo: (SETQ X (COS pi)) radianes de 3.141592654... Almacena en "X" el nmero -1.0, que es el coseno en

SIN: (SIN X) Calcula la funcin seno de un nmero Ejemplo: (SIN 0) Devuelve: Cero

AUTOLISP no cuenta con una instruccin para calcular la funcin TANGENTE, pero es posible calcularla mediante la siguiente identidad trigonomtrica: TAN (X) = SIN (X) / COS (X) El usuario puede programar una pequea rutina que calcule la TANGENTE de cualquier nmero en radianes.

FUNCIONES DE TIPO RELACIONAL Y CONDICIONAL


Por lo general se emplean en combinacin con funciones lgicas de tipo IF... THEN, en donde si se cumple la condicin se ejecuta lo incluido dentro del siguiente par de parntesis, de lo contrario se ejecuta lo incluido en la segunda pareja de parntesis. IF: (IF CONDICION VERDERO FALSO) Para el caso de argumentos ms extensos, se sigue la siguiente lgica: (IF (CONDICIONES) (VERDADERO) (FALSO) ) Donde las CONDICIONES pueden ser algunas de las siguientes: (= NUMERO1 NUMERO2) Sirve para saber cuando 2 o ms argumentos sean iguales, Ejemplo: (= 4 4.00) La mquina devuelve "T" (true), siendo verdadero el algoritmo (= 499 500 499) Nos devuelve "Nil", siendo falso el argumento.

Capacitacin

Pgina 26

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

Otra muy parecida, se emplea para comparar los contenidos de listas: (EQUAL LISTA1 LISTA2) Donde LISTA1 y LISTA2 son variables que contienen varios elementos, es decir, una lista Anlogamente, se sigue el mismo criterio de falso y verdadero como respuestas para los siguientes: (< NUMERO1 NUMERO2) y (<= NUMERO1 NUMERO2) (> NUMERO1 NUMERO2) y (>= NUMERO1 NUMERO2) (/= NUMERO1 NUMERO2) Para el caso en el que se quiera que sea verdadero cuando 2 nmeros son diferentes.

FUNCIONES DE TIPO LGICO (AND, OR)


Se emplean en combinacin con las anteriores y de tipo IF..THEN..ELSE AND: Compara 2 o ms expresiones, devolviendo verdadero solamente cuando todas las funciones se cumplan. (AND EXPRESION1 EXPRESION2...) OR: Compara 2 o ms expresiones, devolviendo verdadero cuando por lo menos alguna de las funciones se cumpla. Se pueden realizar combinaciones de estas 2 para atender a las necesidades del usuario, algunos ejemplos son: (IF (AND (< 2 3) (> 5 4) (= 2 2.00) (>= 2.1 2)) (SETQ A "HOLA") (SETQ A " ") ) En este ejemplo, como se puede ver, se cumplen simultneamente todas las condiciones, por lo que la variable "A" tomar el valor de HOLA, en caso de que as no fuece, tomar el valor de 4 caracteres en blanco. Se puede aplicar a variables: (IF (AND (= A B) (< C D)) (SETQ E 5) )
Capacitacin Pgina 27

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

Si se da en forma simultnea en el programa que A sea igual a B, y que C sea menor a D, entonces la variable E valdr 5, de lo contrario nada se ejecutar por no haber una instruccin a cumplir para la condicin de falso, y de seguir con el resto del programa. (IF (OR (= A B) (< C D)) (SETQ E 5) ) Aqu, la variable E valdr 5 si se cumple alguna de cualquiera de las 2 condiciones, o las 2 en forma simultanea. (IF (OR (AND (= A B )) (AND (= C D ))) (SETQ E 5) ) En este ltimo ejemplo E tomar el valor de 5 si se cumple alguna de las 2 condiciones de que forzosamente A sea igual a B o que C sea igual a D. Hay que notar la forma en que se realizan los arreglos de parejas de parntesis, para evitar en lo posible errores de sintaxis que sean laboriosos de localizar en algoritmos ms complejos.

FUNCIONES DE CADENA
STRCASE: (STRCASE CADENA ARGUMENTO) Es una funcin que convierte los elementos de una cadena en maysculas o minsculas, dependiendo del contenido del argumento. Si el argumento se omite o vale NIL, los caracteres de nuestra cadena sern convertidos en maysculas. Si el argumento existe o tiene un valor diferente de NIL, los elementos de nuestra cadena sern convertidos en minsculas. Ejemplos: (strcase "Sample") (strcase "Sample" T) Nos devuelve "SAMPLE" Nos devuelve "sample"

STRCAT: (STRCAT CADENA1 CADENA2) Es una instruccin que nos permite unir dos cadenas de texto en una sola. Ejemplos: (STRCAT "A" "BOUT") (STRCAT "A" "B" "C") Nos devuelve "ABOUT" Nos devuelve "ABC"

Capacitacin

Pgina 28

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

STRLEN: (STRLEN TEXTOS...) Es una instruccin que nos sirve para contar el nmero de elementos que tiene una cadena o varias de ellas. Ejemplos: (STRLEN "ABCD") Nos devuelve el nmero cuatro. (STRLEN "ABCD" "efgh") Nos devuelve el nmero ocho. SSLENGTH: (SSLENGTH SS) Es una instruccin que nos ayuda a contar el nmero de entidades o elementos de dibujo que se encuentran contenidos en el set de seleccin. Ejemplo: (SETQ SSET (SSGET "L")) Almacena en la variable SSET el valor del nmero de elementos de dibujo seleccionados en la ltima seleccin hecha con el comando SSGET.

FUNCIONES DE CONVERSIN
ASCII (ASCII CADENA) Esta instruccin convierte el primer carcter de una cadena en su equivalente numrico del cdigo ASCII. Ejemplos: (ASCII "A") (ASCII "BIG") Nos devuelve el nmero 65 Nos devuelve el nmero 66

ATOF (ATOF TEXTO) Es una instruccin que convierte un nmero con formato de texto en un nmero real. Es decir, nos permite convertir una cadena de un solo texto numrico en valor real. Ejemplos: (ATOF "97.1") (ATOF "3") Nos devuelve 97.1 Nos devuelve 3.0

ATOI (ATOI TEXTO) Trabaja de igual forma que ATOF, pero ahora la conversin se hace hacia un nmero entero. Ejemplos: (ATOI "97.1") (ATOI "3") Nos devuelve 97 Nos devuelve 3

Capacitacin

Pgina 29

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

CHR (CHR NUMERO) Es una instruccin que trabaja en forma opuesta a ASCII, es decir: convierte un nmero entero en su correspondiente smbolo del cdigo Ejemplo : (CHR 65) (CHR 66) Nos devuelve la letra "A" Nos devuelve la letra "B"

FIX (FIX NUMERO) Convierte un nmero real en uno entero, sin aproximar sus decimales; es decir: slo toma la parte entera de un nmero real. Ejemplos: (FIX 3) (FIX 3.7) Nos devuelve 3 Nos devuelve 3

FLOAT (FLOAT NUMERO) Trabaja en forma contraria a FIX, convierte de un nmero entero a uno real. Ejemplos: (FLOAT 3) (FLOAT 3.75) Nos devuelve 3.0 Nos devuelve 3.75

ITOA Trabaja en forma contraria a ATOI, este comando convierte un nmero entero, en un texto (cadena). Ejemplos: (ITOA 33) (ITOA -17) Nos devuelve "33" Nos devuelve "-17"

RTOS (RTOS NUMERO FORMATO DECIMALES) Es un comando que permite el manejo con nmeros en cinco formatos diferentes: cientfico, decimal, ingenieril (pies con decimales), arquitectnico (pies con fracciones), fraccional; presentndolos con un determinado nmero de decimales. Es indispensable recordar que un pie equivale a 12 pulgadas. Un ejemplo es el siguiente: ; PROGRAMA (SETQ X 17.5) (SETQ A (RTOS X 1 4)) (SETQ B (RTOS X 2 2)) (SETQ C (RTOS X 3 2)) (SETQ D (RTOS X 4 2)) (SETQ E (RTOS X 5 2))
Capacitacin

valores de las variables A = 1.7500E+01 B = 17.50 C = 1'-5.50" D = 1'-5 1/2" E = 17 1/2


Pgina 30

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

FUNCIONES DE ENTRADA Y SALIDA


Se trata de instrucciones que nos ayudan a leer o escribir informacin de un archivo con formato de slo texto. Nos ayudan a recibir o enviar informacin fuera de nuestro programa de AUTOLISP y del AUTOCAD. OPEN Permite abrir un archivo de slo texto, en las siguientes variantes: En modo de solo lectura (OPEN "ARCHIVO.TXT" "r") En modo de solo escritura, si el archivo no existe, es creado al momento de ejecutar este comando, y siempre sobrescribe el contenido del archivo con la nueva informacin. (OPEN "ARCHIVO.TXT" "w") En un modo que nos permite escribir en un archivo sin eliminar su contenido actual y sin sobrescribirlo por completo, es decir: agregndolo al final del mismo. (OPEN "ARCHIVO.TXT" "a) Aqu la limitante es usar archivos de solo texto creados con COPY CON desde DOS, ya que AUTOLISP no reconocera las marcas CONTROL+Z al final de dichos archivos y tendra algunos problemas. CLOSE (CLOSE ARCHIVO) Cierra un archivo previamente abierto con OPEN, se utiliza el CLOSE una vez que ya no se requiere usar dicho archivo. Ejemplo : (CLOSE "X.TXT") (CLOSE X) Cierra el archivo X.TXT Cierra el archivo cuyo nombre esta contenido en la variable X.

FINDFILE (FINDFILE ARCHIVO) Funciona de manera semejante al DIR /S de DOS, ya que nos sirve para buscar algn archivo e indicar en qu parte se encuentra dentro de AUTOCAD, es decir, nos devuelve el PATH de dicho archivo solamente, sin indicar sus datos (bytes, fecha, etc...). Este comando est limitado a buscar dentro de los directorios de AUTOCAD. Ejemplo: (FINDFILE "ACAD.EXE") Nos devolver: "/acad/ACAD.EXE",

Suponiendo que en nuestra PC tengamos instalado AUTOCAD en el subdirectorio ACAD.


Capacitacin Pgina 31

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

LOAD (LOAD"PROGRAMA.LSP") Esta instruccin ya la habamos definido previamente, ya que es la que se usa para cargar en memoria los programas hechos en AUTOLISP. READ (READ CADENA) Es un comando que muestra siempre la primera lista o tomo de una cadena, Ejemplos: (READ "HELLO THERE") (READ "(A B C) (D)") (READ "(A B C)") Nos devuelve HELLO Nos devuelve la lista (A B C) Nos devuelve la lista (A B C)

READ-LINE (READ-LINE ARCHIVO) Esta instruccin funciona de manera semejante a READ, pero con la diferencia que en este caso lee una lnea completa de un archivo de slo texto abierto previamente (con OPEN), es decir, nos devuelve una lnea de nuestro archivo por cada vez que se usa dentro del mismo programa, ya que al reinicializar nuestro programa, READ-LINE nos devolver de nuevo la primera lnea de nuestro archivo, luego la segunda, etc.. Ejemplo: (SETQ TEXTO (READ-LINE ARCH)) Aqu, se almacena en la variable TEXTO la primera lnea del archivo cuyo nombre est almacenado en la variable ARCH. Si se ejecutara por segunda vez dentro de nuestro programa, nos devolvera la segunda lnea y as sucesivamente hasta llegar al final del archivo. En la parte de prcticas de este curso, se encuentran algunas aplicaciones de este comando. WRITE-LINE (WRITE-LINE ARCHIVO) Es una instruccin que funciona de manera contraria a READ-LINE, ya que WRITE-LINE permite escribir sobre de un archivo de texto abierto previamente (con OPEN) Ejemplo: (WRITE-LINE "HOLA" ARCH) Escribir la palabra HOLA en el archivo de texto abierto previamente, cuyo nombre esta almacenado en la variable ARCH. Ejemplo: (WRITE-LINE X ARCH) Escribir el contenido de la variable X en el archivo de texto previamente abierto, cuyo nombre se encuentra en la variable ARCH.
Capacitacin Pgina 32

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

FUNCIONES DE DEPURACIN
TRACE (TRACE FUNCIN) Marca una funcin con un atributo de rastreo, mostrando el nombre de dicha funcin. Esta instruccin ayuda a saber cual es la ultima funcin que ha pasado por ah. Ejemplos: (TRACE FUNCIN1) Nos devuelve FUNCIN1

UNTRACE (UNTRACE FUNCIN) Trabaja en forma contraria a TRACE. Quita el atributo de rastreo de la funcin seleccionada, devolviendo el nombre de la ltima funcin. Ejemplos: (UNTRACE FUNCIN1) Nos devuelve FUNCIN1

FUNCIONES VARIAS
TEXTSCR (TEXTSCR) Cambia al modo de texto de AUTOCAD, equivale a presionar F1 para cambiar del modo grfico al modo de texto. GRAPHSCR (GRAPHSCR) Cambia al modo grfico de AUTOCAD, equivale a presionar F1 para cambiar del modo de texto al modo grfico. VER (VER) Nos muestra la versin actual de AUTOLISP que se est empleando, si se est empleando el AUTOCAD 13, AUTOLISP nos devuelve el sig. mensaje: "AUTOLISP Release 13.0" QUIT, EXIT Son dos funciones que se usan para detener nuestro programa en un determinado punto y regresar a la lnea de comandos de AUTOCAD. Ambas hacen exactamente lo mismo: Provocan un error que da por terminado un programa de AUTOLISP.

Capacitacin

Pgina 33

Laboratorio de cmputo de ingeniera

Curso de AutoLISP

Crditos
Directorio
Ing. Edmundo Barrera Monsivais
Director de la Esc. de Ingeniera

Ing. Ral Morales Farfn


Secretario de Talleres y Laboratorios

Ing. Luis M. Aguilln Banda


Jefe del Laboratorio de Cmputo de Ingeniera

Ing. Luis A. Torres Lpez


Jefe del rea Acadmica y Coordinacin del rea de Prcticas

Realizacin:
Vctor Hugo Ortega Vega Servicio Social (Ingeniera Electrnica )

Revisin
Liliana Vicenteo Loya Asesor de la Coordinacin del rea de Prcticas Lourdes Revilla Avendao Colaboradora del rea de Prcticas

Diseo y Edicin:
Liliana Vicenteo Loya Asesor de la Coordinacin del rea de Prcticas Lourdes Revilla Avendao Colaboradora del rea de Prcticas
Mxico D.F. MCMXCVIII

Capacitacin

Pgina 34

Potrebbero piacerti anche