Está en la página 1de 16

SERVICIOS INTEGRALES EN COMPUTACION

SINCOW

MANUAL DE AUTOLISP

PREPARADO POR: ING. GUSTAVO NAVAS

www.sincows.com admin@sincows.com ISLA FERNANDINA N42-52 (CIUDADELA JIPIJAPA), TELE/FAX: 2920-890, 2431-356 QUITO-ECUADOR

www.sincows.com

admin@sincows.com

Servicios Integrales en Computacin


SINCOW
MANUAL DE AutoLISP Realizado por: ING.GUSTAVO NAVAS R. I. INTRODUCCIN Dentro del AutoCAD nos encontramos un lenguaje de programacin que usa un interprete de nombre AutoLISP, este es una forma comn del lenguaje LISP, el cual a su vez es el lenguaje ms antiguo en aplicaciones de inteligencia artificial. El AutoLISP coexiste con el AutoCAD y puede ser usado en cualquier momento que se este editando un dibujo. Este lenguaje provee herramientas comunes a otros paquetes de programacin para estructurar el flujo de un programa, manipula datos del AutoCAD, as como datos propios, tiene opciones de entrada y salida I/O para la creacin y lectura de archivos ASCII. Presenta adems la capacidad de poder activar cualquier comando que venga dentro del AutoCAD as como tambin puede manipular informaciones propias de un dibujo realizado en AutoCAD, tal es el caso de manejar entidades (Lneas, arcos, crculos, poli-lneas, etc.), as como tambin tipos de lneas, estilos "styles", niveles "Layers", etc. El lenguaje LISP original tena la posibilidad de definir funciones en forma recursiva, esto significa que la funcin era usada al interior de si misma asignndole las variables de entrada, esta capacidad presenta tambin el AutoLISP. Mas lamentablemente no hay informacin sobre el uso del AutoLISP con funciones recursivas, pero cualquier libro que haga referencia a la recursividad en el lenguaje LISP puede ser de ayuda para el estudio de funciones recursivas dentro del AutoLISP, pues con algunos cambios los programas en LISP podrn ser ejecutados al interior del AutoLISP, en particular la versin de XLISP es la ms recomendada pues es la que presenta el mayor parecido con el AutoLISP. Los parntesis son vitales para escribir cualquier instruccin en AutoLISP, sea esta una simple expresin o sea un programa completo, digamos adems que el abrir y cerrar parntesis permiten al AutoCAD distinguir entre los comandos propios del paquete y las expresiones del AutoLISP. Cada vez que el AutoCAD detecta un parntesis abierto, interpreta que se refiere a una expresin de AutoLISP y esta pasa en su totalidad, hasta el parntesis que la cierra, a ser evaluada por el AutoLISP, el cual da un resultado al AutoCAD que puede usarlo y continuar con sus operaciones propias. Toda expresin dentro del AutoLISP presenta el siguiente formato: (Nombre-de-la-funcin argumento-1 argumento-2 ......) El nombre de la funcin, que puede ser propio del AutoLISP o creado por el usuario, relaciona a los argumentos que vienen a continuacin. Los argumentos a su vez pueden ser otras funciones, variables o constantes. Veamos por ejemplo la siguiente expresin dada en AutoLISP: (* 3 2) Expresin AutoLISP Resultado (+ 5 3) 8 (+ 2 4 5) 11 (/ 5 3) 1 (/ 5.0 3) 1.6667 (- 15 3 8) 4 (+ (* 2 3) 1 (- 4 7)) 4 Expresiones aritmticas en AutoLISP y su resultado.

La expresin anterior se podr tipiar en cualquier momento, como ya se dijo anteriormente, y corresponder a la operacin de multiplicacin de los argumentos que vengan a continuacin en este caso los valores constantes de 3 y 2, el AutoLISP evaluar esa expresin dando un valor de 6. En la tabla No. 1 se puede apreciar algunas expresiones aritmticas en AutoLISP y el resultado que dara el programa. Para mayor informacin sobre las expresiones aritmticas vase pg 6. II. SETEADO INICIAL Antes de correr cualquier programa de AutoLISP, es indispensable setear cierto tipo de informacin dentro del DOS. En primer lugar setearemos las variables LISPHEAP y LISPSTACK, lo cual se har desde el DOS de la siguiente manera: SET LISPHEAP=20000 SET LISPSTACK=8000 Los valores de 20000 y 8000 pueden ser cambiados, pero las sumas de estas dos cantidades no puede exceder de 45000. Otra variable que requiere ser seteada antes de trabajar con el AutoCAD es ACADFREERAM, la cual permite setear mayor cantidad de memoria RAM libre para uso del AutoCAD. Se tipiar en pantalla lo siguiente: SET ACADFREERAM=20 El valor de 20 tambin puede ser alterado de acuerdo a las necesidades del usuario, pero no se recomiendan valores mayores a 32, ni menores a 20. Si el valor de esta variable no es seteado el AutoCAD le asignar un valor de 14. III. VARIABLES

2 Isla Fernandina N42-52 (Ciudadela Jipijapa) Telfono/fax: 920-890, 431-356 Quito-Ecuador

www.sincows.com

admin@sincows.com

Servicios Integrales en Computacin


SINCOW
En el inicio del AutoLISP, ste no fue llamado con este nombre y fue ms bien llamado "variables y expresiones" "variables and expressions" para la construccin de macros. Existen unas variables propias del sistema que podrn ser manipuladas a travs del comando SETVAR. Una variable en AutoLISP representa cualquier cosa que no sea un valor constante. Se usan variables de todo tipo. El AutoLISP permite sustituir variables en lugar de valores constantes, es posible asignar un valor al nombre de una variable. Es posible unir la informacin del nombre de una variable explcitamente en un macro, es posible adems usar el nombre de las variables con expresiones para desarrollar clculos y/o tomar decisiones lgicas. El nombre de una variable es una coleccin de letras y nmeros, siempre y cuando el primer carcter sea una letra. En la tabla II se pueden apreciar nombres de variables apropiadas y nombres de variables incorrectas.

Nombres de variables Correctas Incorrectas f 37 esta 45t punto11 ry*4 que23s x$ etc ft+ui

CARACTERES NO RECOMENDADOS PARA NOMBRES DE VARIABLES CARACTERES RESERVADOS O ILEGALES: . ' " ; ( ) <ESPACIO> FUNCIONES DEL AUTOLISP: ~ * = > < + - / CARACTERES NO RECOMENDADOS: ! ? ` \ ^ o cualquier carcter Control
El valor que se asigna a una variable puede ser de cuatro tipos: Variable string: Tiene valores de texto ubicadas ente comillas para identificar el valor como un string. Algunas variables del sistema (Ver comando SETVAR) son del tipo string, tal es el caso de la variable CELTYPE, que tiene asignado un valor "BYLAYER" entre otras. Enteras: Son nmeros positivos o negativos los cuales no tienen fracciones o puntos decimales. El valor de 5 sera un tpico ejemplo de un valor entero mientras que el valor 5.0 ser considerado por el AutoLISP como un valor real y no como un valor entero. Los valores enteros debern estar entre -32768 y +32767. Para valores enteros fuera de estos rangos causar valores errneos. Algunas variables del sistema toman valores enteros, tal es el caso de la variable BLIPMODE que puede tomar valores de 0 para desactivado y 1 para activado. Reales: Es un nmero que incluye decimales de punto flotante. Si se desea escribir el valor de 0.134 no se lo podr escribir como .134, pues esto producir un error, por lo que tendremos que escribirlo con el 0 inicial. Algunas variables del sistema tienen asignados valores reales. Demos algunos ejemplo de este tipo de variables: FILLETRAD, TEXTSIZE, AREA, etc. Listas: Es una variable que contiene ms de un valor o una serie de valores. Los puntos o coordenadas son un tipo de listas que estn constituidos por dos (2D) o tres (3D) elementos numricos y que representan una coordenada. En las variables del sistema de nombre LASTPOINT, LIMMIN, LIMMAX, etc tienen asignado variables del tipo coordenada. Pickset: Una tabla que contiene puntos de elementos grficos, del set de seleccin creados con cualquier opcin de seleccin de objetos en AutoCAD, por ejemplo: window, crossing, etc. Ename (Nombre de una entidad): Este es un tipo de variable que representa al nombre de una entidad. A partir de ella se podr generar una lista donde este comprendida toda la informacin respecto a la entidad, ver comando ENTGET pgina 12. ATOMLIST Se recomienda no usar nombres de funciones del AutoLISP, como nombres de variables. El ATOMLIST es una variable en el AutoLISP que guarda todos los nombres de funciones definidas y nombres de variables. Se puede mirar esta lista tipiado lo siguiente: !atomlist Apareciendo entonces en pantalla lo que se ilustra en la 4:

3 Isla Fernandina N42-52 (Ciudadela Jipijapa) Telfono/fax: 920-890, 431-356 Quito-Ecuador

www.sincows.com

admin@sincows.com

Servicios Integrales en Computacin


SINCOW
Command: !ATOMLIST (INTERS GRREAD GRTEXT GRDRAW GRCLEAR TBLSEARCH TBLNEXT ENTUPD ENTMOD ENTSEL ENTLAST ENTNEXT ENTDEL ENTGET SSMEMB SSDEL SSADD SSLENGTH SSNAME SSGET ANGTOS RTOS COMMAND OSNAP REDRAW GRAPHSCR TEXTSCR POLAR DISTANCE ANGLE INITGET GETKWORD GETCORNER GETINT GETSTRING GETORIENT GETANGLE GETREAL GETDIST GETPOINT MENUCMD PROMPT SETVAR GETVAR TERPRI PRINC PRIN1 PRINT WRITE-LINE READ-LINE WRITE-CHAR READ-CHAR CLOSE OPEN STRCASE ITOA ATOF ATOI CHR ASCII SUBSTR STRCAT STRLEN PAUSE PI MINUSP ZEROP NUMBERP FLOAT FIX SQRT SIN LOG EXPT EXP COS ATAN 1- 1+ ABS MAX MIN NOT OR AND > >= /= = <= < ~ GCD BOOLE LSH LOGIOR LOGAND REM * - + ASSOC MEMBER SUBST LENGTH REVERSE LAST APPEND CDDDDR CDDDAR CDDADR CDDAAR CDADDR CDADAR CDAADR CDAAAR CADDDR CADDAR CADADR CADAAR CAADDR CAADAR CAAADR CAAAAR CDDDR CDDAR CDADR CDAAR CADDR CADAR CAADR CAAAR CDDR CDAR CADR CAAR CDR CAR CONS COND LISTP TYPE NULL EQUAL EQ BOUNDP ATOM NTH PAGETB PICKSET ENAME REAL FILE STR INT SYM LIST SUBR T MAPCAR APPLY LAMBDA EVAL *ERROR* / QUIT EXIT _VER VER IF UNTRACE TRACE DEFUN FOREACH REPEAT WHILE PROGN FUNCTION QUOTE READ LOAD SETQ SET MEM VMON ALLOC EXPAND GC ATOMLIST) Command: Lista guardada en la variable ATOMLIST. Como se muestra en pantalla. Todas las variables o funciones creadas por el usuario se irn integrando a esta lista, supongamos que hemos tipiado dentro del AutoCAD lo siguiente: (setp gus 8.9) (Defun ele () (* gus gus)) Despues de dar estas dos expresiones en AutoLISP, activamos la variable ATOMLIST, tendremos entonces en pantalla la siguiente lista, Ver 4:

Command: !ATOMLIST (ELE GUS INTERS GRREAD GRTEXT GRDRAW GRCLEAR TBLSEARCH TBLNEXT ENTUPD ENTMOD ENTSEL ENTLAST ENTNEXT ENTDEL ENTGET SSMEMB SSDEL SSADD SSLENGTH SSNAME SSGET ANGTOS RTOS COMMAND OSNAP REDRAW GRAPHSCR TEXTSCR POLAR DISTANCE ANGLE INITGET GETKWORD GETCORNER GETINT GETSTRING GETORIENT GETANGLE GETREAL GETDIST GETPOINT MENUCMD PROMPT SETVAR GETVAR TERPRI PRINC PRIN1 PRINT WRITE-LINE READ-LINE WRITE-CHAR READ-CHAR CLOSE OPEN STRCASE ITOA ATOF ATOI CHR ASCII SUBSTR STRCAT STRLEN PAUSE PI MINUSP ZEROP NUMBERP FLOAT FIX SQRT SIN LOG EXPT EXP COS ATAN 1- 1+ ABS MAX MIN NOT OR AND > >= /= = <= < ~ GCD BOOLE LSH LOGIOR LOGAND REM * - + ASSOC MEMBER SUBST LENGTH REVERSE LAST APPEND CDDDDR CDDDAR CDDADR CDDAAR CDADDR CDADAR CDAADR CDAAAR CADDDR CADDAR CADADR CADAAR CAADDR CAADAR CAAADR CAAAAR CDDDR CDDAR CDADR CDAAR CADDR CADAR CAADR CAAAR CDDR CDAR CADR CAAR CDR CAR CONS COND LISTP TYPE NULL EQUAL EQ BOUNDP ATOM NTH PAGETB PICKSET ENAME REAL FILE STR INT SYM LIST SUBR T MAPCAR APPLY LAMBDA EVAL *ERROR* / QUIT EXIT _VER VER IF UNTRACE TRACE DEFUN FOREACH REPEAT WHILE PROGN FUNCTION QUOTE READ LOAD SETQ SET MEM VMON ALLOC EXPAND GC ATOMLIST) Command: Lista guardada en la variable ATOMLIST. Obsrvese la incorporacin de las variables GUS y ELE dentro de la lista. IV. EXPRESIONES Una expresin en AutoLISP, empieza con un parntesis y finaliza con un parntesis que cierre al primer parntesis. Toda expresin dentro del AutoLISP presenta el siguiente formato: (Nombre-de-la-funcin argumento-1 argumento-2 ......) Digamos algunas reglas para las expresiones en AutoLISP: 1. 2. 3. 4. Toda expresin tienen parntesis que abren y que cierran la expresin Toda expresin tiene un nombre de funcin. El nombre de esta funcin debe estar inmediatamente despus de abrir un parntesis. Excepcin para el caso en el cual se usa la funcin quote o '. Toda expresin es evaluada o ejecutada y responde con un resultado, el cual puede ser del tipo lgico (T o NIL), Numrica, o un carcter string. Adems cualquier valor numrica o un carcter string ser considerado con un valor lgico T. Una expresin en AutoLISP puede contener otras expresiones en AutoLISP, por ejemplo: (SETQ re (/ 5.6 45.0)), La evaluacin de mltiples expresiones se las realiza desde los parntesis ms interiores a los ms exteriores.

V. TOMOS Y LISTAS

4 Isla Fernandina N42-52 (Ciudadela Jipijapa) Telfono/fax: 920-890, 431-356 Quito-Ecuador

www.sincows.com

admin@sincows.com

Servicios Integrales en Computacin


SINCOW
Un dato puede tener la forma de una "lista" o un "tomo". El atributo ms importante que un "tomo" puede tener, adems de su nombre, es un valor, as como las variables tienen valores. Ciertos tomos tienen valores estandares, el tomo NIL tiene el valor NIL, el tomo T tiene el valor T (verdad), y algunos tomos numricos tales como 14, 3.347, o -6.78E9, tienen los valores entero o nmero flotante correspondientes. Una lista es definida recursivamente como una secuencia de 0 a ms elementos encerrados entre parntesis: elementon). Una lista puede ser asignada a una variable conteniendo mltiples valores. Cada valor es llamado un elemento. Un punto en el dibujo esta constituido por una coordenada X y una coordenada Y, y si se encuentra en el espacio se incluir una coordenada Z. Para el AutoLISP estas coordenadas podran estar descritas por una simple variable, constituida esta variable a su vez por una lista de 2 o 3 elementos segn sea le caso, el primer valor de la lista lo constituir la coordenada X, el segundo la coordenada Y y si existe el tercer valor corresponde a la coordenada Z. Si el usuario tiene inters de dar una lista anteceder la palabra LIST para indicar que corresponde a una lista. Veamos por ejemplo las siguientes listas marcadas: (LIST "Hola" "Chao") (LIST 6 8 90 67 89 830) (LIST 3 2.2 7 "Elenita") Lista constituida por 2 elementos del tipo carcter alfa-numrico. Lista formada por 6 nmeros enteros Lista formada por 2 nmeros enteros, un nmero de punto flotante y un "string" o caracteres alfa-numricos. (elemento1 .......

El AutoLISP describe una entidad simple a travs de una lista la cual puede contener el nombre de la entidad, el tipo de entidad (lneas, arcos, crculos, etc), el nivel "Layer" asociado, y las coordenadas. Veamos a continuacin un ejemplo de lista que describe una entidad: ((-1 . <Entity name: 6000020>) (0 . "LINE") (8 . "PR") (10 . 75.0000 212.0000) (11 . 324.0000 83.0000)) El ejemplo anterior representa a una lnea con un nivel o "layer" asociado de nombre PR, y va desde la coordenada (75 212) a la coordenada (324 83). Se puede tambin tener en forma de una lista los Bloques, Estilos de texto, Tipos de lneas, nombres de vistas, en listas. Veamos algunos ejemplos de esta representacin: ((0 . "LAYER") (2 . "PRUEBA") (70 . 64) (62 . 3) (6 . "CONTINUOUS")) ((0 . "STYLE") (2 . "GUS") (70 . 0) (40 . 0.0000) (41 . 1.0000) (50 . 0.0000) (71 . 0) (42 . 0.1250) (3 . "ROMANS") (4 "")) El primero corresponde a un nivel o "layer" de nombre prueba con un tipo de lnea continua. La segunda lista corresponde a la definicin de un estilo de texto, el cual tiene un nombre de GUS y tiene asociado una forma de texto o "Font" de nombre ROMANS. VI. ASIGNANDO VALORES A VARIABLES Para asignar un valor a una variable usaremos la funcin SETQ, esta funcin dice al AutoLISP que asigne un valor a una variable, si deseamos por ejemplo asignar el valor 3.1416 a la variable de nombre PIE, lo haramos de la siguiente manera (SETQ pie 3.1416) La expresin SETQ es una abreviacin de Set quote. El quote es una funcin que evita que sean evaluados tomos o listas. Por lo tanto el valor 3.1416, para el caso de nuestro ejemplo, ser asignado directamente en la variable PIE. La expresin SET trata de evaluar cada uno de sus argumentos antes de ser asignados los valores. Veamos un ejemplo: (SET pie 3.1416) Para este caso el AutoLISP tratar en primer lugar de evaluar el valor de PIE y despus asignar al resultado de esa evaluacin el valor de 3.1416. Por lo tanto pie deber ser una expresin previamente definida, pues en caso contrario el AutoLISP no producir ningn tipo de asignacin y dar un mensaje de error. ASIGNANDO LISTAS A VARIABLES Se puede asignar una variable a una lista para ese caso la lista puede ser obtenida a travs de algn otro comando que crea listas como resultado o el usuario puede dar la lista. Veamos a continuacin 4 asignaciones a variables de listas, la ltima de ellas usa un comando que crea una lista con la informacin del nivel o layer asociado:

5 Isla Fernandina N42-52 (Ciudadela Jipijapa) Telfono/fax: 920-890, 431-356 Quito-Ecuador

www.sincows.com

admin@sincows.com

Servicios Integrales en Computacin


SINCOW
(setq lista1 (LIST "Hola" "Chao")) (SETQ lista2 (LIST 6 8 90 67 89 830) (SETQ lista3 (LIST 3 2.2 7 "Elenita")) (SETQ lista4 (TBLSEARCH "LAYER" "PRUEBA")) VII. FUNCIONES MATEMTICAS El AutoLISP permite usar expresiones matemticas, las cuales son comunes a otros lenguajes de programacin, mas no su nomenclatura, pues si deseamos realizar la suma 3+6, la escribiremos en muchos lenguajes de esa misma forma, mientras que en AutoLISP el formato es diferente, y lo haremos de la siguiente forma: (+ 3 6), obteniendo as el resultado de 9. Las funciones matemticas son: (+ x y) (/ x y) (- X Y) (* x y) (abs x) (exp x) (expt x y) (gcd a1 a2) (sqrt x) (log x) (1+ n) (1- n) (rem a1 a2 a3) (max x y z) (min x y z) Retorna la suma entre "x" "y" Retorna la razn entre "x" y "y" Retorna la diferencia entre "x" y "y" Retorna el producto entre "x" y "y" Da el valor absoluto de x Responde con el resultado de e elevado a la potencia x Retorna con el valor de "x" elevado a la potencia "y" Da el mayor comn denominador de los argumentos. a1, a2, etc deben ser nmeros enteros Da la raz cuadrada de "x" Da logaritmo natural de "x". Incrementa el valor de n en 1 Resta el valor de n en 1 El remanente que resulta de la divisin entre a1 y a2.. El valor mximo entre los argumentos El valor mnimo entre los argumentos

Veamos algunos ejemplos en los cuales se observa el uso de funciones aritmticas. (SETq a (/ 9.0 3) (SETq a (* a 4 2) Se asigna el valor de 3.0 a la variable a Al valor de a se lo multiplica por 4 y por 2, dando esta operacin un valor de 24.0 y este valor se reasignar a la variable a.

(SETQ b (/ (sqrt a) (exp (- a 9.0)))) Esta expresin es equivalente a escribir: Va b = -------e(a-9) ; y el resultado se guardar en la variable b (b = 1.4986x10-6). (SETQ c b) Para este caso el valor de b es asignado a la variable c (c = 1.4986x10-6). (setq a 3) (+ (setq b (* a 2)) (+ b 2)) Reasigna la variable b al valor de a*2, y con ese valor de b entra a realizar la siguiente expresin esta es b+2. (Resulta: 14) (b = 6) (+ (* a 3) (setq a (+ a 3))) En este caso la expresin (* a 3), no es alterada por la reasignacin que se hace a continuacin en la expresin (Setq a (+ a 3)), por tanto el resultado que dar el LISP ser de 15 y la variable a tendr un valor de 6. Las dos ltimas expresiones no son posibles de realizarlas en lenguajes comunes de programacin. Con excepcin del lenguaje "C", que si permite este tipo de asignacin de variables, an cuando la nomenclatura es un tanto ms difcil. Lo que se dice frente a las dos ltimas expresiones que se muestran en la parte superior, permite hacer ciertas puntualizaciones respecto a la manera en que el AutoLISP evala las expresiones, esto es que la evaluacin de una expresin cualquiera la realiza de izquierda a derecha y de los parntesis ms interiores a los ms exteriores. Cuando una expresin se encuentra dentro de otra expresin la totalidad de esta expresin interna es evaluada, pasando luego a la siguiente expresin (que se encuentra a la derecha). Una gran ventaja del usar parntesis dentro de las expresiones es que el usuario nunca escribir una frmula que ser evaluada en forma diferente a la que ste lo desea. Digamos adems que dentro de cualquier expresin matemtica en la que todos sus argumentos son enteros, el resultado ser un valor entero y cualquier parte fraccional ser eliminada. Si algn argumento es real, el resultado ser un real. VIII. USANDO FUNCIONES GET PARA ENTRADA DE DATOS Un grupo de comandos dentro del AutoLISP se pueden usar para ingresar datos a travs del teclado o en algunos casos a travs de marcar uno o dos puntos en el dibujo.

6 Isla Fernandina N42-52 (Ciudadela Jipijapa) Telfono/fax: 920-890, 431-356 Quito-Ecuador

www.sincows.com

admin@sincows.com

Servicios Integrales en Computacin


SINCOW
VIII.1. GETREAL Este comando permite introducir nmeros reales a travs de tipearlo desde el teclado, si se tipea un nmero entero este ser interpretado como un nmero real. Formato: (GETREAL "Mensaje entre comilla") Ejemplo: (setq re (getreal "De el valor de re: ")) Aparece: De el valor de re: 56 Res. Lisp: 56.0000 Despues de escribir el mensaje el programa esperar que se de el valor numrico que se desea asignar a la variable re. En el ejemplo el valor es 56, mas este valor ser guardado como un nmero real dentro de la variable re. Si se tipea por error un "string" el programa dar un mensaje de error y regresar a preguntar nuevamente el valor real. VIII.2. GETINT Este comando interroga sobre un valor entero que el usuario deber dar a travs del teclado. Formato: (getint "Mensaje entre comillas: ") Ejemplo (setq ent (getint "Valor entero: ")) Aparece: Valor entero: 56 Res. Lisp: 56 Si se introduce un valor con decimales el valor numrico no ser ingresado y pedir al usuario que vuelva a dar el valor, a continuacin ilustramos con un ejemplo lo dicho: Command: (Getint "Valor real: ") Valor real: 5.5 Requires an integer value. Try again: 35.7 Requires an integer value. Try again: 8.96 Requires an integer value. Try again: 9 El valor de 9 ser aceptado por el AutoLISP, y ingresar dentro de este. VIII.3. GETANGLE Responde con el ngulo que existe entre dos puntos marcados o a travs de dar el valor numrico de ngulo. Para el caso en el cual se da un valor en grados el AutoLISP lo transformar en un ngulo en radianes, esto es para el caso en el cual el usuario ha tipeaqdo el valor de 30 grados el AutoLISP lo integrar dentro de s con un valor de 0.523598, esto hay que tener muy en cuenta pues todas las funciones trigonomtricas o sea que manejan ngulos lo hacen siempre en radianes, lo cual es una clara diferencia con el uso de ngulos en AutoCAD. Formato: (getangle Puntos_base "Mensaje pantalla entre comillas")

Ejemplo (setq ang (getangle "De valor del ngulo: ")) Aparece: De valor del ngulo: 30 Res. Lisp: 0.523598 El tipo de variable que se tiene al usar este comando ser del tipo real. Ejemplos: Command: (setq a (getangle "Angulo: ")) Angulo: 1,1 Second point @1,1 Es equivalente a tipear: 2,2 o @1.41421356<45 0.785398 Valor que responde el AutoLISP y para este caso se guardar en la variable a. VIII.4. GETCORNER Responde con una coordenada en dos dimensiones, que corresponde a la segunda esquina de un rectangulo marcado. Como se entender el dato ser del tipo de lista constituida por dos elementos. El primer elemento se conoce como "punto base", y este siempre deber ser dado Formato: (getcorner Punto_base "Mensaje pantalla entre comillas") Ejemplo: (setq esq (getcorner (list 1 1) "valor de la esquina "))

7 Isla Fernandina N42-52 (Ciudadela Jipijapa) Telfono/fax: 920-890, 431-356 Quito-Ecuador

www.sincows.com

admin@sincows.com

Servicios Integrales en Computacin


SINCOW
Aparece: Valor de las esquinas 6,7 Res. Lisp: (6 7) Ejemplos: Command: (setq as (getcorner (getpoint "Primer punto: ") "Segundo: ")) Primer punto: 1,2 Cualquiera de estos valores sirve para obtener el mismoresultado, esto es la coordenada 4,6 Segundo: @3,4 4,6 @5<53.13 (4 6) El AutoLISP responder con la coordenada 4,6 en el formato de lista como se muestra. VIII.5. GETPOINT Responde con una coordenada en forma similar a la funcin GETCORNER, aun cuando para ese caso el "punto base" es impresindible mientras que para el GETPOINT es opcional. Formato: (getpoint Punto_base "Mensaje para la pantalla") (getpoint "Mensaje para la pantalla") Ejemplos: Command: (getpoint "Marque el punto") Marque el punto: Se deber marcar el punto a travs de cualquier opcin conocida VIII.6. GETDIST Esta opcin responde con un valor real, que puede ser producto del clculo de la distancia entre dos puntos que el usuario marque o simplemente un valor nmerico tipeado desde el teclado Formato: (Getdist "Mensaje") Ejemplos: Command: (Getdist "Marque la distancia: ") Marque la distancia: 6 6.0000 Command: (Getdist "Marque la distancia: ") Marque la distancia: 7.3 7.3000 Command: (Getdist "Marque la distancia: ") Marque la distancia: 1,3 Second point: 4,6 4.2426 Command: (Getdist "Marque la distancia: ") Marque la distancia: 1,6 Second point: @35<31 35.0000 Command: (Getdist "Marque la distancia: ") Marque la distancia: De una coordenada usando cursor Second point: De una nueva coordenada x.xxx Dara un valor real VIII.7. Funciones GET dentro de mens Cuando se a activado alguna instruccin GET, dentro del men ser necesario producir una pausa despues de la instruccin GET, tal como se muestra a continuacin Ejemplo: [prueba]^c^c(setq prueba (getreal "De un real" )) \ Para el ejemplo que se ilustra el smbolo \ es aquel que produce una pausa, pues en caso de no ponerla el programa no producir una pausa para que el usuario introduzca su dato. Esto muestra una clara diferencia con el caso de dar esta instruccin dentro de un programa o dentro del modo normal de edicin, pues en esos casos las instrucciones GETxxx producen por si mismas una pausa hasta que el usuario ingrese el dato. Ejemplo: [prueba]^c^c(setq pr2 (getcorner (list 1 2)) \ Para este ejemplo el programa pedir el valor de la otra coordenada y la pausa se producir por el smbolo \. Se pudo contestar con @5,6 etc

8 Isla Fernandina N42-52 (Ciudadela Jipijapa) Telfono/fax: 920-890, 431-356 Quito-Ecuador

www.sincows.com

admin@sincows.com

Servicios Integrales en Computacin


SINCOW
IX. SELECCION DE LOS VERTICES EN UNA POLI-LINEA (APLICACION) Para seleccionar y encontrar los vrtices de una poli-lnea primero deber ser seleccionada la poli-lnea a travs de cualquiera de las opciones de seleccin. Veamos el siguiente ejemplo: (set ed (entsel)) Seleccione una poli-lnea marcndola usando el mouse. (setq ed (car ed)) Selecciona la primera parte de ed que corresponde al nombre de la entidad. (entget ed ) Caractersticas generales de la poli-lnea donde no se tiene las coordenadas de los vrtices. Para obtenerlos se deber escribir lo siguiente: (setq rw (entget (entnext ed))) En la variable rw se guardar el nombre de la entidad que corresponde al primer vrtice de la poli-lnea. Para obtener el segundo vrtice se deber escribir lo siguiente. (Setq rs (entget (entnext (entnex ed)))) X. ALGUNAS PALABRAS SOBRE EL LISP El lenguaje LISP es uno de los lenguajes ms antiguos de programacin para inteligencia artificial, la versin ms antigua fue la 1.5, descrita en 1962 en la revista "Programmers Manual" escrita por McCarthy. El nombre LISP resulta de unir las palabras "List Programming", este lenguaje tiene una estructura de datos que podramos llamar "estructura en listas", en la mayora de situaciones en la programacin en LISP, un dato puede tener la forma de una lista o un tomo. El atributo ms importante que un tomo puede tener, adems de su nombre, es el tener un valor, al igual que las variables. Ciertos tomos tienen valores estndares, el tomo NIL tiene el valor NIL (nulo, fin de archivo o fin de ejecucin del programa), el tomo T tiene el valor T (verdad) y algunos tomos numricos tales como 14, 3.347, o -6.78E9, tienen los valores entero o nmero flotante correspondiente. Una lista es definida recursivamente como una secuencia de 0 o ms elementos encerrados entre parntesis. (elemento1 .....elementon) El LISP presenta una serie de posibilidades, tanto para manejar variables, expresiones aritmticas e incluso comandos completos dentro de una misma definicin, permitiendo de esta manera crear verdaderos comandos. Toda expresin dentro del LISP presenta el siguiente formato: (Nombre-de-la-funcin argumento1 argumento2....) Las variables dentro del LISP pueden ser de cuatro tipos: variable entera, real, "string" (alfa numrica) o una coordenada. El tipo de variable es automticamente asignado. Todo valor esta asociado a un tipo de variable. Es posible adems nombrar a las varibales con uno o varios caracteres, cuyo primer caracter es una letra del alfabeto. Se dispone adems de funciones aritmticas, trigonomtricas y geomtricas, veamos algunos ejemplos de ellas: (+ x y) (/ x y) (abs x) (sqrt x) (log x) (angle p1 p2) (1+ n) (1- n) Retorna la suma entre "x" "y" Retorna la razn entre "x" y "y" Da el valor absoluto de x Da la raz cuadrada de "x" Da logaritmo natural de "x". Angulo entre los punto "p1" y "p2" Incrementa el valor de n en 1 Resta el valor de n en 1, etc.

Las funciones anteriores n son todas las que se dipone dentro del LISP, pues la intecin es solamente ilustrar como se expresan las funciones dentro del lenguaje al que nos referimos. El LISP dispone adems de instrucciones condicionales, tal es el caso del (IF condicin (accin)), o el (COND). Lazos lgicos como (WHILE) (PROGN), etc.

9 Isla Fernandina N42-52 (Ciudadela Jipijapa) Telfono/fax: 920-890, 431-356 Quito-Ecuador

www.sincows.com

admin@sincows.com

Servicios Integrales en Computacin


SINCOW
Una de las caractersticas del lenguaje de programacin LISP, desde sus orgenes, es la posibilidad de definir funciones que pueden ser usadas en forma recursiva, esto es que mientras se esta ejecutando una funcin, dentro de la ejecucin se llama a si misma. Esta capacidad que presenta el lenguaje LISP es la principal razn para su uso en aplicaciones de inteligencia artificial. Veamos el ejemplo caracterstico con que se suele ilustrar en los libros que hacen referencia al LISP y a la recursividad, el cual es el clculo del factorial de un nmero. Este programa define una funcin de nombre factorial con una "variable global" de nombre n, la cual va a ser manipulada en forma recursiva. (DEFUN factorial (n) (COND ((EQ n 1) 1) (T (* n (factorial (1- n))) ) )1 Para ejecutar la definicin anterior se deber escribir, por ejemplo: (factorial 4) Esto producir la siguiente evaluacin: En primer lugar a la variable n se le asigna el valor de 4 y entrara a evaluar la expresin (CON...). El COND toma un par de expresiones cada vez, el primer par es ((EQ n 1) 1), si el primer par es evaluado como verdad T, el valor de la derecha de la expresin ser asignado, en este caso el valor 1. Si la expresin es evaluada como NIL (falso) el prximo par ser evaluado (T (* n (factorial (1- n))), T siempre T y por tanto se proceder a calcualr la expresin (* n (factorial (1- n))), la cual para el valor que asignamos sera: (* 4 (factorial 3) = 4 x valor del factorial de 3 valor del factorial de 3 = 3 por valor del factorial de 2 valor del factorial de 2 = 2 por valor del factorial de 1 valor del factorial de 1 = 1 La ltima lnea evaluar la expresin ((EQ n 1) 1) como verdad por lo que saldramos de la funcin factorial con el valor de 24, para este ejemplo. A continuacin se va a plantear la solucin de la funcin seno a travs de la defincin de funciones recursivas. En primer lugar tenemos la necesidad de crear una suma exponencial de enteros sucesivos entre los valores b y a, para lograrlo revsese la funcion ses que se muestra a continuacin: (DEFUN ses (b a) (COND ((> b a) 0) (T (+ (EXP 1) (ses (+ b 1 a))))) La funcin ses anteriormente ilustrada podramos generalizarla para cualquier tipo de operador, reemplazando la funcin EXP por un nombre cualcuiera y lo concluiramos como una variable ms de la funcin a definirse. Observemos esta generalizacin en el programa sum, en el cual su primer elemento deber ser una funcin, como: EXP, SIN, COS, TAN, etc. (DEFUN sum (f count limit) (COND ((> count limit) 0) (T (+ (f count) (sum f (+ count 1) limit))))) La funcin seno definida como una serie de potencia tiene la siguiente forma: senox= (-1)n X2n+1 (2n+1)

Para mayor claridad, las funciones propias y originales del LISP las escribo con maysculas, mientras que las variables y funciones que se van creando en el desarrollo de un programa las escribo con letras minsculas, lo cual es indiferente para el LISP, ya que ste las transforma a maysculas. 10 Isla Fernandina N42-52 (Ciudadela Jipijapa) Telfono/fax: 920-890, 431-356 Quito-Ecuador

www.sincows.com

admin@sincows.com

Servicios Integrales en Computacin


SINCOW
Plantimonos ahora la solucin de la funcin seno usando la serie de potencia que se muestra anteriormente (DEFUN sen (n) (SETQ pou (1+ (* 2 n))) (* (/ (expt x pou) (factorial pou)) (COND ((= n 0) 1) (T (expt -1 n))))) (DEFUN seno (x) (SUM sen 0 5) )

XI. FINCIONES IMPLICITAS DE AUTOLISP


+ * / < <= = /= >= > ~ 1+ 1ABS *ADS ALLOC AND ANGLE ANGTOS APPEND APPLY ASCII ASSOC (+ arg1 arg2 arg3...) Suma de argumentos. Regresa la suma de todos los numeros, como enteros o nmeros reales dependiendo de los valores. (- arg1 arg2 arg3...) Equivalente a arg1 - arg2 - arg3. Regresa la diferencia del primer nmero sustrado de la suma de los nmeros remanentes. Un nmero entero o real es regresado dependiendo del valor. (* 1rg1 arg2 arg3...) Multiplicacin de argumentos. Regresa el producto de todos los nmeros. Divisin (/ arg1 arg2 arg3 ...) Arg1 dividido para Arg2. Regresa el quociente del primer nmero dividido por el producto de los nmeros restantes. (< Exp1 Exp 2) Menor que (< = Exp1 Exp2) Menor o igual que (= Exp1 Exp2) Igual. Puede tener mltiples argumentos comparando el primer argumento a todos los otros argumentos. Responde T si los argumentos son numricamente iguales, caso contrario responde NIL. Slo son vlidos nmeros y strings. (/= Exp1 Exp2) Distinto que. Puede tener mltiples argumentos comparando el primer argumento con los dems. (>= Exp1 Exp2) Mayor o igual que (> Exp1 Exp2) Mayor que (~ num) Se obtiene el equivalente a (1 - (* num - 1), num debe ser entero. Regresa la negacin del "bitwise" del nmero. (1+ arg) Sume arg. en uno (1) (1- arg) Reste arg. en uno (1) (ABS arg) Valor absoluto de arg. (ADS) Da una lista de nombres y caminos de directorios y sub-directorios de las aplicaciones ADS actuales. Si no hay ninguna cargada, regresa a nil (ALLOC number) Coloca segmentos (grupo de nudos) al nmero de regresa a la serie anterior (AND expression ...) Y lgico. Regresa a T si todas las expresiones son verdad, sino regresa a NIL y cesa la evaluacin en la primera expresin NIL encontrada. (ANGLE point point) Regresa un ngulo en radianes de un eje X en sentido antihorario a una lnea entre dos puntos. (ANGTOS angle mode precision) Convierte ngulos a "string" (APPEND list) Una funcin con lista de argumentos. La funcin concatena las listas para producir una sola. sola lista conteniendo todos los elementos de las listas sustituidas. (APPLY function list) Regresa una valor de la lista despus de aplicar la funcin a la lista de argumentos. Generalmente la funcin y lista estn entre comillas por lo que sus contenidos no sern evaluados. Ej. (APPLY f '(2 4.1)) Resultado 8.2 (ASCII string) Da el valor ASCII del primer caracter del "string" (ASSOC item list) Existe una herramienta especial para facilitar la bsqueda y el regreso del valor de un atributo especificado en una lista asociada, esto es la funcin ASSOC, la cual es llamada con dos argumentos. El primero es el atributo o llave requerida, el segundo es la lista misma. Ejemplo: (ASSOC OWNS VEHICLE FRED), la evaluacin de esta funcin producir el resultado: (OWNS VEHICLE BICYCLE). Program Design # 62. (ATAN arg.) Arco-tangente de arg. (ATOF string) Convierte una representacin ASCII de un nmero real a un nmero real de punto flotante. (ATOI string) Convierte una representacion ASCII de un entero a un valor entero. (ATOM item) Responde T si la variable que se esta sensando es un "atom" (o no es una lista) en caso contrario responder NIL. !ATOMLIST Lista de todos los nombres usados en el AutoLISP, se va incluyendo los nuevos nombres que se vayan creando, este no es un comando del AutoLISP, sino un nombre de variable (tipo lista) donde se encuentra de todos los nombres usados por el AutoLISP. (BOOLE function integer integer ...) Regresa una de las 16 operaciones boleanas, basadas en el valor de la funcin, en cualquier nmero de integrales. Es un sistema para manipulacin de datos binarios. (BOUNDP atomo) Responde con T (verdad) si el "atomo" tiene un valor, de otra manera lo regresa NIL. (CADR list) Regresa al segundo elemento en la lista (CAR (CDR var.)) (CAR list) Responde con el primer elemento de una lista (CDR list) Responde con una lista sin el primer elemento de la lista original. (C????R list) Regresa un elemento o una lista difinida por la combinacin de caractres a y d en la expresin, a ms de cuatro niveles de profundidad. Por ejemplo CAADR, CDDR, CADAR, etc. Equivalente a: (CAR (CAR var.)) (CAR (CAR var.)) (CDR (CDR var.)) (CAR (CAR (CAR var.))) (CAR (CAR (CDR var.))) (CAR (CDR (CAR var.))) (CAR (CDR (CDR var.))) (CDR (CAR (CAR var.))) (CDR (CAR (CDR var.)))

ATAN ATOF ATOI ATOM - ATOMLIST BOOLE BOUNDP CADR CAR CDR C????R CAAR CDAR CDDR CAAAR CAADR CADAR CADDR CDAAR CDADR

11 Isla Fernandina N42-52 (Ciudadela Jipijapa) Telfono/fax: 920-890, 431-356 Quito-Ecuador

www.sincows.com

admin@sincows.com

Servicios Integrales en Computacin


SINCOW
(CDR (CDR (CAR var.))) (CDR (CDR (CDR var.))) (CAR (CAR (CAR (CAR var.)))) (CAR (CAR (CAR (CDR var.)))) (CAR (CAR (CDR (CAR var.)))) (CAR (CAR (CDR (CDR var.)))) (CAR (CDR (CAR (CAR var.)))) (CAR (CDR (CAR (CDR var.)))) (CAR (CDR (CDR (CAR var.)))) (CAR (CDR (CDR (CDR var.)))) (CDR (CAR (CAR (CAR var.)))) (CDR (CAR (CAR (CDR var.)))) (CDR (CAR (CDR (CAR var.)))) (CDR (CAR (CDR (CDR var.)))) (CDR (CDR (CAR (CAR var.)))) (CDR (CDR (CAR (CDR var.)))) (CDR (CDR (CDR (CAR var.)))) (CDR (CDR (CDR (CDR var.)))) (CHR integer) Convierte el valor entero de un caracter ASCII a un string que consiste de ese caracter. (CLOSE file-desc) Cierra un archivo definido con la variable file-desc. La variable file-desc debe ser asignada a un nombre de archivo vlido. COMMAND (COMMAND "Nombre_Comando" argumento arg2...) Envia sus argumentos como entrada al AutoCAD, Strings y nmeros son tomados como entradas literales, otros argumentos envian el valor de su expresin como entrada al AutoCAD. La funcin COMMAND sola ejecuta un regreso (COMMAND nulo) ejecuta una <^C>. El smbolo PAUSE (una variable colocada a "\"), usada como un argumento de la funcin COMMAND detiene la funcin COMMAND para el ingreso del usuario. COND (COND (Primera_condicin Primeros_argumentos) (segunda_condicin Segundos_argumentos).. ..... (T Ultimos_argumentos)) COND trabaja en forma muy parecida al IF con la diferencia que COND puede evaluar cualquier nmero de condiciones de prueba. Por lo que diramos que COND es un tipo de rutina IF mltiple. Una vez que el COND encuentra la primera condicin que es NON-NIL, este procesa la oracin asociada con esa condicin. El COND procesa nicamente la primera condicin NON-NIL. CONS (CONS item item) Funcin de dos argumentos, una "lista" y un "atom". La funcin responde con una nueva lista en la que aparece adicionado el tomo en la primera posicin de la lista original. (CONS tomo lista) COS (COS arg.) Coseno de arg *CVUNIT (CVUNIT number from-units to-unit) Responde con un nmero real en el sistemas de medida "TO-UNITS", convertido el nmero desde el sistema de medida from-units. From-units y to-units son strings correspondientes a definiciones en el archivo ACAD.UNT DEFUN (DEFUN name (argument .../ local ...) expresion ...) Se puede definir funciones propias en AutoLISP. Se cre ya una nueva funcin llamada C:HOLE con la funcin DEFUN (DEF = definir FUN = funcin). Esta define una funcin construyendo una lista estructurada de oraciones del programa. Sus funciones de AutoLISP crean un medio ambiente local contenido en si mismo. Los datos pasan dentro de la funcin local de medio ambiente y el programa usa y manipula los datos, luego los pasa a los datos del AutoLISP general al AutoCAD. Formato (defun NAME (ARGs /LOCALS) Argumentos del programa.... . DISTANCE (DISTANCE point point) Responde con una distancia entre dos puntos en 3D o 2D. ENTDEL (ENTDEL ename) Borra o restaura el "ename" dependiendo de su condicin en la seccin actual de edicin. ENTGET (ENTGET entidad) Da una lista de informacin de la entidad seleccionada. ENTLAST (ENTLAST) Selecciona la ltima entidad dibujada. Formato de salida: <Entity name: 600014> *ENTMAKE (ENTMAKE edata) Cuando se ha dado una lista vlida edata (una entidad definida por una lista de datos en formato ENTGET) crea una nueva entidad y responde la lista. ENTMOD (ENTMOD list) Actualiza una entidad en la base de datos con una nueva lista de descripcin de datos de la nueva entidad y respondiendo con la nueva lista de datos de la entidad. Las entidades son regeneradas inmediatamente en la pantalla con los nuevos datos, excepcin esta para entidades ms compleja (vrtices de poli-lnea y atributos de bloque) que requiere usar la funcin ENTUPD. ENTNEXT (ENTNEXT ename) Regresa al primer nombre de entidad no borrada en la base de datos. Si el "ename" esta dado, se recuperar el nombre de la entidad no borrada que se encuentra a continuacin del "ename". ENTSEL (ENTSEL prompt) Selecciona la entidad que se marque: Responde: <Entity name: 600014> (3.89 2.89) ENTUPD (ENTUPD ename) Permite actualizacin selectiva de los nombres de las entidades de los vrtices de una poli-lnea y los atributos "ename" del bloque despus de que un "entmod" ha sido realizado. EQ (EQ arg1 arg2) Se usa la funcin EQ para probar listas, para observar si ellas estan seteadas (bound) a los mismos objetos. EQ generalmente es equivalente al = y al EQUAL para comparacin numrica de strings. EQUAL (EQUAL expresion expresin exactitud) Regresa un valor de T si la primera expresin es igual a la segunda, de otra manera responde NIL. El valor de la exactitud (es opcional) determina cuan exactos deben ser dos nmeros para ser considerados iguales. *ERROR* (*ERROR* string) Una funcin de error definida por el usuario; el "string" contendr un mensaje describiendo el error. EVAL (EVAL expresion) Regresa el resultado de evaluar la expresin Ej. (SETQ W (LIST 1 3 3.3 9 9.4)) (SETQ WW 'W) (SETQ SW (EVAL WW) EXP (EXP arg) e a la potencia arg EXPAND (EXPAND) Intenta asignar un nmero del nudo desde el espacio del "heap" (asociado a la variable LISPHEAP) al espacio del stack (asociado a LISPSTACK) y responde con el nmero actualmente requerido. (Ej. idle.lsp en la versin 10) EXPT (EXPT base power) La "base" a la potencia "power" FINDFILE (FINDFILE nombre_archivo) Respnde con el nombre del archivo con el "Path" pista asocaida al archivo, si el archivo es encontrado, caso contrario contesta con NIL. Busca unicamente el directorio especificado si la pista es dada como parte del nombre del archivo. Si no es dada la pista busca en la biblioteca de pistas del AutoCAD. Wild cards no son permitidas. FIX (FIX x) Transforma el valor real "x" a entero FLOAT (FLOAT x) Punto flotante. Transforma el valor entero "x" a real FOREACH (FOREACH nombre lista expresin) FOREACH es otra funcin de ejecucin de oraciones. Esta funcin saca cada artculo de una lista y lo usa como una variable temporal en las siguientes oraciones. FOREACH es usada en muchas aplicaciones para ejecutar una funcin en cada miembro de una lista, ejecutando una vez para cada miembro. Formato: (foreach item list statements...) El artculo es cualquier alias que se dese usar como el nombre temporal de una variable para los artculos actuales de ejecucin de la lista. Las oraciones dentro de la ejecucin deben referirse al artculo actual de la lista por su alias. El valor del artculo es local al FOREACH. GC (GC) Recoge cualquier basura de los nudos sin limitarse a los smbolos y los aumenta al espacio libre de nudos. CDDAR CDDDR CAAAAR CAAADR CAADAR CAADDR CADAAR CADADR CADDAR CADDDR CDAAAR CDAADR CDADAR CDADDR CDDAAR CDDADR CDDDAR CDDDDR CHR CLOSE

12 Isla Fernandina N42-52 (Ciudadela Jipijapa) Telfono/fax: 920-890, 431-356 Quito-Ecuador

www.sincows.com

admin@sincows.com

Servicios Integrales en Computacin


SINCOW
GCD GETANGLE (GCD arg1 arg2) El mayor denominador comn de los argumentos "arg1" y "arg2". "arg1" y "arg2" enteros positivos. (GETANGLE basept promptstring) Retorna un ngulo entre 2 puntos en radianes. El valor puede ser dado por el usuario o determinado por dos puntos dados por el usuario. El ngulo es medido en sentido contrario a las manecillas del reloj, desde el eje X, a menos que el ngulo sea revertido por el comando UNITS. Un punto opcional especifica el punto base para una linea de banda "rubber-band". El string opcional puede especificar instrucciones pra valores de puntos deseados. Utilice GETANGLE para rotacin (ngulos relativos) GETCORNER (GETCORNER basept promptstring) Regresa a la segunda esquina de un rectngulo GETDIST (GETDIST basept promptsring) Regresa la distancia de dos puntos o la salida tipeada GETENV (GETENV name) Regresa el valor del string del sitio de la variable del entorno del sistema operativo, especificado por el nombre del argumento, si lo encontr, en caso contrario regresa NIL Las variables del AutoCAD que debern ser seteadas antes de entrar al programa a travs de la lnea SET del DOS son ACAD, ACADCFG, ACADFREERAM, LISPHEAP, LISPTACK, ACADXMEM, ACADLIMEM. Ejemplo (getenv "acadfreeram"), si esta no ha sido sealada desde el DOS con el comando set, el AutoLISP reytornar nil. GETINT (GETINT promptstring) Responde con un valor entero dado por el usuario. El nmero ingresado deber estar entre -32768 y +32767. GETKWORD (GETKWORD promptstring) Regresa una lista de palabras claves pre-definidas GETORIENT (GETORIENT basept promptstring) Igual que "GETANGLE" pero no maneja el ngulo base este. GETPOINT (GETPOINT basept promptstring) Punto. GETREAL (GETREAL promptsting) Responde con un nmero Real dado por el usuario GETSTRING (GETSTRING flag promptstring) Si es "flag" es verdad (true) acepta espacios en "string" y requiere "return" para entrar. GETVAR (GETVAR string) Extrae el valor actual de una variable del AutoCAD GRAPHRSCR (GRAPHSCR) Equivalente al comando GRAPHSCR. GRCLEAR (GRCLEAR) Limpia temporalmente la pantalla de graficos en el prtico de vista actual. "Redraw" refrescar la pantalla. GRDRAW (GRDRAW point point color mode) Dibuja el vector entre dos puntos dados, con el color especificado. La lnea aparecer sobresaltada si el modo opcional no es cero. GRREAD (GRREAD track) Responde con el valor ASCII del caracter escrito. Lee directamente la salida del proyecto. Si esta presente la opcin track y no NIL, regresa a la localizacin actual del mouse o digitizador. GRTEXT (GRTEXT num string modo) Num = -1 Pone el string en el sitio del Layer; Num = 2 Pone el string en el sitio de la coordenada; Num = 0 al 20 Pone el string en el sitio del men. El modo corresponde a si se desea que aparezca resaltado o no el texto. Si se tipea simplemente (grtext), se lograr recgresar al mensaje inicial que apareca. HANDENT (HANDENT handle) Responde con el nombre de la entidad correspondiente al nombre permanente del manejador "handle", si el manejador ha sido habilitado, esto a travs de la variable del sistema HANDLES, esta variable debe tener un valor de 1 para estar activada. IF (IF condicin expresin expresin) Si la condicin no es NIL, la primera expresin es evaluada. Si la condicin es NIL o falsa, la segunda expresin opcional es evaluada. La funcin regresa el valor de la expresin evaluada. (If condicion. Ejecucin_para_verdad. Ejecucin_para_falso) Uno de las ms simples y ms usadas ramas de programa es la estructura IF, a veces tambin llamada IF-THEN-ELSE. Si el AutoLISP determina que la condicin es T, entonces (THEN) ejecuta la primera expresin y si es (NIL), ejecuta la segunda expresin. INITGET ( bits string) Inicializa la siguiente funcin "GET", controlando su entrada: 1 No permite una entrada nula. 8 No chequea lmites 2 El valor 0 no es permitido. 16 Retorna una coordenada en 3D (corriente) 4 Valor negativo no permitido. 32 Activa lnea de segmentos para ser usadas con "rubber-banding" Esto significa que cuando se seala un segundo punto de una lnea el dragado se mostrar con lneas de segmentos. Esto para el caso en que se emplee algun comando get donde se requieran dos puntos a marcarse. Se puede usar la suma de dos o ms valores cualquiera. Por ejemplo si se pone el nmero 6 (2 + 4) significar que no se podr ingresar ni valores negativos ni cero. El "string" opcional define una lista de palabras claves como entradas aceptables a una funcin GETxxx. Ejemplo: (INITGET 1 "XP XN YP YN ZP ZN") (GETPOINT (GETVAR "LASTPOINT")) Se podr marcar adems de una coordenada las letras XP XN YP YN ZP o ZN. (INTERS pt1 pt2 pt3 pt4) Responde con el punto que corresponde a la interseccin de las lneas que forman pt1 con pt2 y pt3 con pt4. (ITOA integer) Convierte enteros a "strings" (LAMBDA argument expression ...) Define una funcin en lnea proveyendo de argumentos a expresiones para su evaluacin. Ej. (SETQ F '(LAMBDA (X H) (* X H))) (LAST list) Funcin de un argumento (Una lista). Este responde con el ltimo elemento de la lista planteada (LENGHT list) Funcin de un argumento. Esta responde con un entero, que corresponde al nmero de elementos de una lista. (LIST expresion) Para asignar una lista de valores. Una lista es un grupo de elementos de cualquier clase de datos, tratados como una expresin y almacenados una una sola variable. Una lista en el AutoLISP puede contener cualquier numero de variables reales, enteros o "strings". Cualquier cosa que este entre parntesis es una lista. (LISTP arg1) Responde T si arg1 es una lista o hil en caso contrario. (LOAD Nombre_archivo expresion) Para cargar archivos de programa en AutoLISP, La expresin se evaluar si la cargada de la funcin falla. (LOG arg) Logaritmo natural de arg. (LOGAND num1 num2 num3 ....) Es el "and" o "Y nmerico" lgico entre los nmeros equivalentes binarios de num1, num2, num3,.... Los nmeros solo pueden ser enteros, y el resultado es un nmero decimal. Ejemplo: (logiand 11 12) Resultado: 8 ; Esto es por que el nmero 11 corresponde a 1011 y el 12 a 1100 en binario, si aplicamos el and lgico se obtiene el binario 1000 equivalente al nmero 8 (LOGIOR num1 num2 num3...) Es el "o" numrico lgico. Ejemplo: (logior 11 12) Resultado: 15. (LSH number numberbits) Regresa el resultado de la ejecucin de una funcin lisp en los elementos de una o ms listas. (MAPCAR function list) Regresa el resultado de la ejecucin de una funcin lisp en los elementos de una o ms listas. Ej. (MAPCAR F '(3 4 5 6.1) '(4 5 8.8 9.1)) Resulta (12 20 44 55.51). Veamos otro ejemplo del uso del comando mapcar (mapcar '+ (list 1.2 7.7 5.6 3.8) (list 0.9 8.7 6.5 4.3)) Resultado: (2.1 16.4 12.1 8.1) EJEMPLOS: (Setq a 3.3 b 2.2 c 1.1) (MAPCAR '+ (LIST A B C) (LIST 3 4 6) Respuesta: (6.3 6.2 6.1) (MAPCAR 'SIN (LIST B A C))

INTERS ITOA LAMBDA LAST LENGTH LIST LISTP LOAD LOG LOGAND LOGIOR LSH MAPCAR

13 Isla Fernandina N42-52 (Ciudadela Jipijapa) Telfono/fax: 920-890, 431-356 Quito-Ecuador

www.sincows.com

admin@sincows.com

Servicios Integrales en Computacin


SINCOW
(MAPCAR 'ABS (LIST 1 3 2.2 -4.1 -7 8 -3 2.2)) Respuesta (1 3 2.2 4.1 7 8 3 2.2) (MAPCAR 'ABS '(1 3 -2 7.7 -11.71 4)) Responde: (1 3 2 7.7 11.71 4) (MAPCAR 'CAR (LIST (LIST 1 2 3) (LIST 4 5 6))) Responde: (1 4) (MAPCAR 'CDR (LIST (LIST 1 2 3) (LIST 4 5 6))) Responde: ((2 3) (5 6)) MAX (MAX arg1 arg2 arg3 ....) Mximo de los argumentos. Regresa el valor ms alto en una serie de nmeros MEM (MEM) NODES: 1024 Free nodes: 461 Segments: 2 Allocate: 512 Collection: 4 Free hesp: 19966 MEMBER (MEMBER arg1 lista1) Crea una nueva lista que empieza con el arg1 hasta el fin de la lista1 nombrada. Si el arg1 no es elemento de la lista1 respondera una lista nula o NIL. Esta lista ser creada para el caso en el cual el arg1 sea un miembro de la lista1 MENUCMD (MENUCMD string) Muestra la pgina de men de un string especificado. El string debe inclur el tipo de men y el nombre de la pgina de acuerdo al estandard de men. Ejemplo: (menucmd "s=undo") En este caso se ordena al AutoCAD que pase al men detipo "screen" de nombre "undo" (menucmd "i=datos") $i=* Para este caso se ordena entrar a un menu del tipo "icon" de nombre datos. Es importante para este caso destacar la necesidad de accionar a continuacin del comando la opcin $i=*, tambin se podr escribir (menucmd "i=datos") (menucmd "i=*") MIN (MIN number number) Regresa el valor ms bajo en una serie de nmeros. Mnimo de los argumentos MINUSP (MINUSP num) Da V si num es negativo, sino da NIL. *NENTSEL (NENTSEL prompt) En entidades simples da una lista que contiene el nombre de la entidad y la coordenada usada para escoger la entidad, como el ENTSEL. En las poli-lneas da una lista conteniendo el nombre de la sub-entidad "subentity" del vrtice y el punto de la coordenada utilizada para escoger la entidad. Para la insercin de bloques, si es seleccionado un atributo, da el nombre de la sub-entidad del atributo y el punto donde fue escogida la entidad. Para insertar bloques en los que no se a escogido un atributo, da una lista conteniendo el nombre de la entidad con la definicin de bloque, una matriz de puntos usada para transformaciones del sistema de coordenadas y la definicin "nested" del bloque que la entidad seleccionada tiene. La opcin opcional del string puede dar instrucciones especcas para la seleccin de entidades. NOT (NOT item) Negacin lgica NTH (NTH num lista) Da un item especificado por la posicin del entero. Da un resultado NIL si la posicin del entero excede la longitud de la lista. Sacar el elemento nmero "num-1" de la lista Ej. (NTH 0 A) (NTH 1 A).... NULL (NULL item) Responde T si el item esta unida a un valor NIL, de otra manera responde NIL, Esta opcin es tipicamente usada en listas. NUMBERP (NUMBERP item). Regresa a N si N es un nmero OPEN (OPEN "Nombre-archivo" "w") Para escritura en el archivo nombrado. (OPEN "Nombre-archivo" "r") Para lectura del archivo nombrado. NOTA: "r" y "w" deben ser siempre minsculas. OR (OR expression ...) O lgico. Regresa a T si una de las expresiones es verdad, sino regresa a nil o cesa la evaluacin en la primera expresin verdadera encontrada. OSNAP (OSNAP Punto1 "snap_object") Activa el "snap object" u objeto de ajuste en la coordenada Punto1. Ejemplo: (osnap (list 4.5 6.7) "end") (osnap (getpoint) "int") etc. PAUSE (PAUSE) Pausa. La constante pausa en usada en la funcin command para esperar que el ingreso de datos del usuario. PI (PI) Valor de PI (3.1415926) POLAR (POLAR p1 ang d) Da la coordenada que corresponder de medir una distancia "d", desde el punto "p1" y con un ngulo "ang". PRIN1 (PRIN1 expression file-desc) Imprime la expresin a la pantalla y regresa la expresin. Si se ha dado un archivo destino y este archivo esta abierto para escritura, la salida es redirigida al archivo destino PRINC (PRINC expression file-des) Imprime la expresin a la pantalla y regresa a la expresin, con excepcin de los caracteres de control que no son evaluados. Si un archivo destino es dado y el archivo se encuentra abierto para escritura, la salida es redirigida al archivo destino. PRINT (PRINT expression file-desc) Imprime una nueva lnea y la expresin a la pantalla y regresa a una nueva lnea y expresin. Si se ha dado el archivo destino opcional y el archivo esta abierto para escritura, la salida es redirigida al archivo destino PROGN (PROGN expresion ...) Las oraciones con "IF" estan limitadas a un solo "THEN" y a un solo "ELSE". Si se desea ejecutar algunas oraciones el AutoLISP tiene la funcin PROGN. El PROGN agrupa mltiples expresiones del AutoLISP dentro de una sla. Use el PROGN para decir el AutoLISP como tratar la siguiente serie de oraciones como una sola. Siempre regresa al ltimo valor evaluado por la ltima espresin dentro de este. La estructura del PROGN es: (progn arg1 arg2 arg3 ...) En donde los argumentos pueden ser cualquier nmero de cualquier expresin vlida del AutoLIST. PROMPT (PROMPT string) Con esta opcin se puede poner mensajes en la parte para texto de la pantalla QUOTE (QUOTE expression) La funcin QUOTE la cual puede ser abreviada con el smbolo ' es tambin importante. La LIST evalua su contenido y luego forma una lista. El "Quote" suprime la evaluacin de sus expresiones. Cuando este forma una lista incluye su contenido literalmente. READ (READ string) Responde con un smbolo del primer atomo o lista en el "string". READ-CHARD (READ-CHAR file-desc) Regresa el cdigo del caracter ASCII de un nico caracter tipeado desde el teclado o ledo desde un file-desc opcional. READ-LINE (READ-LINE file-desc) Regresa a un string tipeado desde el teclado o ledo del file-desc opcional REDRAW (REDRAW ename mode) Vuelve a dibujar el puerto de visin actual, a menos que se haya dado un ename, en este caso la entidad representada por el ename es dibujada. Hay tres maneras de utilizar la opcin redraw: 1 = redraw estandard. 2 = un redraw en reversa (espacio en blanco) 3 = redraw sobresaltado y 4 = de-highlight. Regresa NIL. Igual que el comando REDRAW. *REGAPP (REGAPP appidname) Registra un nombre de aplicacin con el AutoCAD. El AutoCAD coloca el nombre en una tabla de smbolos APPID. Si el registro tiene xito la funcin da el nombre, caso contrario regresa NIL. REM (REM val1 val2) Obtiene el remanente de la divisin de val1 para val2. REPEAT (REPEAT nmero_entero expresion ...) La funcin REPEAT es una estructura siempre de ejecucin. Muchos programas de aplicacin repiten algunas tareas. Esta funcin ejecuta cualquier nmero de oraciones un nmero especificado de veces. Como el PROGN todas sus expresiones son evaluadas, pero una vez en cada ejecucin. El REPEAT regresa al valor de la ltima expresin de la ltima ejecucin. Ej. (repeat number statements to repeat....) REVERSE (REVERSE list) Funcin de un argumento (Una lista). Al ejecutar esta funcin se obtiene de resultado una lista igual al argumento pero con cambiado el orden de esta. RTOS (RTOS nmero modo exactitud) Convierte un nmero real a "string", con una exactitud dada por la que se marque, y el modo corresponde al formato del nmero a convertir en "string"; a continuacin se muestra los valores que puede tomar el "Modo":

14 Isla Fernandina N42-52 (Ciudadela Jipijapa) Telfono/fax: 920-890, 431-356 Quito-Ecuador

www.sincows.com

admin@sincows.com

Servicios Integrales en Computacin


SINCOW
1 Cientfica 4 Arquitectnico 2 Decimal 5 Fraccional 3 Ingenieril SET (SET var. valor) Asigna un valor a una variable, la diferencia con el SETQ es que este no evalua a la variable, mientras que el SET antes de asignar el valor realiza una evaluacin de la variable. Ejemplo: (SET gol 1.523), para el ejemplo el AutoLISP tratar de evaluar el smbolo "gol" primero, para despus asignar el valor 1.523. SETQ (SETQ simb. expresion simb. expresin ...) Asignar a una variable un valor dado (SETQ var. valor); este valor puede ser un nmero entero, un real, a un "string". La funcin "Setq" es equivalente a decir "iguale a". Actualmente esta variable es una abreviacin de "Set Quote". SETVAR (SETVAR sysvar value) Equivalente al comando SETVAR. Permite asignar un nuevo valor a una variable del AutoCAD, por tanto es una funcin que debe contener dos variables. SIN (SIN arg) Seno de arg. SQRT (SQRT arg) Raiz cuadrada de arg. SSADD (SSADD ename selection-set) Crea un conjunto de seleccin vacion cuando no se handado los argumentos. Si el "ename" opcional es dado, un conjunto de seleccin es creado con el "ename" nicamente. Si un "ename" es dado con un conjunto de seleccin ya existen, este ser aumentado al conjunto de seleccin. SSDEL (SSDEL ename slection-set) Borra el "ename" de un conjunto de seleccin y regresa al "ename". SSGET (SSGET mode point point) Usa la seleccion de opciones estandard del AutoCAD para regresar a un conjunto de entidades del usario. El mode opcional de conjunto usa una predeterminada selecciones de opciones a una seleccin automtica sin salirse de la del usuari. El valor de los puntos son usados para establecer "Window" y "Crossing". Un modo X regresa entidades unindolas a una lista filtro basada en cualquiera de las combinaciones del siguiente grupo: 0 Tipo de entidad 38 Elevacin (Si existe) (3D) 2 Nombre del bloque 39 "Thickness" o Grosor (3D) 6 Nombre del tipo de lnea 62 Nmero de Color 7 Nombre del estilo deTexto 66 Atributos 8 Nombre del nivel o "Layer" 210 3D extrusion direction SSLENGHT (SSLENGTH arg) arg igual al originado en (SSGET) SSMEMB (SSMEMB ename selection-set) Regresa al "ename" si este esta en el conjunto de seleccin, sino lo hace a NIL. SSNAME (SSNAME arg1 num) arg1 igual entidad, num es el nmero de seleccin. STRCASE (STRCASE string flag) Convierte "strings" de letras maysculas a minsculas. STRCAT (STRCAT string string) Para mezclar string en una sola expresin. STRLEN (STRLEN string) Regresa la longitud del "string". Da como resultado un valor entero que corresponde al nmero de elementos (caracteres alfa-numricos) que constituyen el "string". SUBST (SUBST item item list) Funcin de tres argumentos. La funcin tiene la posibilidad de sustituir el primer argumento por el segundo argumento en la lista definida por el tercer argumento. SUBSTR (SUBSTR string start length) Funcin de tres argumentos. Tiene el efecto de sustraer de un string una porcin de este Ej: (Setq P "ABCDEF") (SUBSTR p 2 3) Resultado: "BCD". T Valor de "verdad" TBLNEXT (TBLNEXT tname flag) Regresa datos de la lista de descripcin de un nombre de tabla especificado por un "tname". Si la "flag" opcional es T, es regresada la primera tabla de datos, de lo contrario la siguiente entrada de tabla es regresada cada vez que es usada la funcin. TBLSEARCH (TBLSEARCH arg1 arg2). arg1 = "Layer", "View", "Style", "Block", etc. arg2 = "Nombre" . Ejemplo: (TBLSEARCH "UCS" "Prueba") Prueba deber ser el nombre de un UCS previamente definido. El nombre de la caracterstica puede ser: "LAYER" o "layer" "LTYPE" "BLOCK" "VIEWPORT" "VIEW" "STYLE" TERPRI (TERPRI) Carry return en la pantalla de texto *TEXPAGE (TEXTPAGE) Conecta de una pantalla grfica a una de texto en un nico sistema de pantalla y limpia la pantalla, con el cursor al inicio. Regresa NIL (Slo versin 11) TEXTSCR (TEXTSCR) Equivalente al comando TEXTSCR. TRACE (TRACE function...) Es til especialmente con funciones recursivas definidas, para tener capacidad de "mirar" el progreso del sistema. Podran aparecer ciertas sospechas existan como una correcta definicin y ejecucin de una funcin. La funcin en cuestin puede aparecer para ejecutar sin invocar error, pero aun asi la salida final del sistema intergrado no es lo que se esperaba y una falta es considerada como existente en algn lugar de las funciones especificada dando un mensaje de entrada: ej: Entering function y un mensaje, con la salida o valor de regreso en salida: Salida funcin valor = val. Con el uso del trace, se puede chequear que la funcin ha sido llamada y podemos verificar su valor de salida. Los ltimos detalles de ejecucin no estan disponibles. Por ejemplo consideremos la funcin REM-ALL aplicada a esta lista creada en la ltima seccin. (Trace Funcion). TRANS (TRANS poin code code flag) Responde con un punto trasladado de un punto dado del primer cdigo de coordenada al segundo cdigo de coordenada. Los cdigos son: 0 para World Coordinate System (WCS), 1 para User Coordinate System (UCS), 2 para Display Coordinate System (DCS, screen), y 3 para Paper Space DCS (PS DCS, no para versin 10 usada solamente a y desde 2). Si el "flag" no es NIL, el valor del punto es tratado como un desplazamiento en 3D en lugar de ser tratado como punto. Un nombre de entidad o un vector 3D de estruccin puede ser usado en el lugar de cualquiera de los codigos. TYPE (TYPE a) Da el tipo de la variable a (entero, real, lista, "string", "subrt" etc.) UNTRACE (UNTRACE function...) Desactiva la accin del comando TRACE de una funcin. Como se entender a la funcin se le debe haber aplicado previamente el comando TRACE.(UNTRACE Funcion). VER Responde con un string con la versin actual del AutoLISP. Ej. "AutoLISP Release 9.0" VMON (VMON) Si se esta planeando cargar muchas funciones durante la edicin de un dibujo en AutoCAD, se podr incluir la lnea (VMON) al principio del programa en AutoLISP. Esto indica al AutoCAD la pgina no frequentemente usada de funciones al disco. Las funciones del AutoLISP pueden consumir memoria rpidamente y cuando esto ocurre no se puede cargar ms funciones, por lo tanto se debe cerrar el archivo que se esta editando y reabrirlo. usando otras funciones. Para evitar este problema se puede usar (VMON) M.A. Pg. 524. Tambin hace que las definiciones de funciones elegibles puedan ser intercambiadas en y fuera de la RAM, para permitir que ms programas sean cargados. VPORTS (VPORTS) Responde con una lista de los TILEMODE actuales o puertos de visin de espacio de papel. La lista contiene sub-listas con los nmeros de los puertos de visin y muestra los puntos de las coordenadas de las esquinas para cada prtico. Puerto de visin activo es el primero de la lista. *WCMATCH (WCMATCH string patern) Responde con T (Verdad) si el string une patrones "wildcard". Caso contrario responde NIL. El patrn en un string (o variable string) conteniendo uno o ms "Wildcards" como * or ?. WHILE (WHILE condicin expresion ...) La funcin WHILE se ejecuta como la REPEAT, excepto que WHILE es abierta terminando con una prueba de condicional. WHILE continua ejecutando a travs de una serie de oraciones hasta que la condicin es NIL. (Condicin while

15 Isla Fernandina N42-52 (Ciudadela Jipijapa) Telfono/fax: 920-890, 431-356 Quito-Ecuador

www.sincows.com

admin@sincows.com

Servicios Integrales en Computacin


SINCOW
WRITE-CHAR WRITE-LINE *XLOAD *XDROOM *XDSIZE *XUNLOAD ZEROP - FUNCTION - _VER - EXIT - QUIT oracin a ejecutar....) A diferencia de la funcin IF, WHILE no tiene una oracin "else" alternativa para ejecutar si la condicin if falla la prueba. (WRITE-CHAR number descripcion_de_archivo) Escribe un cracter especificado por el nmero de cdigo del caracter ASCII a la pantalla o a un archivo especificado por el archivo opcional file-desc. (WRITE-line string file-desc) Escribe un caracter a la pantalla o a un archivo especificado por archivo destino opcional. (XLOAD filename) Carga un program ADS externo dentro del AutoCAD. Si se tiene xito al cargar el programa o si se encuentra ya cargado, responde con el nombre del archivo ADS externo. Caso contrario aparece un mensaje de error. (XDROOM ename) Responde con el nmero de bytes disponibles para extensin de datos de una entidad seleccionada, o responde NIL. (XDSIZE list) Responde con el nmero de bytes que ocupar una lista extendida de datos. (XUNLOAD filename) Descarga un progrma ADS externo de la seccin actual de dibujo. Si tiene xito el nombre del archivo ADS externo aparecer, caso contrario dar un mensaje de error. (ZEROP X). Retorna a T si X es igual a 0 (FUNCTION arg.) (_VER) "i2.38"

- SUBR Tipo de variable (para subrutina) - SYM Tipo de variable (para SYM) - INT Tipo de variable (para nmero entero) - STR Tipo de variable (para string) - FILE Tipo de variable (para nombre de archivo) - REAL Tipo de variable (para nmero real) - ENAME Tipo de variable (para nombre de entidad) - PICKSET Tipo de variable (para PICKSET) - PAGETB Tipo de variable (para PAGETB) - EXSUBR Tipo de variable (para subrutinas externas ADS)

16 Isla Fernandina N42-52 (Ciudadela Jipijapa) Telfono/fax: 920-890, 431-356 Quito-Ecuador

También podría gustarte