Está en la página 1de 68

Departamento de Ingeniera Geogrfica y Tcnicas de Expresin Grfica

a
Pa T T

PROGRAMACIN AUTOLISP
(PERSONALIZACIN DE AUTOCAD)

a a/3 cen a/12

a/2 cenp a/2

a/2 ceng a/3

a/2

a/12 Sistema de rectas paralelas

a/12

Figura 1: Definicin geomtrica

Figura 2: Mosaico
P Pa

Formas homotticas
cen a/3

a/3

rad

MILAGROS CANGA VILLEGAS JOS ANDRS DAZ SEVERIANO

No basta el recuerdo Cuando an queda tiempo (Luis Cernuda)

El hoy es malo, pero el maana ... es mo (Antonio Machado)

INDICE:

1. PRESENTACIN GENERAL DE AUTOLISP 2. ELEMENTOS DEL LENGUAJE Y TIPOS DE DATOS 2.1. Nmeros 2.2. Cadenas 2.3. Listas 2.4. Smbolos y variables 2.5. Conjuntos de seleccin 2.6. Nombres de entidad 2.7. Descriptores de archivo 2.8. Subrutinas 3. EXPRESIONES DE AUTOLISP 4. RECOMENDACIONES INICIALES PARA LA CODIFICACIN DE UNA RUTINA LISP 5. FUNCIONES AUTOLISP 5.1. FUNCIONES ARITMTICAS 5.2. FUNCIONES DE ASIGNACIN 5.3. FUNCIONES PARA MANEJAR CADENAS DE TEXTO 5.4. FUNCIONES PARA GESTIN DE LISTAS 5.4.1. CREACIN DE LISTAS 5.4.2. EXTRACCIN DE ELEMENTOS DE UNA LISTA 5.4.3. MANIPULACIN DE LISTAS 5.5. FUNCIONES MONOLNEA 5.6. FUNCIONES DE CONVERSIN Y TRANSFORMACIN 5.7. FUNCIONES DE RELACIN 5.8. FUNCIONES DE CONDICIN 5.9. FUNCIONES PARA GESTIN DE CICLOS 5.10. FUNCIN PARA CREAR FUNCIONES DE USUARIO 5.11. FUNCIONES GRFICAS 5.12. FUNCIONES DE ENTRADA INTERACTIVA 5.13. FUNCIONES PARA GESTIN DE FICHEROS 5.14. FUNCIONES DE LECTURA Y ESCRITURA 5.14.1. ESCRITURA 5.14.2. LECTURA 5.15. FUNCIONES DE ORDENACIN 5.16. FUNCIONES DE CONTROL DE PANTALLA 5.17. OTRAS FUNCIONES DE UTILIDAD 6. FUNCIONES AVANZADAS DE PROGRAMACIN AUTOLISP 6.1. OBJETIVOS Y ENTORNO DE LA PROGRAMACIN AutoLISP 6.2. CONCEPTOS BSICOS 6.3. FORMA DE TRABAJO Y FUNCIONES UTILIZADAS 6.4. DESCRIPCIN DE LAS FUNCIONES 7. CDIGOS Y MENSAJES DE ERROR DE AUTOLISP 8. NDICE DE FUNCIONES 9. BIBLIOGRAFA BSICA

1 2 2 2 3 3 3 4 4 4 5 6 7 8 12 13 15 15 16 18 20 21 24 27 28 30 31 32 39 41 41 42 44 45 46 48 48 48 49 50 59 63 63

ii

1. PRESENTACIN GENERAL DE AUTOLISP AutoLISP es una adaptacin del lenguaje de programacin LISP y forma parte integral del paquete AutoCAD. Autolisp es un pequeo subconjunto del CommonLISP, y por ello se ajusta muy estrechamente a la misma sintaxis y convenciones, pero consta de muchas funciones especficas de AutoCAD. AutoLISP es la ms potente herramienta para optimizar la ejecucin de AutoCAD. Le habilita para automatizar AutoCAD incluso ms all de lo que puede llevar a cabo usando macros. Las rutinas AutoLISP tienen aplicaciones como: - La creacin de nuevas y nicas rdenes AutoCAD. - La insercin de funciones especiales para dibujar y para calcular. - Anlisis detallados de grficos y de dibujos dentro del editor de dibujos de AutoCAD. Con AutoLISP, se pueden escribir programas y generar funciones de macros con un lenguaje potente y de alto nivel, apropiado para las aplicaciones de grficos. AutoLISP es flexible y fcil de aprender y utilizar para los no-programadores, quienes al aprender AutoLISP slo necesitan conceptos bsicos de programacin, tales como: Almacenar datos durante el proceso con variables de memoria; Procesar datos en una serie de pasos secuenciales; Organizar etapas dentro de una rutina definiendo nuevas funciones; Elegir entre pasos alternativos (ramificar) Repetir una secuencia de pasos hasta que se encuentre una condicin especfica (bucles). Especficamente: Acceder a los datos de la base de datos geomtrica

El cdigo de AutoLISP no se compila 1, se puede teclear el cdigo en la lnea de comandos y ver los resultados inmediatamente hacindose ms sencilla la introduccin a este lenguaje para los no iniciados. En un segundo nivel de aprendizaje resulta mucho ms fcil realizar pruebas y depurar cuando este cdigo se carga desde un archivo, en lugar de volverlo a escribir cada vez que se realiza alguna modificacin. El cdigo de AutoLISP se almacena en archivos de texto ASCII con la extensin *. lsp. La sintaxis de las expresiones de AutoLISP escritas en los archivos es bsicamente la misma que se utiliza para escribirlas en la solicitud de comando.

Se trabaja a este nivel docente sin compilar. Se recomienda consultar los manuales de VisualLISP de la versin 2000 de AutoCad o superior. 1

2. ELEMENTOS DEL LENGUAJE Y TIPOS DE DATOS El evaluador de AutoLISP procesa las expresiones de acuerdo con el orden y el tipo de datos del cdigo. Este cdigo se caracteriza especialmente porque aparece entre parntesis. Para poder utilizar plenamente AutoLISP, es necesario entender las diferencias entre los distintos tipos de datos y el modo en que deben utilizarse. Los elementos del lenguaje y sus convenciones son las siguientes: 2.1. Nmeros Nmeros enteros Los enteros son nmeros sin coma decimal. Los enteros de AutoLISP son nmeros de 32 bits con signo cuyos valores estn comprendidos entre +2 147 483 648 (231) y 2 147 483 647. Aunque AutoLISP utiliza internamente valores de 32 bits, los que se transmiten de AutoLISP a AutoCAD y viceversa estn limitados a 16 bits. Por tanto, no pueden transmitirse a AutoCAD valores superiores a +32 767 (215) ni valores inferiores a 32 768. Los enteros que se utilizan de forma explcita en expresiones de AutoLISP se conocen como constantes. Nmeros como 2, -56, y 1 200 196 son enteros vlidos de AutoLISP. Nmeros reales Los nmeros reales son aquellos que contienen la coma decimal. Los comprendidos entre -1 y 1 deben empezar por cero. (No se admiten formatos como .2 2.) Los nmeros reales se almacenan en formato de coma flotante de doble precisin, lo cual proporciona una precisin mnima de 14 dgitos significativos, aunque el rea de comandos de AutoCAD muestra slo 6. Los nmeros reales pueden expresarse en notacin cientfica, que consta de una e o E opcional seguida por el exponente del nmero (por ejemplo, 0.0000041 es lo mismo que 4.1e-6). Los nmeros reales que se utilizan de forma explcita en expresiones de AutoLISP se conocen como constantes. Nmeros como 3,1, 0,23, -56,123, y 21 000 000.0 son nmeros reales vlidos de AutoLISP.

2.2. Cadenas Las cadenas son grupos de caracteres delimitados por comillas. Dentro de las cadenas que aparecen entre comillas: la contrabarra (\) permite incluir caracteres de control (o cdigos de escape): \\ para el carcter \ \e para el carcter ESC \n para el salto de lnea \r para RETURN \t para tabulador Las cadenas individuales tienen una limitacin de 132 caracteres. Las cadenas entre comillas que se utilizan de forma explcita en expresiones de AutoLISP se conocen como cadenas de texto o constantes de cadena. Ejemplos de cadenas vlidas son "cadena 1" y "\nPrimer punto: ".

2.3. Listas Las listas de AutoLISP son grupos de valores relacionados, separados por espacios en blanco (uno o varios se interpretan como uno slo) e incluidos entre parntesis. Las listas proporcionan un mtodo eficaz para almacenar numerosos valores relacionados. AutoCAD expresa los puntos 3D como una lista de tres nmeros reales. Ejemplos de listas son: (1.0 1.0 0.0), ("ste" "se" "aqul") y (1 "UNO").

2.4. Smbolos y variables AutoLISP utiliza smbolos para almacenar los datos. En los nombres de smbolos no se distingue entre maysculas y minsculas, pudiendo emplearse cualquier secuencia de caracteres alfanumricos, siempre que no contenga a alguno de los siguientes: Parntesis ( ) Reservado para lista y expresiones Punto . Punto decimal Apostrofo ' Abreviatura de la Funcin QUOTE Comillas " Reservado a las cadenas de caracteres. Punto y coma; Para comenzar una lnea de comentarios.

Un nombre de smbolo no puede estar compuesto slo por caracteres numricos. Las aplicaciones de AutoLISP hacen uso de smbolos o valores constantes, como cadenas, nmeros reales o enteros, y variables, empleadas para almacenar datos generados durante las ejecucin de los programas. AutoCAD proporciona tres variables predefinidas que pueden emplearse en las aplicaciones de AutoLISP: - PAUSE: est definida como una cadena compuesta que consta slo de una contrabarra (\). Esta variable se emplea con la funcin command para que el programa espere a que el usuario escriba datos. - PI: est definida como la constante p (pi). Su valor aproximado es 3.1415926. - T: est definida como la constante T. Se emplea como valor distinto de nil. - Nil: smbolo que en Lisp significa nada o vaco. Es posible cambiar el valor de estas variables con la funcin setq. Sin embargo, otras aplicaciones podran considerar que sus valores son fiables; por tanto, se recomienda no modificar estas variables. A estas tres variables, junto con los nombres de funciones del lenguaje y los nombres de funciones definidas por el usuario, las denominaremos palabras reservadas del lenguaje Los valores asignados a las variables pueden usarse como respuesta a las solicitudes de comando de AutoCAD. Esto proporciona una forma de almacenar y reutilizar nombres o nmeros complejos. Si se desea utilizar el valor de una variable como respuesta a una solicitud de AutoCAD, basta escribir el nombre de la variable precedido por un signo de admiracin (!). 2.5. Conjuntos de seleccin Los conjuntos de seleccin son grupos compuestos por uno o varios objetos (entidades). Las rutinas de AutoLISP permiten aadir o suprimir de forma interactiva objetos de los conjuntos de seleccin.

2.6. Nombres de entidad Un nombre de entidad es un identificador numrico asignado a los objetos de un dibujo. En realidad, se trata de un puntero a un archivo mantenido por AutoCAD, en el que AutoLISP puede encontrar el registro de la base de datos de objetos A este identificador pueden hacer referencia las funciones de AutoLISP con el fin de permitir la seleccin de objetos para un posterior empleo de maneras varias.

2.7. Descriptores de archivo Los descriptores de archivo son identificadores alfanumricos asignados a archivos abiertos por AutoLISP. Cuando sea necesario que una funcin de AutoLISP lea o escriba en un archivo, debe hacerse referencia a su identificador.

2.8. Subrutinas Es un smbolo con el nombre de una funcin predefinida por Autolisp. Pueden ser: - Internas, cuando pertenecen al conjunto base de Autolisp, incluidas las definidas por el usuario. - Externas, las que se han definido mediante otras aplicaciones ligadas a Autocad.

3. EXPRESIONES DE AUTOLISP Las instrucciones contenidas en una rutina LISP se ejecutan secuencialmente; trabajan unas sobre lo realizado por otras, los resultados de las instrucciones anteriores son usadas para llevar a cabo las instrucciones subsiguientes. Todas las expresiones de AutoLISP tienen, bsicamente, el siguiente formato: (funcin argumentos) Cada expresin comienza con un parntesis abierto y se compone de un nombre de funcin seguido de una lista ordenada de argumentos para dicha funcin, cada uno de los cuales puede constituir una expresin por s mismo. La expresin termina con un parntesis cerrado. Cada expresin devuelve un valor que puede ser empleado por una expresin circundante (Anidacion de expresiones); en caso de que no haya ninguna, AutoLISP devuelve el valor a la lnea de comando de AutoCAD. Por ejemplo, el siguiente cdigo incluye tres funciones. (fun1 (fun2 argumentos)(fun3 argumentos)) La primera funcin, fun1, tiene dos argumentos, mientras que las otras dos, fun2 y fun3, tienen un argumento cada una. Las funciones fun2 y fun3 estn delimitadas por la funcin fun1, por lo que sus valores pasan a fun1 como argumentos. La funcin fun1 evala estos dos argumentos y devuelve el valor a la lnea de comando. Si se escribe una expresin de AutoLISP en la solicitud de comando de AutoCAD, AutoLISP la evala y muestra el resultado, tras lo cual vuelve a aparecer la solicitud de comando. El siguiente ejemplo ilustra el uso de la funcin *(multiplicacin), que acepta uno o ms nmeros reales como argumentos. Comando: (* 2 27) 54 Dado que este ejemplo no tiene expresin circundante, devuelve el resultado a la lnea de comando. Las expresiones anidadas en otras expresiones devuelven sus resultados a la expresin circundante. El siguiente ejemplo utiliza el resultado de la funcin + (suma) como uno de los argumentos de la funcin * (multiplicacin). Comando: (* 2 (+ 5 10) ) 30 El formato completo que estudiaremos para cada funcin Autolisp es el siguiente:

(funcin argumentos .....[ Argumentos opcionales... ] )


Los puntos suspensivos significan que el ltimo argumento puede repetirse un nmero cualquiera de veces. Cuando AutoCAD recibe algn cdigo de AutoLISP, lo transmite al intrprete de AutoLISP, cuyo ncleo contiene el evaluador. El evaluador lee una lnea de cdigo, la evala y devuelve el resultado. El cdigo puede leerse de un archivo o como datos tecleados por el usuario desde la lnea de comando, pero en cualquier caso deber tener el formato de una expresin de AutoLISP. Al respecto, hay que decir que: - Una expresin puede ser ms larga que una lnea. - Varios espacios en blanco se interpretan como uno slo. - Una lnea que se inici con ; no es interpretada. Se trata de una lnea de comentarios. - Se puede responder a las solicitudes de comando de AutoCAD con expresiones de AutoLISP.

4. RECOMENDACIONES INICIALES PARA LA CODIFICACIN DE UNA RUTINA LISP - Conocer la sintaxis y las reglas del lenguaje. - Saber de qu funciones dispone el lenguaje. - Describir exactamente cul es el objeto de la rutina LISP. Los programadores se refieren a esta versin de una rutina como pseudocdigo. - Recorrer el proceso manualmente desde el teclado, si es posible. Este procedimiento de verificacin a priori, ayudar a reconocer rpidamente los problemas en el proceso de desarrollo. - Tomar notas de cada paso. - Anotar qu clculos tuvieron lugar y en qu figuras se basaron. - Escribir el cdigo lo ms ordenado posible, distinguiendo entre: - Funcin principal (que ser la que se invoca al utilizar el programa). Suele incluir la definicin de un nuevo comando Autocad. - Funciones intermedias, segn la estructura que el programar decida. - Utilizar nombres de funciones y variables fcilmente identificables, limitando el empleo de estas ltimas a aquellas que sean estrictamente necesarias. - Escribir lneas de comentarios. - Utilizar funciones creadas en otros programas. Hacer Bibliotecas de funciones de usuario. - Sangrar el texto del cdigo para facilitar la interpretacin posterior.

5. FUNCIONES AUTOLISP Las funciones proporcionadas por el lenguaje se pueden clasificar de la siguiente manera:

FUNCIONES BSICAS
FUNCIONES ARITMTICAS, ................................................................................................................... 8 FUNCIONES DE ASIGNACIN, ............................................................................................................. 12 FUNCIONES PARA MANEJAR CADENAS DE TEXTO, ....................................................................... 13 FUNCIONES PARA GESTIN DE LISTAS, ........................................................................................... 15 FUNCIONES MONOLNEA, .................................................................................................................... 20 FUNCIONES DE CONVERSIN Y TRANSFORMACIN, ..................................................................... 21 FUNCIONES DE RELACIN, ................................................................................................................. 24 FUNCIONES DE CONDICIN, ............................................................................................................... 27 FUNCIONES PARA GESTIN DE CICLOS, .......................................................................................... 28 FUNCIN PARA CREAR FUNCIONES DE USUARIO, ......................................................................... 30 FUNCIONES GRFICAS, ....................................................................................................................... 31 FUNCIONES DE ENTRADA INTERACTIVA, ......................................................................................... 32 FUNCIONES PARA GESTIN DE FICHEROS, ..................................................................................... 39 FUNCIONES DE LECTURA Y ESCRITURA, ......................................................................................... 41 FUNCIONES DE ORDENACIN, ........................................................................................................... 44 FUNCIONES DE CONTROL DE PANTALLA, ........................................................................................ 45 OTRAS FUNCIONES DE UTILIDAD, ..................................................................................................... 46

FUNCIONES AVANZADAS

5.1. FUNCIONES ARITMTICAS + Suma nmeros Sintaxis: (+ <n1> <n2> . . . ) Valor retornado: Suma de todos los argumentos numricos. Ningn argumento devuelve Nil (+ 1 2) (+ 1 2 3 4.5) (+ 1 2 3 4.0) Sustrae n nmeros Sintaxis: (- <n1> <n2> . . . ) Valor retornado: La diferencia entre el primer argumento y la suma de los restantes argumentos. Ningn argumento devuelve Nil (- 50 40) (- 50 40.0) (- 50 40.0 2.5) (- 8) * Multiplica nmeros Sintaxis: (* <n1> <n2> . . . ) Valor retornado: Producto de todos los argumentos numricos. Ningn argumento devuelve Nil (* 2 3) (* 2 3.0) (* 2 3 4.0) (* 3 -4.5) (* 3) /
Divide nmeros

devuelve 3 devuelve 10.5 devuelve 10.0

devuelve devuelve devuelve devuelve

10 10.0 7.5 -8

devuelve devuelve devuelve devuelve devuelve

6 6.0 24.0 -13.5 3

Sintaxis: (/ <n1> <n2> . . . ) Valor retornado: El cociente del primer argumento dividido por el producto de los dems argumentos. (/ 100 2) (/ 100 2.0) (/ 100 20 2) (/ 100 20 2.0) (/ 4) (/ 1 2) (/ 4 (/ 1 2)) (/ 4 (/ 1.0 2)) Devuelve el operador NOT binario (complemento de -1) del argumento Sintaxis: ( <entero>) Valor retornado = -1 - <entero>. (~ 3) (~ 100) (~ -4) devuelve -4 devuelve -101 devuelve 3 devuelve 50 devuelve 50.0 devuelve 2 devuelve 2.5 devuelve 4 devuelve 0 devuelve ERROR devuelve 8.0

1+ Incrementa un nmero en uno Sintaxis: (1+ <n> ) Valor retornado = 1+n (entero o real segn n sea entero o real.) (1+ 5) (1+ -17.5) devuelve 6 devuelve -16.5

1Disminuye en uno un nmero. Sintaxis: (1- <n> ) Valor retornado = n-1 (entero o real segn n sea entero o real.) (1- 5) (1- -17.5) ABS Convierte un nmero a su valor absoluto Sintaxis: (ABS <n> ) Valor retornado = el valor absoluto de n. (abs 100) (abs -100) (abs -99.25) devuelve 100 devuelve 100 devuelve 99.25 devuelve 4 devuelve -18.5

ATAN Calcula el arcotangente Sintaxis: (ATAN <n1> [n2]), donde los argumentos n1 y n2 se convierten en nmeros reales antes de calcular el valor del arco tangente. Valor retornado = Arco tangente de n1/n2. Valor en radianes entre -/2 y /2. (atan 0.5) (atan 1.0) (atan -1.0) (atan 2.0 3.0) (atan 2.0 -3.0) (atan 1.0 0.0) (atan 1 2) (atan (/ 1 2)) devuelve devuelve devuelve devuelve devuelve devuelve devuelve devuelve 0.463648 0.785398 -0.785398 0.588003 2.55359 1.5708 0.463648 0.0

COS Calcula el coseno de un ngulo expresado en radianes Sintaxis: (COS <ang> ) Valor retornado = El coseno de ang (cos 0.0) (cos pi) (cos (/ pi 3)) SIN Calcula el seno de un ngulo expresado en radianes Sintaxis: (SIN <ang> ) Valor retornado = El seno de ang (sin 1.0) (sin 0.0) (sin (/ pi 6)) devuelve 0.841471 devuelve 0.0 devuelve 0.5 devuelve 1.0 devuelve -1.0 devuelve 0.5

EXP Calcula el antilogaritmo neperiano de un numero Sintaxis:(EXP <n> ) Valor retornado: nmero real igual a en (exp 1.0) (exp 2.2) (exp -0.4) devuelve 2.71828 devuelve 9.02501 devuelve 0.67032

EXPT Calcula el resultado de elevar un nmero a una potencia Sintaxis:(EXPT <base> <potencia>) Valor retornado: nmero real o entero (expt 2 4) (expt 3.0 2.0) devuelve 16 devuelve 9.0

GCD Calcula el mximo comn denominador de dos enteros Sintaxis: (GCD <n1> <n2>) Valor retornado = El valor del mximo comn denominador. (gcd 81 57) (gcd 12 20) devuelve 3 devuelve 4

LOG Calcula el logaritmo neperiano de un nmero real Sintaxis: (LOG <n> ) Valor retornado = Un nmero real. (log 4.5) (log 1.22) (log 2.718281) devuelve 1.50408 devuelve 0.198851 devuelve 1.0

MAX Extrae el mayor valor de una serie de nmeros Sintaxis: (MAX <n1> <n2> <n3>..) Valor retornado = El mayor valor encontrado. (max 4.07 -144) (max -88 19 5 2) (max 2.1 4 8) MIN Extrae el menor valor de una serie de nmeros Sintaxis: (MIN <n1> <n2> <n3>..) Valor retornado = El menor valor encontrado. (min 683 -10.0) (min 73 2 48 5) (min 2 4 6.7) MINUSP Comprueba si un nmero es menor que 0 Sintaxis: (MINUSP <n> ) Valor retornado = T si el argumento n es un nmero y es negativo y nil en caso contrario. (minusp -1) (minusp -4.293) (minusp 830.2) devuelve T devuelve T devuelve nil devuelve -10.0 devuelve 2 devuelve 2.0 devuelve 4.07 devuelve 19 devuelve 8.0

10

REM Calcula el resto de la divisin entre dos nmeros Sintaxis: (REM <n1> <n2>) Valor retornado: El resto de dividir n1 entre n2. (rem 42 12) (rem 12.0 16) (rem 26 7) (rem 5 2) (rem 26 7 2) devuelve devuelve devuelve devuelve devuelve 6 12.0 5 1 1

SQRT Calcula la raz cuadrada de un nmero Sintaxis: (SQRT <n> ) Valor retornado = Un nmero real, raz cuadrada de n (sqrt 4) (sqrt 2.0) devuelve 2.0 devuelve 1.41421

ZEROP Comprueba si un nmero es 0 Sintaxis: (ZEROP <elemento>) Valor retornado: T si el elemento es 0 y nil en caso contrario. (zerop 0) (zerop 0.0) (zerop 0.0001) devuelve T devuelve T devuelve nil.

NUMBERP Comprueba si la evaluacin de una funcin es un nmero Sintaxis: (NUMBERP <expresin>) Valor retornado: T si la expresin evaluada es un numero y nil en caso contrario. (setq a 123 b 'a) (numberp 4) (numberp 3.8348) (numberp "Hola") (numberp a) (numberp b) (numberp (eval b))

devuelve devuelve devuelve devuelve devuelve devuelve

T T nil T nil T

11

5.2. FUNCIONES DE ASIGNACIN SETQ Liga el nombre de smbolos al valor de una expresin Sintaxis: (SETQ < Smbolo> <exp> < Smbolo> <exp>. . . . . . . .) Valor retornado: El devuelto por el ltimo argumento de la funcin. (setq a 5.0) (setq b 123 c 4.7) (setq s "el") (setq x '(a b)) devuelve 5.0 y define el smbolo (variable) a como 5.0. devuelve 4.7 y define los smbolos (variables): b como 123 y c como 4.7 devuelve "el" devuelve (A B)

SETVAR Cambia el valor de variables del sistema. Sintaxis: (SETVAR <"nombre de la variable"> <nuevo valor> ) La variable del sistema no podr ser slo de lectura y el nuevo valor asignado ser de los que el sistema pueda aceptar. Valor retornado: El nuevo valor de la variable del sistema. (setvar "blipmode" 0) (setvar "pdmode" 34) (setvar "pellipse" 3) TYPE Extrae el tipo de dato de un argumento. Sintaxis: (TYPE <elemento>) Valor retornado: El tipo de dato como una cadena en maysculas REAL: numero entero FILE: descriptor de fichero STR: cadenas INT: numero entero. SYM: smbolos LIST: listas y funciones de usuario SUBR: funciones internas PICKSET ENAME .......... Devuelve 0 y desactiva las marcas auxiliares. Devuelve 34 y establece un tipo de punto Error: AutoCAD rechaz la funcin

Conjuntos de seleccin Nombres de entidades

Los elementos que dan como resultado nil (como un smbolo no asignado) devuelven nil. (setq a 123 r 3.45 s "Hola!" x '(a b c)) (setq f (open "nombre" "r")) entonces: (type 'a) (type a) (type f) (type r) (type s) (type x) (type +) (type nil) devuelve devuelve devuelve devuelve devuelve devuelve devuelve devuelve SYM INT FILE REAL STR LIST SUBR nil

12

5.3. FUNCIONES PARA MANEJAR CADENAS DE TEXTO READ Extrae datos de una cadena de caracteres Sintaxis: (READ <"cadena">) Valor retornado: El primer tem de una cadena de caracteres o la primera lista si la cadena contiene listas. STRCASE Convierte los caracteres de una cadena a minsculas o maysculas Sintaxis: (STRCASE <"cadena"> [modo]) - conversin a minsculas: modo /= nil - conversin a maysculas : modo = nil o no se presenta. Valor retornado: La cadena convertida. (strcase "Ejemplo") (strcase "Ejemplo" T) STRCAT Empalma (concatena ) dos o ms cadenas Sintaxis: (STRCAT <"cadena1"> ["cadena2"]...........) Valor retornado: Una sola cadena empalmada. (strcat "a" "cerca") (strcat "a" "b" "c") (strcat "a" "" "c") STRLEN Cuenta los caracteres de una cadena Sintaxis: (STRLEN <"cadena">........) Valor retornado: Un nmero entero. Si se especifican varios argumentos cadena, la funcin devuelve la suma de las longitudes de todos los argumentos. Si stos se omiten o se escribe una cadena vaca, el resultado es 0 (cero). (strlen "abcd") (strlen "ab") (strlen "uno" "dos" "tres") (strlen) (strlen "") SUBSTR Extrae una porcin de una cadena de caracteres. Sintaxis: (SUBSTR <"cadena"> <inicio>[ long ]) inicio: nmero entero que indica la posicin del primer carcter a extraer. long: longitud de la subcadena a extraer ( si no se da proporciona la subcadena desde la posicin inicial hasta el final) Valor retornado: La subcadena extrada. (substr "abcde" 2) (substr "abcde" 2 1) (substr "abcde" 3 2) (substr "abcde" 3 7) (substr "hola" 5) devuelve devuelve devuelve devuelve devuelve "bcde" "b" "cd" "cde" "" (cadena vaca) devuelve devuelve devuelve devuelve devuelve 4 2 10 0 0 devuelve "acerca" devuelve "abc" devuelve "ac" devuelve "EJEMPLO" devuelve "ejemplo"

13

VL-PRINC-TO-STRING Devuelve la representacin en cadena de caracteres de cualquier objeto Lisp como si fuera presentada mediante la funcin princ. Sintaxis: (VL-PRINC-TO-STRING <dato>) Valor retornado: Una cadena de caracteres que contiene la representacin del dato tal y como la mostrara la funcin princ. (vl-princ-to-string 120) (vl-princ-to-string 120.8) (vl-princ-to-string abc) (vl-princ-to-string (10 20)) devuelve devuelve devuelve devuelve 120 120.8 abc (10 20)

VL-LIST->STRING Concatena los caracteres representados en una lista por sus cdigos numricos ASCII. Sintaxis: (VL-LIST->STRING (entero ) ) Valor retornado: Una cadena formada por los caracteres cuyos cdigos ASCII se incluyen en la lista pasada como argumento. ((vl-list->string (97 98 99 100) ) devuelve abcd

VL- STRING->LIST Convierte una cadena de caracteres en una lista de los cdigos numricos ASCII correspondientes. Sintaxis: (VL-STRING->LIST <cadena>) Valor retornado: Una lista con los cdigos ASCII correspondientes a los caracteres que integran la cadena. ((vl-string->list abcd ) devuelve (97 98 99 100)

14

5.4. FUNCIONES PARA GESTIN DE LISTAS 5.4.1. CREACIN DE LISTAS LIST Crea una lista a partir de un nmero de expresiones Sintaxis: ( LIST <expresin>...........) Valor retornado: Una lista de los argumentos de la funcin. (setq L1 (list 'a 'b 'c)) devuelve (A B C) (setq L2 (list 'a '(b c) 'd)) devuelve (A (B C) D) (setq L3 (list 3.9 6.7)) devuelve (3.9 6.7) (setq L3 '(3.9 6.7) equivale a (list 3.9 6.7) (setq a 10 b 20 c 30 L4_1 (list a b c)) devuelve (10 20 30) (setq La (list a) Lb (list b) Lc (list c) L4_2( La Lb Lc)) devuelve ((10)(20)(30)) Como alternativa a utilizar LIST, se puede indicar una lista de forma explcita con la funcin QUOTE si la lista no contiene variables ni opciones sin definir. El carcter de comilla ( ' ) se define como la funcin QUOTE. APPEND Funde varias listas en una Sintaxis: (APPEND <lista>...........) Valor retornado: Una lista nica. (setq L5 (append '(a b) '(c d))) (setq L6 (append '((a)(b)) '((c)(d)))) (setq L7 (append L3 L4_1)) (setq L8 (append L4_2 L4_1) (setq L9 (append La Lb Lc) CONS Aade al principio de una lista como primer elemento una expresin Sintaxis: (CONS <expresin> <lista>) Valor retornado: La nueva lista. (cons 'a '(b c d)) (cons '(a) '(b c d)) devuelve (A B C D) devuelve ((A) B C D) devuelve (A B C D) devuelve ((A)(B)(C)(D)) devuelve (3.9 6.7 10 20 30) devuelve ((10) (20) (30) 10 20 30) devuelve (10 20 30)

La funcin CONS tambin acepta un tomo en lugar del argumento lista, en cuyo caso construye una estructura denominada pares punteados. En los pares punteados, AutoLISP incluye un punto entre el primer y el segundo elemento. Un par punteado es un tipo especial de lista, por lo que algunas funciones que utilizan listas normales no los aceptan como argumento. (cons 'a 2) LENGTH Cuenta los elementos de una lista Sintaxis: (LENGTH <lista>) Valor retornado: El nmero entero correspondiente. (length '(a b c d)) (length '(a b (c d))) (length '()) devuelve 4 devuelve 3 devuelve 0 devuelve (A . 2)

15

5.4.2. EXTRACCIN DE ELEMENTOS DE UNA LISTA CAR Extrae el primer elemento de una lista. Sintaxis: (CAR <lista>) Valor retornado: El primer elemento de la lista. Si lista est vaca, CAR devuelve nil. (car '(a b c)) (car '((a b) c)) (car '()) (car (cons 'a 2) CDR Extrae una nueva lista donde estn todos los elemento de la lista menos el primero. Sintaxis: (CDR <lista>) Valor retornado: la nueva lista. Si lista est vaca, CDR devuelve nil. (cdr '(a b c)) (cdr '((a b) c)) (cdr '()) devuelve (B C) devuelve (C) devuelve nil devuelve A devuelve (A B) devuelve nil devuelve a

Para obtener el segundo tomo de un par punteado, se puede utilizar la funcin CDR. (cdr '(a . b)) (cdr '(1 . "Texto")) FUNCIONES ANIDADES DE CAR Y CDR AutoLISP permite concatenar las funciones CAR y CDR hasta en cuatro niveles. Las siguientes son funciones vlidas. CAAAAR CAAADR CAAAR CAADAR CAADDR CAADR CADAAR CADADR CADAR CADDAR CADDDR CADDR
CAAR

devuelve B devuelve "Texto"

CDAAAR CDAADR CDAAR CDADAR CDADDR CDADR


CADR

CDDAAR CDDADR CDDAR CDDDAR CDDDDR CDDDR


CDAR CDDR

Cada a representa una llamada a CAR y cada d representa una llamada a CDR. Por ejemplo: (caar x) (caar L4_2) (cdar x) (cadar x) (cadr x) (cadr L4_2) (cddr x) (caddr x) es equivalente a devuelve 10 es equivalente a es equivalente a es equivalente a devuelve (20) es equivalente a es equivalente a (car (car x)) (cdr (car x)) (car (cdr (car x))) (car (cdr x)) (cdr (cdr x)) (car (cdr (cdr x)))

En AutoLISP, CADR suele utilizarse para obtener la coordenada Y de un punto 2D 3D (el segundo elemento de una lista de dos o tres nmeros reales). De igual modo, CADDR puede utilizarse para obtener la coordenada Z de un punto 3D. Por ejemplo, dadas las asignaciones: (setq pt2 '(5.25 1.0)) (setq pt3 '(5.25 1.0 3.0)) (car pt2) (cadr pt2) (caddr pt2) (car pt3) (cadr pt3) un punto 2D un punto 3D devuelve 5.25 devuelve 1.0 devuelve nil devuelve 5.25 devuelve 1.0
16

(caddr pt3) (car (cons 'a 2)) (cdr (cons 'a 2))

devuelve 3.0 devuelve A devuelve 2

LAST Extrae el ltimo elemento de una lista Sintaxis: (LAST <lista>) Valor retornado: el ltimo elemento de la lista. (last '(a b c d e)) (last '(a b c (d e))) (last pt3 ) (last L4_2) devuelve E devuelve (D E) devuelve 3.0 devuelve (30)

NTH Extrae un elemento de una lista a partir de especificar su posicin en ella (pos) Sintaxis: (NTH <pos> <lista>) Las posiciones dentro de la lista son numeradas de izquierda a derecha empezando por la posicin 0. Valor retornado: El elemento encontrado, o un nulo si no se encontr. (nth 3 '(a b c d e)) (nth 0 '(a b c d e)) (nth 5 '(a b c d e)) (nth 0 L4_2) (nth 0 (car L4_2)) devuelve D devuelve A devuelve nil devuelve (10) devuelve 10

ASSOC Localiza sublistas en una lista de asociaciones utilizando elemento como palabra clave, y donde ste puede ser cualquier expresin vlida susceptible de aparecer como primer elemento de una de las sublistas. Lista de asociaciones: ( (clave1 inf1) (clave2 inf2...) (clave3 inf3..)........) Sintaxis: (ASSOC <elemento> <lista de asociaciones>) Valor retornado: La primera sublista encontrada. Si la clave no aparece devuelve nil (setq pieza '((nombre CAJA) (ancho 3) (largo 4.7263) (alto 5))) (assoc 'largo pieza) devuelve (largo 4.7263) (assoc 'peso pieza) devuelve nil Las listas de asociaciones se suelen utilizar para almacenar los datos a los que puede acceder mediante una clave. La funcin SUBST proporciona un medio apropiado para sustituir el valor asociado con una clave en una lista de asociaciones.

17

5.4.3. MANIPULACIN DE LISTAS MEMBER Busca la primera aparicin de una expresin en una lista y devuelve el resto de la lista a partir de la expresin encontrada. Sintaxis: (MEMBER <expresin><lista>) Valor retornado: una lista donde el primer elemento es la expresin encontrada y el resto, el resto de la lista hasta el final. Si no se encuentra la expresin devuelve nil . (member 'c '(a b c d e)) (member 20 L4_1) (member '(30) L4_2) (member 'q '(a b c d e)) devuelve (C D E) devuelve (20 30) devuelve ((30)) devuelve nil

REVERSE Invierte un lista Sintaxis: (REVERSE <lista>) Valor retornado: La lista con sus miembros en orden inverso. (reverse '((a) b c)) devuelve (C B (A))

LISTP Comprueba si un argumento es una lista Sintaxis: (LISTP <expresin>) Valor retornado: T si la expresin es una lista , nil en caso contrario. (listp L8) (listp "hola") devuelve T devuelve nil

SUBST Busca en una lista un miembro especificado y sustituye cada aparicin de ste por otro especificado Sintaxis: (SUBST <elemento nuevo> <elemento viejo> <lista>) Valor retornado: La lista modificada. (setq ejemplo '(a b (c d) b)) (subst 'qq 'b ejemplo) (subst 'qq 'z ejemplo) (subst 'qq '(c d) ejemplo) (subst '(qq rr) '(c d) ejemplo) (subst '(qq rr) 'z ejemplo)

devuelve devuelve devuelve devuelve devuelve

(A QQ (C D) QQ) (A B (C D) B) (A B QQ B) (A B (QQ RR) B) (A B (C D) B)

Cuando se utiliza conjuntamente con assoc, subst proporciona una forma til de sustituir el valor asociado a una clave de una lista de asociaciones. (setq lista '((a 10) (b 20)(c 30))) (setq sublvieja (assoc 'b lista)) sublnueva '(b 50)) ) devuelve ((a 10) (b 20)(c 30)) define sublvieja como (b 20) define sublnueva como (b 50)

(setq lista (subst sublnueva sublvieja lista)) devuelve ((a 10) (b 50)(c 30))

18

FOREACH Procesa uno a uno los elementos de una lista y evala cada expresin para cada uno de los elemento de la lista Sintaxis: (FOREACH <nombre-var> <lista> <expresin>.........) Nombre-var: variable de memoria a la que FOREACH ligar secuencialmente los valores de la lista suministrada y que normalmente ser usada en la expresin. Valor retornado: El resultado de la ltima expresin evaluada. Avanza por la lista, asignando un nombre-var a cada elemento y evala cada expresin para todos los elementos de la lista. Se pueden especificar tantas expresiones como se desee. La funcin FOREACH devuelve el resultado de la ltima expresin evaluada. (setq pt1 (getpoint "\npt1?:") pt2 (getpoint "\npt2?:") pt3 (getpoint "\npt3?:") listap (list pt1 pt2 pt3)

) (foreach pto listap (command _point pto) ) equivale a dibujar una marca de punto en los puntos pt1 pt2 y pt3.

ATOM Predicado que verifica si un elemento es un tomo, es decir, si no es una lista. Sintaxis: (ATOM <item>) Valor retornado: Nil si <item> es una lista; T en otro caso. (setq a (x y z) b 23) (atom a) (atom b)

devuelve nil devuelve T

19

5.5. FUNCIONES MONOLNEA APPLY Devuelve el resultado de ejecutar la "funcin" tomando como argumentos los elementos de la "lista". Sintaxis: ( APPLY <funcin> <Lista> ) Valor retornado: El devuelto por el argumento de la funcin (apply '+ '( 1 2 3 ) ) devuelve el resultado 1 + 2 + 3 = 6

(apply ' strcat '( "A" "B" "C" ) devuelve "ABC"

MAPCAR Devuelve el resultado de ejecutar la "funcin" tomando como argumentos de funcin los elementos sucesivos de "lista 1" ............."lista n" Sintaxis: ( MAPCAR <funcin> <lista 1> .................<lista n> ) Valor retornado: una lista con las sucesivas soluciones.

(mapcar '+ ' (10 20 30 ) '( 4 3 2 ) ) (mapcar '+ ' (1 2 3 4 ) '( 4 5 6 ) )

devuelve la lista (14 23 32) devuelve la lista (5 7 9)

(mapcar 'max ' (2 4 ) '( 7 -5 ) '( -8 20 ) devuelve la lista (7 20 ) (mapcar 'expt '( 1 2 3 ) '( 4 5 6 ) ) devuelve ( 14 25 36 )

(setq A 10 B 20 C 30) (mapcar '1+ (LIST A B C) Ejemplo anterior: (setq L '( 1 2 3 4 5 6)) (mapcar '1+ L)

devuelve la lista (11 21 31)

devuelve la lista (2 3 4 5 6 7)

LAMBDA Define una funcin sin darle un nombre. El conjunto de expresiones se aplica sobre los argumentos Sintaxis: ( LAMBDA < argumentos > < expresin >...............) Valor retornado: el resultado de la ltima evaluacin. Se suele utilizar combinada con APPLY y MAPCAR.

(apply '( lambda ( X Y Z ) (* X ( - Y Z ) ) ) ' ( 5 20 14 ) ) devuelve 30. (apply '( lambda ( X Y Z ) (+ X Y Z ) ) ' ( 1 2 3 4 ) ) devuelve: Error: too many arguments. (mapcar '( lambda ( X Y Z ) (* X ( - Y Z ) ) ) '( 5 6 ) '( 20 30 ) '(14 0 ) ) devuelve ( 30 180 )

20

5.6. FUNCIONES DE CONVERSIN Y TRANSFORMACIN FIX Convierte un nmero real en entero. Sintaxis: (FIX <numero real>) Valor retornado: El nmero entero que resulta de quitar los decimales al real. (fix 3) (fix 3.7) devuelve 3 devuelve 3

FLOAT Convierte un nmero entero en real. Sintaxis: (FLOAT <numero entero>) Valor retornado: un numero real. (float 3) (float 3.75) devuelve 3.0 devuelve 3.75

ATOI Convierte una cadena de caracteres en un nmero entero Sintaxis: (ATOI <cadena>) Valor retornado: un nmero entero. (atoi "97") (atoi "3") (atoi "3.9") devuelve 97 devuelve 3 devuelve 3

Ejemplo de cdigo que introduce puntos en una lista solicitando el punto por su posicin en la lista. (setq i 1 puntos nil) (while (setq dato (getpoint (strcat "\npunto" (itoa i) ":"))) (setq puntos (cons dato puntos) i (+ i 1) ) ) (setq puntos (reverse puntos)) )

ATOF Convierte una cadena de caracteres en un nmero real Sintaxis: (ATOF <"cadena">) Valor retornado: un nmero real. (atof "97.1") (atof "3") (atof "3.9") devuelve 97.1 devuelve 3.0 devuelve 3.9

ITOA Convierte un entero en una cadena de caracteres Sintaxis: (ITOA <entero>) Valor retornado: una cadena de caracteres. (itoa 33) devuelve "33"
21

RTOS Convierte un nmero real en una cadena de caracteres Sintaxis: (RTOS <nmero> [modo [precisin]]) numero: nmero real (o entero que tomar como real) modo (opcional): entero del 1 al 5 que determina el formato numrico de la cadena: 1. Unidades cientficas 2. Unidades decimales 3. Pies y pulgadas I (fraccin decimal) 4. Pies y pulgadas II (fraccin propia) 5. Unidades fraccionarias precisin (opcional): entero que determina el nmero de decimales de precisin en la cadena Si no se especifican los argumentos modo y precisin se asume el establecido por la variables de Autocad LUNITS y LUPREC Valor retornado: Una cadena de caracteres Ejemplos: (RTOS 5.6 1 4) => 5.6000 E+00" (RTOS 5.6 5 4) => 5 5/8" (RTOS 5.6 2 4) => 5.6000"

DISTOF Convierte un cadena en un nmero real, con un determinado formato de visualizacin. Sintaxis: (DISTOF <"cadena"> [ modo]) Cadena: cadena de caracteres que expresa un valor numrico. modo (opcional): entero del 1 al 5 que indica el formato numrico del nmero real expresado en la cadena (El cdigo se corresponde con el dado en la funcin anterior), la funcin deber ser capaz de interpretar el argumento cadena de acuerdo con el modo especificado: Valor retornado: Un nmero real

ANGTOS Convierte un nmero (que representa un ngulo en radianes) en una cadena de caracteres Sintaxis: (ANGTOS <ngulo> [modo [precisin]]) angulo: valor del ngulo en radianes. modo (opcional): entero del 0 al 4 que determina el formato numrico en la cadena: 0. Grados sexagesimales. 1. Grados, minutos y segundos 2. Grados centesimales. 3. Radianes 4. Unidades geodsicas. precisin (opcional): entero que determina el nmero de decimales de precisin en la cadena. Si no se especifican los argumentos modo y precisin se asume el establecido por la variables de Autocad LUNITS y LUPREC Valor retornado: Una cadena de caracteres. Ejemplos: (ANGTOS 3.1416 0) => 180" (ANGTOS 3.1416 2) => 200g"

ANGTOF Convierte una cadena de caracteres en un nmero real que representa un ngulo Sintaxis: (ANGTOF <"cadena"> [ modo]) Cadena: cadena de caracteres que expresa un valor numrico de ngulo modo (opcional): entero del 0 al 4 que indica el formato numrico del ngulo expresado en la cadena (El cdigo se corresponde con el dado en la funcin anterior), la funcin deber ser capaz de interpretar el argumento de la cadena de acuerdo con el modo especificado. Si no se especifica el argumento modo se asume el establecido por la variable de Autocad LUNITS Valor retornado: Un valor correspondiente al numrico de un ngulo en radianes. Ejemplos: (ANGTOF 180" 0) => 3.1416
22

(ANGTOF 200" 2) => 3.1416

ASCII Convierte el primer carcter de una cadena de caracteres a su cdigo ASCII Sintaxis: (ASCII <"cadena">) Valor retornado: Un entero que representa el cdigo ASCII (ascii "A") (ascii "a") (ascii "GRANDE") CHR Convierte un nmero entero que representa un carcter ASCII en la cadena de un slo carcter correspondiente Sintaxis: (CHR <entero>) Valor retornado: una cadena de un slo carcter. (chr 65) (chr 66) (chr 97) READ Extrae datos de una cadena de caracteres Sintaxis: (READ <"cadena">) Valor retornado: El primer tem de una cadena de caracteres o la primera lista si la cadena contiene listas. (read hola a todos) (read ( 20 30 40)) (read "\"Hola a todos\"") (read "(a b c) (d)") (read "1.2300") (read "87 3.2") TRANS Transforma las coordenadas de un punto de un sistema de coordenadas a otro. Sintaxis: (TRANS <lista de punto o desplazamiento> <codvie> < codnue> [desp] ). codvie: cdigo que expresa el sistema de coordenadas en el cual se expresa el punto. conue: cdigo que expresa el sistema de coordenadas en el cual se quiere expresar el punto 0. SCU 1. SCP 2. SCV (visualizacin) 3. SCV espacio papel desp : si es distinto de nil entiende el primer argumento como un desplazamiento. Valor retornado: Una lista de punto con sus coordenadas transformadas. CVUNIT Convierte un nmero o lista de nmeros de una unidad de medida a otra (Las cadenas que representan unidades de medida vlidas en esta funcin estn almacenadas en el fichero ACAD.UNT) Sintaxis: (CVUNIT <n o lista> <cadvie> <cadnue>) cadvie: cadena de unidad de medida vieja. cadvie: cadena de unidad de medida nueva. Valor retornado: Un nmero o lista de nmeros convertida a la unidad de medida nueva. (cvunit 1 "minuto" "segundo") (cvunit 1.0 "pulgada" "cm") (cvunit 1.0 "acre" "yarda cuadrada ") (cvunit '(1.0 2.5) "pie" "pulgada") (cvunit '(1 2 3) "pie" "pulgada") devuelve devuelve devuelve devuelve devuelve
23

devuelve 65 devuelve 97 devuelve 66

devuelve "A" devuelve "B" devuelve "a"

hola (20 30 40) devuelve la cadena "Hola a todos" devuelve la lista (A B C) devuelve el nmero real 1.23 devuelve el entero 87

60.0 2.54 4840.0 (12.0 30.0) (12.0 24.0 36.0)

5.7. FUNCIONES DE RELACIN = Comprueba la igualdad numrica Sintaxis: (= <tomo> <tomo> <tomo>.) Valor retornado: T si todos los argumentos (nmeros o cadenas de caracteres) se evalan como iguales numricamente, Nil en caso contrario. Las cadenas son comparadas en esta funcin y en las siguientes en base a su valor numrico ASCII (= 4 4.0) (= 20 388) (= 2.4 2.4 2.4) (= 499 499 500) (= "yo" "yo") (= "yo" "t") devuelve T devuelve nil devuelve T devuelve nil devuelve T devuelve nil

/= Comprueba la desigualdad numrica Sintaxis: (/= <tomo> <tomo>) Valor retornado: T si los dos argumentos (nmeros o cadenas de caracteres) no se evalan como iguales numricamente, Nil en caso contrario (/= 10 20) (/= "t" "t") (/= 5.43 5.44) (/= 10 20) devuelve devuelve devuelve devuelve T nil T T

< Comprueba la relacin menor que entre los argumentos Sintaxis: (< <tomo> <tomo> <tomo>.) Valor retornado: T si cada argumento es numricamente menor que el argumento de su derecha y Nil en caso contrario. (< 10 20) (< "b" "c") (< 357 33.2) (< 2 3 88) (< 2 3 4 4) devuelve devuelve devuelve devuelve devuelve T T nil T nil

> Comprueba la relacin mayor que entre los argumentos Sintaxis: (> <tomo> <tomo> <tomo>.) Valor retornado: T si cada argumento es numricamente mayor que el argumento de su derecha y Nil en caso contrario (> 120 17) (> "c" "b") (> 3.5 1792) (> 77 4 2) (> 77 4 4) (> Pablo pablo) devuelve devuelve devuelve devuelve devuelve devuelve T T nil T nil nil

24

<= Comprueba la relacin menor o igual que entre los argumentos Sintaxis: (<= <tomo> <tomo> <tomo>.) Valor retornado: T si cada argumento es numricamente menor o igual que el argumento de su derecha y Nil en caso contrario. (<= 10 20) (<= "b" "b") (<= 357 33.2) (<= 2 9 9) (<= 2 9 4 5) devuelve devuelve devuelve devuelve devuelve T T nil T nil

>= Comprueba la relacin mayor o igual que entre los argumentos Sintaxis: (>= <tomo> <tomo> <tomo>.) Valor retornado: T si cada argumento es numricamente mayor o igual que el argumento de su derecha y Nil en caso contrario. (>= 120 17) (>= "c" "c") (>= 3.5 1792) (>= 77 4 4) (>= 77 4 9) devuelve devuelve devuelve devuelve devuelve T T nil T nil

AND Comprueba los valores de una serie de expresiones. (Y lgico) Sintaxis: (AND <exp> <exp> <exp>.) Valor retornado: T si todos los argumentos se evalan con un valor no nulo y Nil contrario. (and 1.4 2 "hola") (and 1.4 ( = 3 4)) devuelve T devuelve nil

en caso

OR Comprueba de izquierda a derecha una serie de expresiones hasta hallar la primera que se evala con un valor no nulo. (O lgico) Sintaxis: (OR <exp> <exp> <exp>.) Valor retornado: T si alguno de los argumentos se evala con un valor no nulo y Nil en caso contrario. (or 1.4 2 "hola") (or 1.4 ( = 3 4)) (or nil 45 ) (or nil (= 3 4)) devuelve devuelve devuelve devuelve T T T nil

NOT Modifica el sentido de un predicado: lo que es cierto lo hace falso, y viceversa. Sintaxis: (NOT <exp> ) Valor retornado: devuelve T si su argumento es falso y Nil si es cierto. (not nil) (not (= 3 4)) (not (= 4 4)) devuelve T devuelve T devuelve nil

25

EQ Comprueba si los valores atribuidos a ambas expresiones son idnticas Sintaxis: (EQ <exp> <exp> ) Valor retornado: T si las dos expresiones estn ligadas a los mismos datos y Nil en otro caso. (setq f1 '(a b c)) (setq f2 '(a b c)) (setq f3 f2) entonces: (eq f1 f3) (eq f3 f2) devuelve nil, f1 y f3 no son la misma lista devuelve T, f3 y f2 son exactamente la misma lista

EQUAL Comprueba si dos expresiones se evalan con valores iguales Sintaxis: (EQUAL <exp> <exp> [margen de error] ) Valor retornado: T si las dos expresiones se evalan igual y Nil en caso contrario. Si las dos expresiones son nmeros reales se puede incluir un margen de error. (setq f1 '(a b c)) (setq f2 '(a b c)) (setq f3 f2) (setq a 1.123456) (setq b 1.123457) entonces: (equal f1 f3) (equal f3 f2) (equal a b) (equal a b 0.000001) = Comprueba la igualdad numrica Sintaxis: (= <tomo> <tomo> <tomo>.) Valor retornado: T si todos los argumentos (nmeros o cadenas de caracteres) se evalan como iguales numricamente Nil en caso contrario. Las cadenas son comparadas en esta funcin y en las siguientes en base a su valor numrico ASCII. (= 4 4.0) (= 20 388) (= 2.4 2.4 2.4) (= 499 499 500) (= "yo" "yo") (= "yo" "t") devuelve T devuelve nil devuelve T devuelve nil devuelve T devuelve nil devuelve devuelve devuelve devuelve T T nil T

Uso de las funciones anteriores en lnea de comandos: Comando: (setq a 2 b 2) 2 Comando: (= a b) T Comando: (eq a b) T Comando: (equal a b) T

26

5.8. FUNCIONES DE CONDICIN COND Lee una serie de listas. Evala el primer elemento de cada lista (en el orden indicado) hasta que uno de ellos devuelva un valor distinto de nil. A continuacin, evala las expresiones que siguen a este elemento y pasa por alto las restantes listas. Sintaxis: (COND <lista1> <lista2>..) Valor retornado: El retornado por la ltima expresin de la lista evaluada. Si no se evala ninguna lista, la funcin COND devuelve Nil (cond ((< a 20) (setq b (cons 'a a))) ((> a 20) (setq b (list 'a a))) (t (setq b "b=20")) ) en los casos: a = 10 => b = (a . 10) a = 25 => b = (a 25) a = 20 => b = "b=20"

la variable b se evala como un par punteado la variable b se evala como una lista la variable b se evala como un string

Como se muestra, COND se puede utilizar como una funcin de tipo case. Es habitual utilizar T como ltima (por defecto) expresin de prueba. Dada una cadena de respuesta de usuario en la variable s, esta funcin prueba la respuesta y devuelve 1 si es Y o y, 0 si es N o n y nil en cualquier otro caso. (cond ((= s "Y") 1) ((= s "N") 0) (t nil) ) IF Evala una expresin Autolisp basndose en si una expresin de comprobacin inicial se evala como no nula Sintaxis: (IF <test> <expresin si test es /= nil > [expresin si test es = nil ] ) Valor retornado: El valor retornado por expresin evaluada; nil en otro caso. (if (= 1 3) "S!!" "no.") (if (= 2 (+ 1 1)) "S!!") (if (= 2 (+ 3 4)) "S!!") PROGN Evala secuencialmente una serie de expresiones. Sintaxis: (PROGN <exp1> <exp2> ) Valor retornado: La ltima expresin evaluada. Se puede utilizar PROGN para calcular varias expresiones cuando slo se espera una expresin. (if (= a b) (progn (princ "\nA = B ") (setq a (+ a 10) b (- b 10)) ) ) devuelve "no." devuelve "S!!" devuelve nil ((= s "y") 1) ((= s "n") 0)

27

5.9. FUNCIONES PARA GESTIN DE CICLOS REPEAT Evala repetidamente una serie de una o ms expresiones Autolisp un nmero determinado de veces. Sintaxis: (REPEAT<n> <exp1> <exp2> ) n: Entero que indica el n de repeticiones a realizar. Valor retornado: El resultado de la ltima expresin evaluada (setq a 10 b 100) (repeat 4 (setq a (+ a 10)) (setq b (+ b 100)) ) Define a como 50, b como 500 y devuelve 500

(setq L '( 1 2 3 4 5 6) n (length L) i 0 ) (repeat n (setq elem (nth i L) elem (1+ elem) Ln (cons elem ln) i (1+ i) ) ) (setq L (reverse Ln))

Ln nil

Devuelve la lista (2 3 4 5 6 7)

(setq L '( 1 2 3 4 5 6) n (length L) Ln nil ) (repeat n (setq elem (car L) L (cdr L) elem (1+ elem) Ln (cons elem ln) ) ) (setq L (reverse Ln))

Devuelve la lista (2 3 4 5 6 7)

(setq pt1 (getpoint "\npt1?:") pt2 (getpoint "\npt2?:") pt3 (getpoint "\npt3?:") listap (list pt1 pt2 pt3) n (length listap) ) (Command "_pline") (repeat n (setq pt (car listap ) listap (cdr listap)) (command pt) ) (command "") Equivale a dibujar una polilnea que pasa por los puntos pt1 pt2 y pt3

28

WHILE Evala repetidamente una serie de una o ms expresiones Autolisp basndose en si una expresin de comprobacin inicial se evala como un valor nulo o no nulo. Sintaxis: (WHILE <test> <exp1> <exp2> ) Test: Expresin de comprobacin, que hace que las dems expresiones se evalen mientras sta se mantenga distinta de Nil . Valor retornado: El resultado de la ltima expresin evaluada (setq a 10 ) (While (< a 100) (setq a (+ a 10)) ) (setq L '( 1 2 3 4 5 6) i0 (While (setq elem (nth i L)) (setq elem (1+ elem) Ln (cons elem ln) i (1+ i) ) ) (setq L (reverse Ln)) Ln nil )

Define a como 90.

Devuelve la lista (2 3 4 5 6 7)

(setq L '( 1 2 3 4 5 6) Ln nil ) (While (setq elem (car L) ) (setq L (cdr L) elem (1+ elem) Ln (cons elem ln) ..... ) ) (setq L (reverse Ln))

Devuelve la lista (2 3 4 5 6 7)

(setq pt1 (getpoint "\npt1?:")pt2 (getpoint "\npt2?:")pt3 (getpoint "\npt3?:") listap (list pt1 pt2 pt3) ) (Command "_pline") (While (setq pt (car listap )) (setq listap (cdr listap))) (command pt) ) (command "") Equivale a dibujar una polilnea que pasa por los puntos pt1 pt2 y pt3.

(setq L '( 1 2 3 4 5 6) Ln nil ) (foreach n L (setq Ln (cons (+ 1 n) Ln))) (setq l (reverse ln)) )

Devuelve la lista (2 3 4 5 6 7)

(setq pt1 (getpoint "\npt1?:") pt2 (getpoint "\npt2?:") pt3 (getpoint "\npt3?:") listap (list pt1 pt2 pt3) ) (command "_pline") (foreach punto listap (command punto)) (command "") Equivale a dibujar una polilnea que pasa por los puntos pt1 pt2 y pt3.

29

5.10. FUNCIN PARA CREAR FUNCIONES DE USUARIO DEFUN Define una nueva funcin Autolisp o una orden o comando Autocad Sintaxis (DEFUN <nombre> <( [lista-argumentos][ / smbolos locales])> [expr] ...) Nombre: el nombre de la funcin o de la orden que se est creando. Si es una orden o comando Autocad el nombre ser: c:xxx Lista-argumentos: una lista con los argumentos, que puede estar seguida por una barra oblicua y los nombres de uno o ms smbolos locales para la funcin. Argumentos: variables que toman valor en la llamada a la funcin Smbolos locales: variables que slo tienen valor en la funcin que se define. La barra oblicua debe ir separada del primer smbolo local y del ltimo argumento, si existe, por un espacio como mnimo. Si no se declara ningn argumento ni smbolo local, se debe escribir un conjunto vaco de parntesis tras el nombre de la funcin. Los siguientes ejemplos de lista-argumentos muestran valores vlidos y no vlidos: (defun mifunc (x y) ...) (defun mifunc (/ a b) ...) (defun mifunc (x / temp) ...) (defun mifunc () ...) La funcin toma dos argumentos La funcin tiene dos smbolos locales Un argumento, un smbolo local Ningn argumento ni smbolo local

Expr: Expresiones que se ejecutan en la funcin y que utilizan como variables: - Los argumentos de la funcin. - Las variables locales que tienen que tomar valor en la funcin y lo pierden al ejecutarse la misma. - Las variables globales definidas, bien en esta funcin, bien en otras y que por no haber sido definidas como locales en ninguna funcin tienen valor en todo el programa. Valor retornado: La funcin DEFUN devuelve el nombre de la funcin que se va a definir. Al invocar esta funcin, sus argumentos se evalan y se asocian a los smbolos correspondientes. La funcin devuelve el resultado de la ltima expresin evaluada. (DEFUN SUMA_10 (x) (+ 10 x) ) (SUMA_10 5) (SUMA_10 -7.4)

devuelve SUMA10 devuelve 15 devuelve 2.6

(defun puntos (x y / temp) (setq temp (strcat x "...")) (strcat temp y) ) (puntos "a" "b") (puntos "de" "a") (eval temp)

devuelve PUNTOS devuelve "a...b" devuelve "de...a" devuelve nil

Advertencia: No se debe utilizar nunca el nombre de una funcin interna o un smbolo como nombre de funcin creada por el usuario, ya que quedara inaccesible.

30

5.11. FUNCIONES GRFICAS ANGLE Calcula el ngulo que formara una recta definida por dos puntos con la direccin positiva del eje X del SCP actual (si los puntos son 3D se proyectan sobre el plano de construccin actual) Sintaxis: ( ANGLE <pt1> <pt2>) Valor retornado: Un ngulo en radianes (angle '(1.0 1.0) '(1.0 4.0)) (angle '(5.0 1.33) '(2.4 1.33) DISTANCE Calcula la distancia entre dos puntos Sintaxis: ( DISTANCE <pt1> <pt2>) Valor retornado: Un nmero real, que es la distancia en unidades de dibujo entre los dos puntos suministrados como argumentos. Si al menos uno de los puntos facilitados es un punto 2D, DISTANCE no toma en cuenta las coordenadas Z de los puntos 3D especificados, y devuelve la distancia 2D entre los puntos, proyectada sobre el plano de construccin actual. (distance '(1.0 2.5 3.0) '(7.7 2.5 3.0)) devuelve 6.7 (distance '(1.0 2.0 0.5) '(3.0 4.0 0.5)) devuelve 2.82843 POLAR Computa un punto en relacin a un punto dado. Sintaxis: ( POLAR <pt> <ang> <dis>) Valor retornado: Las coordenadas de un punto situado en el ngulo ang (radianes) y a una distancia dis del punto pt todo ello con relacin al SCP actual. El ngulo siempre se refiere al plano de construccin actual. (polar '(1 1 3.5) 0.785398 1.414214) (polar (1 1) (/ pi 2) 3) INTERS Calcula el punto de interseccin entre dos lneas Sintaxis: ( INTERS <pt1> <pt2> <pt3> <pt4> [extend]) Valor retornado: Un punto que indica el punto de interseccin de la lnea definida por pt1 y pt2 y la lnea definida por pt3 y pt4, si no se encuentra ningn punto de interseccin la funcin retorna un nil. Extend: Si extend se evala como nil las lneas se prolongan hasta encontrar el punto de interseccin, en caso contrario o si no se codifica, slo se busca la interseccin en la longitud de los segmentos definidos por los puntos. Todos los puntos se expresan respecto al SCP actual. Si los cuatro argumentos de puntos son 3D, inters busca una interseccin 3D. Si hay algn punto 2D, inters proyecta las lneas sobre el plano de construccin actual y slo busca una interseccin 2D. devuelve (2.0 2.0 3.5) devuelve (1.0 4.0) devuelve 1.5708 devuelves 3.14159

(setq a '(1.0 1.0) b '(9.0 9.0)) (setq c '(4.0 1.0) d '(4.0 2.0)) (inters a b c d) (inters a b c d T) (inters a b c d nil)

devuelve nil devuelve nil devuelve (4.0 4.0)

31

5.12. FUNCIONES DE ENTRADA INTERACTIVA GETPOINT Detiene la ejecucin del programa para que el usuario introduzca un punto. Sintaxis: (GETPOINT [pt] [mensaje]) pt: punto de base opcional mensaje: cadena opcional que ser presentada en el rea de rdenes/peticiones de la pantalla, en el momento de la solicitud del punto Valor retornado: El punto introducido, como una lista de nmeros reales. El usuario no puede escribir otra expresin AutoLISP como respuesta a una peticin GETDIST. (setq p (getpoint)) (setq p (getpoint "Dnde? ")) (setq p (getpoint '(10 20))

respuesta :@40,20 valor retornado: (50.0 40.0 0.0)

GETDIST Detiene la ejecucin del programa para que el usuario introduzca una distancia Sintaxis: (GETDIST [pt] [mensaje]) pt: punto de base opcional mensaje: cadena opcional que ser presentada en el rea de rdenes/peticiones de la pantalla, en el momento de la solicitud de la distancia Valor retornado: Un nmero real. El usuario no puede escribir otra expresin AutoLISP como respuesta a una peticin GETDIST. (setq dist (getdist)) (setq dist (getdist '(1.0 3.5))) (setq dist (getdist "A qu distancia? ")) (setq dist (getdist '(1.0 3.5) "A qu distancia? "))

GETANGLE Detiene la ejecucin del programa para que el usuario introduzca un ngulo. Sintaxis: (GETANGLE [pt] [mensaje]) pt: punto de base opcional mensaje: cadena opcional que ser presentada en el rea de rdenes/peticiones de la pantalla, en el momento de la solicitud del ngulo Valor retornado: El valor del ngulo en radianes. La funcin GETANGLE mide los ngulos a partir de cero radianes (definidos mediante la variable de sistema ANGBASE) aumentando en direccin opuesta a las agujas del reloj. El ngulo resultante se expresa en radianes con respecto al plano de construccin actual (el plano XY del SCP actual, con la elevacin actual). El usuario no puede escribir otra expresin AutoLISP como respuesta a una peticin GETANGLE. Para especificar un ngulo, el usuario debe escribir un nmero en el formato actual de unidades angulares de AutoCAD. Aunque este formato puede utilizar grados, grados centesimales o cualquier otra unidad, esta funcin siempre devuelve el ngulo en radianes. El usuario tambin puede designar dos posiciones 2D en la pantalla grfica para indicar el ngulo a AutoLISP. AutoCAD dibuja una lnea elstica desde el primer punto hasta la posicin del cursor en cruz con el fin de facilitar al usuario la visualizacin del ngulo.

32

Es importante comprender la diferencia entre el ngulo indicado y el que devuelve GETANGLE. Los ngulos que se transmiten a GETANGLE se basan en los valores actuales de ANGDIR y ANGBASE. Sin embargo, una vez que se especifica el ngulo, ste se mide en direccin opuesta a las agujas del reloj (sin tomar en cuenta el valor de ANGDIR), con cero radianes como valor actual de ANGBASE. Los siguientes ejemplos de cdigo muestran cmo se pueden utilizar diferentes argumentos. (setq ang (getangle)) (setq ang (getangle '(1.0 3.5))) (setq ang (getangle "Hacia dnde? ")) (setq ang (getangle '(1.0 3.5) "Hacia dnde? "))

GETORIENT Detiene la ejecucin del programa para que el usuario introduzca un ngulo. Sintaxis: (GETORIENT [pt] [mensaje]) pt: punto de base opcional mensaje: cadena opcional que ser presentada en el rea de rdenes/peticiones de la pantalla, en el momento de la solicitud del ngulo Valor retornado: El valor del ngulo en radianes . Esta funcin se asemeja a GETANGLE, con la diferencia de que el valor de ngulo devuelto por GETORIENT no se ve afectado por las variables de sistema ANGBASE y ANGDIR. Sin embargo, la introduccin del ngulo por parte del usuario todava se basa en los parmetros actuales de ANGDIR y ANGBASE. . La funcin GETORIENT mide los ngulos con una direccin de cero radianes hacia la derecha (este) y los ngulos que se incrementan en sentido contrario a las agujas del reloj. Al igual que con GETANGLE, GETORIENT expresa el ngulo resultante en radianes, respecto al plano de construccin actual. Los ngulos que se transmiten a GETORIENT se basan en los valores actuales de ANGDIR Y ANGBASE. Sin embargo, una vez proporcionado el ngulo, ste se mide en sentido contrario a las agujas del reloj, con cero radianes a la derecha (ANGDIR y ANGBASE se ignoran). Por ello, si selecciona otra base de cero grados u otra direccin para los ngulos que se incrementan, se debe utilizar el comando UNIDADES o las variables de sistema ANGBASE y ANGDIR para realizar la conversin necesaria. Se recomienda el uso de GETANGLE para obtener un valor de rotacin (un ngulo relativo). Y de GETORIENT para obtener una orientacin (un ngulo absoluto).

GETCORNER Detiene la ejecucin del programa para que el usuario introduzca un punto, y traza un rectngulo de banda elstica en la pantalla a medida que el usuario mueve el dispositivo sealador Sintaxis: (GETCORNER <pt> [mensaje]) pt: Primera esquina del rectngulo. mensaje: cadena opcional que ser presentada en el rea de rdenes/peticiones de la pantalla, en el momento de la solicitud de la otra esquina. Valor retornado: El punto introducido por el usuario

33

GETVAR Extrae un valor almacenado en una variable del sistema de AutoCAD Sintaxis: (GETVAR <"nombre de variable">) Valor retornado: valor de la variable del sistema especificada. (getvar "pdmode") (getvar "area") (getvar "perimeter") Devuelve el valor actual para el tipo de punto Devuelve el valor del ltimo rea calculada por Autocad Devuelve el valor del ltimo permetro calculado por Autocad.

GETINT Detiene la ejecucin del programa para que el usuario introduzca un nmero entero. Sintaxis: (GETINT [mensaje]) mensaje: cadena opcional que ser presentada en el rea de rdenes/peticiones de la pantalla, en el momento de la solicitud del entero Valor retornado: El entero introducido por el usuario. El rango de valores pasados a GETINT puede ir de -32,768 a +32,767. El usuario no puede escribir otra expresin de AutoLISP como respuesta a una peticin de GETINT. (setq num (getint)) (setq num (getint "Escriba un nmero: "))

GETREAL Detiene la ejecucin del programa para que el usuario introduzca un nmero real Sintaxis: (GETREAL [mensaje]) mensaje: cadena opcional que ser presentada en el rea de rdenes/peticiones de la pantalla, en el momento de la solicitud del nmero real Valor retornado: El real introducido por el usuario. (setq val (getreal)) (setq val (getreal "Factor de escala: "))

GETSTRING Detiene la ejecucin del programa para que el usuario introduzca una cadena de caracteres Sintaxis: (GETSTRING [espacio] [mensaje]) Espacio: Si este argumento es distinto de nil la cadena introducida puede contener espacios en blanco. (y debe finalizarse con RETURN ). mensaje: cadena opcional que ser presentada en el rea de rdenes/peticiones de la pantalla, en el momento de la solicitud de la cadena Valor retornado: La cadena introducida entrecomillada o una cadena vaca () si el usuario puls Enter sin teclear caracteres. Si tiene ms de 132 caracteres, la cadena slo devuelve estos caracteres. Si contiene el carcter de contrabarra (\), ste se convierte en dos caracteres de contrabarra (\\). De esta manera, el valor resultante puede incluir caminos de nombre de archivo a los que tienen acceso otras funciones. (setq s (getstring "Escriba su nombre ")) Si se responde Juan se define s como "Juan" (setq s (getstring T "Escriba su nombre completo: ")) Si responde Juan Daz Prez se define como "Juan Daz Prez" (setq s (getstring "Nombre de archivo: ")) "\\acad\\midibuj" Si responde \acad\midibuj se define como

34

GETKWORD Detiene la ejecucin del programa para que el usuario introduzca una cadena de caracteres. Esta funcin comprueba la validez de lo introducido basndose en una lista de palabras vlidas establecidas usando la funcin INIGET Sintaxis: (GETKWORD [mensaje]) mensaje: cadena opcional que ser presentada en el rea de rdenes/peticiones de la pantalla, en el momento de la solicitud de la cadena. Valor retornado: La cadena introducida o Nil si el usuario puls Enter sin teclear caracteres AutoCAD lo intenta de nuevo si la entrada no es una palabra clave. Si se trata de una entrada nula ( RETURN ), GETKWORD devuelve nil (siempre que se admitan entradas nulas). Esta funcin tambin devuelve nil si antes no se ha realizado una llamada a INITGET que establezca una o varias palabras clave. El ejemplo siguiente muestra una llamada inicial a initget que define una lista de palabras clave (S y No) y no admite entradas nulas (valor en bits igual a 1) en la siguiente llamada a getkword: (initget 1 "S No") (setq x (getkword "Seguro? (S o No) ")) Este mensaje solicita datos del usuario y define el smbolo x como S o No, segn la respuesta proporcionada. Si sta no coincide con ninguna de las palabras clave o el usuario escribe un valor nulo, AutoCAD vuelve a mostrar la cadena indicada en el argumento solicitud. Si no se especifica este argumento, AutoCAD muestra lo siguiente: Intntelo de nuevo:

INITGET Establece las palabras clave que han de usarse con la siguiente llamada a una funcin introducida por el usuario. Las funciones que toman en consideracin las palabras clave son getint, getreal, getdist, getangle, getorient, getpoint, getcorner, getkword, entsel, nentsel y nentselp. La funcin getstring es la nica funcin introducida por el usuario que no las admite. Sintaxis: (INITGET [bits] [cadena]) Bits: El argumento bits es un nmero entero binario que admite o rechaza determinados tipos de datos de usuario. Algunos de los valores que puede tomar junto a su significado asociado: 1: no permite nulos 2: no permite cero 4: no permite negativos 8: no chequea lmites del dibujo 64: devuelve una distancia 2D, en lugar de 3D. Cadena: El argumento cadena define una lista de palabras clave. Valor retornado: La funcin initget siempre devuelve nil. Para ms informacin sobre la funcin se recomienda consultar el manual de personalizacin de Autocad

35

GETFILED Presenta un cuadro de dialogo de nombres de archivos y espera una entrada de usuario. Sintaxis: (GETFILED <"dialogo"> <"nombre de Fichero por defecto" o ""> <"extensin" o "" (para. *)> <parmetros>) Parmetros: dialogo determina el nombre del cuadro de dilogo, nombre de Fichero por defecto especifica el nombre de archivo que se va a utilizar por defecto extensin es la extensin por defecto del nombre del archivo. Si extensin se transmite como una cadena nula [""], utiliza por defecto * (para todos los tipos). parmetros es un valor entero (un campo codificado en bits) que controla el funcionamiento del cuadro de dilogo. Para definir varias condiciones simultneamente, se aaden los valores en conjunto y se crea un indicador con un nmero comprendido entre el 0 y el 15. Valor del indicador = 1 (bit 0):Se define este bit para solicitar el nombre del archivo que se va a crear. No debe utilizarse para solicitar el nombre de un archivo existente con el fin de abrirlo. En este ltimo caso, si el usuario introduce el nombre de un archivo que no existe, el cuadro de dilogo muestra un mensaje de error en la parte inferior. Si se define este bit y el usuario elige un archivo existente, AutoCAD presenta una casilla de advertencia y ofrece la posibilidad de seguir o cancelar la operacin. Valor del indicador = 2 (bit 1):Desactiva el botn Teclearlo. Este bit se define si se llama a la funcin GETFILED mientras otro cuadro de dilogo est activo (en caso contrario, obliga a cerrar el otro cuadro de dilogo).Si no se define este bit, se activa el botn Teclearlo. Cuando el usuario selecciona el botn, el cuadro de dilogo desaparece y GETFILED devuelve 1. Valor del indicador = 4 (bit 2):Permite al usuario escribir una extensin de nombre de archivo arbitraria o bien no escribir ninguna. Si no se define este bit, GETFILED slo acepta la extensin especificada en el argumento ext, y si el usuario no la escribe en la casilla de texto File, la aade al nombre del archivo. Valor del indicador = 8 (bit 3): Si se define este bit y no se define el bit 0, GETFILED inicia en la biblioteca una bsqueda del nombre de archivo escrito. Si encuentra el archivo y el directorio en el orden de bsqueda en la estructura, descompone el camino y slo devuelve el nombre del archivo. Esto no ocurre si los archivos que se buscan tienen el mismo nombre pero se encuentran en distintos directorios. Si no se define este bit, GETFILED devuelve el nombre completo del archivo, incluido el nombre del camino. Se define este bit si se utiliza el cuadro de dilogo para abrir un archivo existente cuyo nombre desea guardar en el dibujo (u otra base de datos). Si el usuario especifica un nombre de archivo en el cuadro de dilogo, GETFILED devuelve una cadena que corresponde al nombre del archivo, en caso contrario, devuelve nil. La siguiente llamada a getfiled presenta el cuadro de dilogo Seleccionar un archivo Lisp: (getfiled "Seleccionar un archivo Lisp" "/acadr14/support/" "lsp" 8) La funcin GETFILED muestra un cuadro de dilogo con una lista que incluye todos los archivos con la extensin especificada que estn disponibles. Puede utilizar este cuadro de dilogo para buscar por los distintos directorios y unidades, seleccionar un archivo existente o especificar el nombre de uno nuevo.

36

COMMAND Ejecuta rdenes Autocad Sintaxis: (COMMAND <"nombre de la orden"> [argumentos vlidos].....) Valor retornado: nil Los argumentos de la funcin command pueden ser cadenas, nmeros reales, nmeros enteros o puntos, segn solicite la secuencia de mensajes del comando ejecutado. Una cadena nula ("") equivale a pulsar RETURN en el teclado. La funcin command sin argumentos equivale a pulsar ESC y cancela la mayora de los comandos de AutoCAD. La funcin command devuelve nil. La funcin command evala los distintos argumentos y los enva a AutoCAD cada vez que aparece un mensaje que los solicita. Presenta como cadenas los nombres de los comandos y las opciones, como listas de dos nmeros reales los puntos 2D y como listas de tres nmeros reales los puntos 3D. (setq pt1 '(1 1) pt2 '(1 5)) (command "linea" pt1 pt2 "") (setq p1 '(10 20) p2 '(45 60) d 40) (command "linea" p1 p2 "" "circulo" p1 "d" d ) Se ejecuta: Comando: linea Desde el punto: p1 Al punto:p2 Al punto: "" Comando: circulo 3P/2P/TTR/<centro>:p1 Dimetro/<Radio> <10>: d Dimetro <20>: 40 Comando: nil Si el programa lisp se va a utilizar con versiones de AutoCAD para idiomas extranjeros, los nombres de los comandos deben ir precedidos de un subrayado ( _ ), para que puedan traducirse. Los comandos que se ejecutan mediante la funcin command no se reproducen en la lnea de comando si la variable de sistema CMDECHO est definida como cero. (setvar "CMDECHO" 0). Las funciones indicadas por el usuario getxxx (getangle, getstring, getint, getpoint, etc.) no se pueden utilizar dentro de la funcin command. Los comandos TEXTODIN y BOCETO de AutoCAD leen desde el teclado y el digitalizador directamente, por lo que no se pueden utilizar con la funcin command de AutoLISP. Se crea un grupo DESHACER explcitamente alrededor de cada comando utilizado con la funcin command. Si un usuario escribe H (o DESHACER) despus de ejecutar una rutina de AutoLISP, slo se deshar el ltimo comando. Si se introduce DESHACER ms veces, se retroceder por los comandos utilizados en dicha rutina. Si se desea que un grupo de comandos se considere un grupo (o toda la rutina), se utilizan las opciones Inicio y Fin de DESHACER. Si un comando de AutoCAD est activo y el smbolo PAUSE se encuentra predefinido como un argumento de la funcin command, esta funcin se interrumpir para que el usuario pueda escribir informacin. Ejemplo ejecutado a nivel de lnea de comandos: Comando: (setq centro '(10 20)) (10 20) Comando: (command "circulo" centro PAUSE "linea" centro PAUSE "") circulo 3P/2P/TTR/<centro>: Dimetro/<Radio>: Comando: linea Desde el punto: Al punto:
37

OSNAP Aplica a un punto un modo de referencia Autocad Sintaxis: (OSNAP <pt> <modo>) Valor retornado: Una lista de punto resultante del modo de referenciar objetos que se est aplicando al argumento pt. El funcionamiento de esta orden depende del valor de la variable del sistema APERTURE y del punto de vista 3D actual.

(osnap p5 "int") (osnap p7 "fin")

devuelve nil devuelve nil

Cambiando la variable APERTURE:

(osnap p5 "int") (osnap p7 "fin")

devuelve nil devuelve p4

38

5.13. FUNCIONES PARA GESTIN DE FICHEROS LOAD Carga un archivo Autolisp en la memoria y evala las expresiones en el archivo. Sintaxis: (LOAD <"nombre del fichero"> [si falla] ) nombre de fichero: cadena de caracteres con el nombre, sin extensin .lsp, del fichero. Si no se indica ningn camino se busca el fichero segn el camino de acceso a bibliotecas Autocad. . Una barra oblicua (/) o dos contrabarras (\\) son delimitadores de directorio vlidos. Si falla: valor vuelto por la funcin en el caso de que la carga del fichero fracase. Si no se proporciona este argumento, la funcin presenta un mensaje de error AutoLISP Valor retornado: El de la ltima expresin evaluada, si la carga es buena. Los ficheros que se quiere sean cargados al iniciarse la sesin del editor de dibujo tendrn que estar especificados en el fichero ACAD.LSP que Autocad carga automticamente. Estudiar este ejemplo despus de ver la funcin DEFUN (defun MI-FUNC1 (x) (defun MI-FUNC2 (x) ...cuerpo de la funcin...) ...cuerpo de la funcin. )

y el archivo prueba2.lsp no existe, entonces: (load "/luis/prueba1") (load "\\luis\\prueba1") (load "/luis/prueba1" "mal") (load "prueba2" "mal") (load "prueba2") devuelve MI-FUNC2 devuelve MI-FUNC2 devuelve MI-FUNC2 devuelve "mal" produce un error de AutoLISP

Cuando un programa define varias funciones deben estar todas codificadas en un nico fichero que se cargar con la funcin LOAD. OPEN Abre un archivo de disco para leer o almacenar datos Sintaxis: (OPEN <"nombre de fichero"> <"clave de acceso">) El argumento nombre de fichero es una cadena que especifica el nombre y la extensin del archivo que debe abrirse. clave de acceso: cadena de una letra minscula, es la etiqueta de lectura/escritura y debe contener una cadena de una sola letra en minsculas. En la tabla siguiente se describen las letras de modo vlidas. "r": Abre un fichero para lectura "w": Abre un fichero para escritura "a": Abre un fichero para escribir aadiendo nuevos datos al final del mismo. Sita el puntero al final del fichero abierto.2 Valor retornado: El descriptor de fichero utilizado por las funciones de Entrada/Salida a fichero, por tanto se deber atribuir a un smbolo que permita referirse a ese descriptor. (setq a (open "archivo.ext" "r")) Si se tiene en cuenta que los archivos de los ejemplos siguientes no existen, (setq f (open "nueva.tst" "w")) devuelve <Archivo #nnn> (setq f (open "noesta.ahi" "r")) devuelve nil (setq f (open "registro" "a")) devuelve <Archivo #nnn>
2

Nota En sistemas DOS, algunos programas y editores de texto escriben los archivos de texto con una marca de fin de archivo (CTRL Z, cdigo ASCII decimal 26) al final del texto. Cuando lee un archivo de texto, el DOS devuelve un estado de fin de archivo si encuentra una marca CTRL Z, aunque a sta le sigan ms datos. Si va a utilizar el modo "a" de OPEN para aadir datos a archivos creados en otros programas, cercirese de que stos no insertan marcas CTRL Z al final de sus archivos de texto.

39

El argumento nombre de fichero puede incluir un prefijo de directorio. En los sistemas DOS es posible usar una letra de unidad y una contrabarra (\) en lugar de una barra oblicua (/), aunque no debe olvidarse que en una cadena es necesario especificar dos contrabarras (\\) para obtener una. (setq f (open "/x/nueva.tst" "w")) (setq f (open "\\x\\nueva.tst" "w")) devuelve <Archivo #nnn> devuelve <Archivo #nnn>

CLOSE Cierra un archivo abierto Sintaxis: (CLOSE <smbolo correspondiente al descriptor de fichero>) El argumento smbolo correspondiente al descriptor de fichero es un descriptor de archivo que se obtiene mediante la funcin OPEN. Tras utilizar la funcin CLOSE, aunque el descriptor de fichero no cambia, deja de ser vlido. Los datos aadidos a un archivo abierto no se escriben realmente hasta que se cierra el archivo. Valor retornado: nil si descriptor_archivo es vlido, en caso contrario devuelve un mensaje de error. Por ejemplo, el siguiente cdigo calcula el nmero de lneas del archivo unarchivo.txt y define la variable ct en ese nmero. (setq fil "UNARCHIVO.TXT") (setq x (open fil "r") ct 0) (while (read-line x) (setq ct (1+ ct)) ) (close x)

FINDFILE Localiza un archivo en la ruta de bsqueda de archivos de Autocad Sintaxis: (FINDFILE <"nombre_archivo">) Valor retornado: una cadena de caracteres con el nombre completo del archivo indicando la ruta de localizacin. La funcin FINDFILE no asigna el tipo o extensin del archivo especificado en nombre_archivo. Si nombre_archivo no especifica un prefijo de unidad/directorio en este argumento, FINDFILE busca en el camino de la biblioteca de AutoCAD. Si se escribe un prefijo de unidad/directorio, FINDFILE busca en dicho directorio. La funcin FINDFILE siempre devuelve un nombre completo de unidad/directorio/archivo o nil si el archivo especificado no se ha encontrado. El nombre completo que devuelve FINDFILE puede utilizarse con la funcin OPEN.

Si el directorio actual es /acad y contiene el archivo abc.lsp. (findfile "abc.lsp") devuelve "/acad/abc.lsp" Si se est editando un dibujo en el directorio /acad/drawings, la variable de entorno ACAD se define como /acad/support, y el archivo xyz.txt slo existe en el directorio/acad/support. (findfile "xyz.txt") devuelve "/acad/support/xyz.txt" Si ninguno de los directorios del camino de bsqueda de la biblioteca contiene el archivo no esta. (findfile "noesta") devuelve nil

40

5.14. FUNCIONES DE LECTURA Y ESCRITURA 5.14.1. ESCRITURA PRIN1 Imprime una expresin AutoLISP en el rea de rdenes o la escribe en un archivo abierto en modo de escritura. Sintaxis: (PRIN1 [expresin] [descriptor de fichero]) Valor retornado: el argumento de la expresin. Es posible llamar a la funcin prin1 sin argumentos, en cuyo caso devuelve (e imprime) la cadena nula. (setq a 123 b '(a)) (prin1 'a) (prin1 a) (prin1 b) (prin1 "Hola")

imprime imprime imprime imprime

A 123 (A) "Hola"

y devuelve y devuelve y devuelve y devuelve

A 123 (A) "Hola"

Los ejemplos anteriores aparecen en pantalla porque no se ha especificado un descriptor de archivos con descriptor_archivo. Si se tiene en cuenta que f es un descriptor vlido para un archivo abierto para escritura, (prin1 "Hola" f) PRINC Imprime una expresin AutoLISP en el rea de rdenes o la escribe en un archivo. (La diferencia con PRIN1 es que PRINC evala los caracteres de control que aparezcan en la expresin.). Sintaxis: (PRINC [expresin] [descriptor de fichero]) Valor retornado: el argumento de la expresin. PRINT Imprime un salto de lnea, una expresin AutoLISP y un espacio en el rea de rdenes o lo escribe en un archivo. Sintaxis: (PRINT [expresin] [descriptor de fichero]) Valor retornado: el argumento de la expresin PROMPT Presenta una cadena de caracteres en el rea de rdenes. (Evala caracteres de control) Sintaxis: (PROMPT <cadena>) Valor retornado: nil En las configuraciones de pantalla dual de AutoCAD, PROMPT muestra la cadena en ambas pantallas, por lo que resulta ms til princ. (prompt "Nuevo valor: " WRITE-CHAR Escribe un solo carcter en el rea de rdenes o bien en un fichero abierto. Sintaxis: (WRITE-CHAR <num> [descriptor de fichero]) El argumento nm es el cdigo ASCII decimal del carcter que debe escribirse. Valor retornado: El cdigo ASCII para los caracteres escritos. (write-char 67) devuelve 67 y escribe la letra C en la pantalla. ) muestra Nuevo valor: en la(s) pantalla(s) escribir "Hola" en el archivo indicado y devolver "Hola".

Si se tiene en cuenta que f es el descriptor de un archivo abierto, (write-char 67 f) devuelve 67 y escribe la letra C en ese archivo.

41

WRITE-LINE Escribe una cadena de caracteres en al rea de rdenes o bien en un archivo (evala caracteres de control. Sintaxis: (WRITE-LINE <cadena> [descriptor de fichero]) Valor retornado: La cadena de caracteres. (write-line "Prueba" f) escribe Prueba y devuelve "Prueba"

TERPRI Imprime un salto de lnea en el rea de rdenes. Sintaxis: (TERPRI) Valor retornado: nil

5.14.2. LECTURA READ-CHAR Lee caracteres procedentes del bufer del teclado o de un archivo abierto en modo de lectura. Sintaxis: (READ-CHAR [descriptor de fichero]) Valor retornado: El cdigo ASCII para el carcter ledo. Por ejemplo, si se tiene en cuenta que el bfer de entradas por teclado est vaco, (read-char) espera a que se escriban datos. Si introduce los caracteres ABC seguidos de RETURN, read-char devuelve 65 (el cdigo ASCII decimal correspondiente a la letra A). Las tres llamadas siguientes a read-char devuelven 66, 67 y 10 (lnea nueva), respectivamente. Si se efecta otra llamada, readchar vuelve a esperar a que se escriban datos.

READ- LINE Lee una cadena de caracteres procedentes del bufer del teclado o de un archivo abierto en modo de lectura. Sintaxis: (READ-LINE [descriptor de fichero]) Valor retornado: la cadena leda. (Cuando se alcanza el final de un archivo de lectura el valor retornado es nil ) Por ejemplo, si tiene en cuenta que f es un puntero de archivo abierto vlido, (read-line f) devuelve la siguiente lnea de entrada del archivo, o nil si ha llegado al final del archivo.

42

Ejemplo ejecutado a nivel de lnea de rdenes de Autocad: (SETQ A 10 B HOLA) HOLA (PRIN1 A) 1010 (PRIN1 \nCASA) \nCASA\nCASA (PRINC A) 1010 (PRINC \nCASA) CASA\nCASA (PRINT A) 10 10 (PRINT \nCASA) \nCASA \nCASA (PROMPT \nCASA) CASAnil (WRITE-CHAR A) 10 (WRITE-CHAR 67) C67 (WRITE-LINE B) HOLA HOLA (WRITE-LINE \nCASA) CASA CASA

43

5.15. FUNCIONES DE ORDENACIN

ACAD_STRLSORT Ordena alfabticamente listas de cadenas de caracteres Sintaxis: (ACAD_STRLSORT lista) Valor retornado: La lista con las cadenas ordenadas alfabticamente. Si la lista no contiene cadenas o no hay memoria suficiente para realizar la ordenacin, la funcin devuelve NIL.

(setq mes '("ene" "feb" "mar" "abr" "may" "jun" "jul" "ago" "sep" "oct" "nov" "dic")) (acad_strlsort mes) devuelve: ("abr" "ago" "dic" "ene" "feb" "jul" "jun" "mar" "may" "nov" "oct" "sep")

VL-SORT Ordena todos los elementos de una lista de acuerdo con una funcin de comparacin dada. En determinados casos puede eliminar los objetos duplicados. Sintaxis: (VL-SORT lista funcin) Puede emplearse como funcin de comparacin cualquiera que acepte dos argumentos y devuelva T (u otro valor distinto de Nil) cuando el primer argumento precede al segundo conforme al criterio de ordenacin. Valor retornado: La lista con los elementos de la lista original ordenados, aunque no se garantiza la conservacin de todos los elementos originales (elimina las cadena y los enteros duplicados).

(vl-sort '(9.0 9.0 1 7 3 7 88) '<) )

devuelve: (1 3 7 9.0 9.0 88)

VL-SORT-I Ordena todos los elementos de una lista de acuerdo con una funcin de comparacin dada, y devuelve sus ndices. No elimina duplicados. Sintaxis: (VL-SORT-I lista funcin) Puede emplearse como funcin de comparacin cualquiera que acepte dos argumentos y devuelva T (u otro valor distinto de Nil) cuando el primer argumento precede al segundo conforme al criterio de ordenacin. Valor retornado: Una lista que contiene los ndices de los elementos de la lista, ordenados conforme al criterio establecido por la funcin de comparacin.

(vl-sort-i '("a" "d" "f" "c") '>)

devuelve: (2 1 3 0)

El orden en la lista ordenada sera: "f" "d" "c" "a"; donde "f" es el tercer elemento (ndice 2) en la lista original, "d" es el segundo elemento (ndice 1) en la lista, y as sucesivamente. (vl-sort-i '(9.0 9.0 1 7 3 7 88) '<) ) devuelve: (2 4 5 3 1 0 6)

Los ndices se pueden emplear para recuperar mediante la funcin NTH los valores originales. (defun ordena-lista (lista funcion) (mapcar (lambda (x) (nth x lista)) (vl-sort-i lista funcion)) ) (ordena-lista '(9.0 9.0 1 7 3 7 88) '<) devuelve: (1 3 7 7 9.0 9.0 88)

44

5.16. FUNCIONES DE CONTROL DE PANTALLA

REDRAW Redibuja la pantalla de presentacin (o las entidades especificadas) Sintaxis: (REDRAW ) (sintaxis simplificada para el redibujado de la pantalla) Valor retornado: Nil

GRAPHSCR Fuerza la presentacin de pantalla grfica en sistema de pantalla nica. Sintaxis: (GRAPHSCR) Valor retornado: nulo

TEXTSCR Presenta la pantalla texto en sistemas de pantalla nica Sintaxis: (TEXTSCR) Valor retornado: nulo

TEXTPAGE Presenta la pantalla texto en sistemas de pantalla nica y la limpia Sintaxis: (TEXTPAGE) Valor retornado: nulo

VPORTS Extrae los nmeros de identificacin de las ventanas grficas Sintaxis: (VPORTS) Valor retornado: Una lista de sublistas donde los elementos de cada sublista son: 1. El nmero de identificacin de cada ventana grfica. 2. Coordenadas de la esquina inferior izquierda (coordenadas normalizadas). 3. Coordenadas de las esquina superior derecha..

45

5.17. OTRAS FUNCIONES DE UTILIDAD EVAL Evala expresiones Sintaxis:(EVAL <expresin>) Valor retornado: El valor retornado por la expresin evaluada En la lnea de rdenes la abreviatura es el signo ! (setq a 123) (setq b 'a) entonces: (eval 4.0) (eval (abs -10)) (eval a) (eval b) devuelve devuelve devuelve devuelve 4.0 10 123 123

QUOTE Procesa una instruccin sin evaluarla Sintaxis:(QUOTE <expresin>) Valor retornado: La expresin sin evaluarla La sintaxis alternativa es el apstrofo. No puede usarse en el indicador COMMAND. (quote a) (quote cat) (quote (a b)) 'a 'cat '(a b) devuelve devuelve devuelve devuelve devuelve devuelve A CAT (A B) A CAT (A B)

Los tres ltimos ejemplos no tienen efecto si se introducen directamente desde el teclado como respuesta a un mensaje de AutoCAD.

NULL Comprueba si una expresin se evala como nulo Sintaxis: (NULL <expresin>) Valor retornado: T si la expresin evaluada es nulo y nil en caso contrario. (setq a 123 b "cadena" c nil) (null a) (null b) (null c) (null ' )

devuelve devuelve devuelve devuelve

nil nil T T

QUIT Fuerza a la rutina actual a abandonar el procesamiento. Sintaxis: (QUIT) Valor retornado: El mensaje quit/exit abort (abandonar/salir abortar)

46

TEXTBOX Mide un objeto de texto designado y devuelve las coordenadas diagonales del cuadro donde est contenido el texto Sintaxis: (TEXTBOX <lista_e>) lista_e: es una lista de definicin de entidad en la forma devuelta por ENTGET y debe definir un objeto de texto. Debe definir un objeto de texto. Si en lista_e se omiten los campos que definen parmetros de texto distintos del texto en s, se utilizan los valores actuales (por defecto). Valor retornado: Si textbox se ejecuta satisfactoriamente, devuelve una lista de dos puntos, en caso contrario devuelve nil. Lo mnimo que TEXTBOX acepta como lista es el texto en s. (textbox '((1 . "Hola mundo."))) puede devolver ((0.0 0.0 0.0) (0.8 0.2 0.0))

47

6. FUNCIONES AVANZADAS DE PROGRAMACIN AUTOLISP 6.1. OBJETIVOS Y ENTORNO DE LA PROGRAMACIN AutoLISP LISP BSICO: El objetivo ha sido la incorporacin de ALTAS en la base de datos geomtrica. La gran limitacin consiste, por consiguiente, en plantear MODIFICACIONES. LISP AVANZADO: Resuelve el problema anterior proporcionando formas de conexin con el metaarchivo de informacin grfica.

6.2. CONCEPTOS BSICOS Conjunto designado: Conjunto de entidades designado, bien, automticamente y retenido como una variable en la corriente del programa. interactivamente, bien,

Nombre de entidad: clave alfanumrica asociada a cada entidad del dibujo en el formato interno. (puntero capaz de producir una lectura en la base de datos del dibujo) <Nombre de objeto: 3c50500> Registro de entidad: Informacin relativa a la entidad estructurada como una lista de asociaciones que utilizan como claves los cdigos estudiados para la estructura interna en el formato DXF. Definicin de una lnea en formato DXF 0 LINE 5 20 100 AcDbEntity 8 0 100 AcDbLine 10 112.186506 20 131.211019 30 0.0 11 233.335573 21 229.387734 31 0.0
Registro de la entidad lnea utilizado por Autolisp ((-1 . <Nombre de objeto: 3c50500>) (0 . "LINE") (5 . "20") (100 . "AcDbEntity") (67 . 0) (8 . "0") (100 . "AcDbLine") (10 112.187 131.211 0.0) (11 233.336 229.388 0.0) (210 0.0 0.0 1.0))

48

6.3. FORMA DE TRABAJO Y FUNCIONES UTILIZADAS - Creacin del conjunto designado: (SETQ) Creacin interactiva: SSGET Creacin automtica: SSGET "X" filtros Modos de designacin de Autocad - Obtencin de los nombres de entidad. (SETQ) SSLENGTH SSNAME SSMEMB SSADD SSDEL - Obtencin del registro de entidad. (SETQ) ENGET - Gestin de subentidades (entidades compuestas) Polilneas => Vrtices Bloques con atributos => Atributos (SETQ) ENTLAST ENTNEXT ENTSEL ENTDEL - Manipulacin del registro de entidad: ASSOC CONS SUBST rdenes relacionadas con la manipulacin de listas - Creacin de una nueva entidad: ENTMAKE - Modificacin de la informacin del registro y regeneracin del dibujo: ENTMOD ENTUPD (entidades compuestas).

49

6.4. DESCRIPCIN DE LAS FUNCIONES SSGET Solicita al usuario que designe objetos (entidades) y devuelve un conjunto de seleccin (un puntero a la informacin del conjunto). Sintaxis: (SSGET [modo] [pt1 [pt2]] [lista_pt] [lista_filtros]) Modo: es una cadena que especifica el mtodo de designacin de objetos. Los modos vlidos son "_W", "_WP", "_C", "_CP", "_L", "_P", "_I" y "_F", que corresponden a los mtodos de designacin Ventana, PolgonoV, Captura, PolgonoC, Ultimo, Previo, Implcito y Borde. Otro valor optativo de modo es "X", que selecciona toda la base de datos. pt1 y pt2: especifican puntos relevantes para la designacin. Introducir un punto sin ningn argumento modo equivale a seleccionar un objeto designando un solo punto. Lista_pt: especifican puntos relevantes para la designacin para los casos en que sea necesario. lista_filtros: es una lista de asociaciones que especifica propiedades de objeto. Los objetos que coinciden con la lista_filtros se aaden al conjunto de seleccin. Si se omiten todos los argumentos, SSGET muestra la solicitud Designar objetos para que el conjunto de seleccin pueda construirse de forma interactiva. Valor retornado: un conjunto de seleccin (un puntero a la informacin del conjunto) Los conjuntos de seleccin pueden contener objetos de los espacios papel y modelo, pero cuando el conjunto se utiliza en una operacin, los objetos del espacio no activo se descartan. Los conjuntos de seleccin devueltos por SSGET slo contienen entidades principales (ningn atributo ni vrtice de polilnea). Ejemplos de uso de SSGET (ssget): Solicita al usuario que realice una designacin general de objetos y los incluye en un conjunto de seleccin (ssget "_P"): Crea un conjunto de seleccin con los ltimos Objetos seleccionados (ssget "_L"): Crea un conjunto de seleccin con los ltimos objetos visibles aadidos a la base de datos (ssget '(2 2)): Crea un conjunto de seleccin con un objeto que pasa por el punto (2,2) (ssget "_W" '(0 0) '(5 5)): Crea un conjunto de seleccin con los objetos incluidos en la ventana desde (0,0) hasta (5,5). (ssget "_C" '(0 0) '(1 1)): Crea un conjunto de seleccin con los objetos que pasan por el rectngulo de (0,0) a (1,1) (ssget "X"): Crea un conjunto de seleccin con todos los objetos de la base de datos (ssget "X" lista_filtros): Analiza la base de datos y crea un conjunto de seleccin de objetos que coinciden con la lista_filtros. (ssget lista_filtros ): Solicita al usuario que realice una seleccin general de objetos y coloca slo los objetos que coinciden con y los Incluye en un conjunto de seleccin (ssget "_P" lista_filtros): Crea un conjunto de seleccin con los ltimos objetos seleccionados que coinciden con la lista_filtros

50

Los siguientes ejemplos de ssget requieren que se suministre una lista de puntos a la funcin. La variable lista_pt no puede contener puntos que definan segmentos con longitud cero. (setq lista_pt '((1 1)(3 1)(5 2)(2 4)) ) (ssget "_WP" lista_pt): Crea un conjunto de seleccin con todos los objetos incluidos en el polgono definido por lista_pt (ssget "_CP" lista_pt): Crea un conjunto de seleccin con todos los objetos que pasan por el polgono y los que estn dentro definidos por lista_pt (ssget "_F" lista_pt): Crea un conjunto de seleccin con todos los objetos que intersecan el borde definido por lista_pt (ssget "_WP" lista_pt lista_filtros): Crea un conjunto de seleccin con todos los objetos dentro del polgono definido por lista_pt que coinciden con la lista_filtros AutoLISP no permite manejar ms de 128 conjuntos abiertos a la vez. Si se alcanza este lmite, AutoCAD se niega a crear ms conjuntos de seleccin y devuelve nil a todas las llamadas SSGET.

SSLENGTH Devuelve el nmero entero correspondiente al nmero de entidades del conjunto designado indicado. Sintaxis: ( SSLENGTH < conjunto designado> ) Valor retornado: Un nmero entero. (setq cs (ssget "U")) (sslength cs) Coloca el ltimo objeto en el conjunto de seleccin cs devuelve 1

SSNAME Devuelve el nombre de entidad de la entidad perteneciente al conjunto designado indicado y que ocupa la posicin que especifica el ndice. Sintaxis: ( SSNAME < conjunto designado> < ndice> ) El argumento ndice debe ser un nmero entero. Si es negativo o mayor que la entidad con el nmero ms alto del conjunto de seleccin, el resultado es nil. El primer elemento del conjunto tiene un ndice definido como cero. Valor retornado: El nombre de la entidad (Un puntero a la informacin de la entidad) (setq cs (ssget)) (setq ent1 (ssname cs 0)) (setq ent1 (ssname cs 3)) Crea un conjunto de seleccin llamado cs Obtiene el nombre de la primera entidad de cs Obtiene el nombre de la cuarta entidad de cs

SSMEMB Comprueba si un objeto (entidad) forma parte de un conjunto de seleccin Sintaxis: (SSMEMB <nombre_ent> < cs>) Valor retornado: Si la entidad forma parte del conjunto, SSMEMB devuelve su nombre (nombre_ent). En caso contrario, devuelve nil. Por ejemplo, si la entidad e1 pertenece al conjunto de seleccin cs1 pero e2 no, entonces (ssmemb e1 cs1) (ssmemb e2 cs1) devuelve el nombre de entidad e1 devuelve nil

51

SSADD Aade un objeto (entidad) a un conjunto de seleccin o crea un conjunto de seleccin nuevo Sintaxis: (SSADD [nombre_ent [cs]]) Si se llama a SSADD sin argumentos, la funcin construye un nuevo conjunto de seleccin sin miembros. Si se le llama con el argumento de nombre de entidad nico nombre_ent, SSADD construye un conjunto de seleccin nuevo slo con esa entidad. Si se le llama con un nombre de entidad y el conjunto de seleccin cs, SSADD aade la entidad con nombre al conjunto de seleccin. Valor retornado: el conjunto de seleccin nuevo o modificado. Al aadir una entidad a un conjunto, la entidad nueva se aade al conjunto existente, y se devuelve como resultado el conjunto transmitido como cs. De este modo, si el conjunto se asigna a otras variables, stas tambin reflejan lo aadido. Si la entidad con nombre ya se encuentra en el conjunto, la operacin con SSADD se ignora y no se indica ningn error. (setq e1 (entnext)) (setq ss (ssadd)) (ssadd e1 cs) (setq e2 (entnext e1)) (ssadd e2 cs) Define e1 como el nombre de la primera entidad del dibujo Define cs como un conjunto de seleccin vaco Devuelve cs con nombre de entidad e1 aadido Obtiene la entidad que sigue a e1 Devuelve cs con nombre de entidad e2 aadido

SSDEL Suprime un objeto (entidad) de un conjunto de seleccin Sintaxis: (SSDEL <nombre_ent> <cs>) La funcin SSDEL borra la entidad nombre_ent del conjunto de seleccin cs. Valor retornado: el nombre de conjunto de seleccin cs. La entidad se suprime del conjunto de seleccin, pero no se crea un conjunto nuevo con dicha entidad. Si sta no se encuentra en el conjunto, se devuelve nil. Por ejemplo, si la entidad e1 pertenece al conjunto de seleccin cs1 pero e2 no, entonces (ssdel e1 cs1) (ssdel e2 cs1) Devuelve el conjunto de seleccin cs con la entidad e1 suprimido. Devuelve nil (no cambia cs1)

52

ENTGET Busca en la base de datos la entidad cuyo nombre se proporciona y devuelve una lista con los datos de su definicin (registro de entidad) Sintaxis: ( ENTGET < nombre de entidad> ) Valor retornado: lista de asociaciones (pares punteados o listas normales) que componen el registro de entidad Los datos que ENTGET devuelve son codificados como una lista de asociaciones, desde la que se pueden extraer elementos mediante la funcin ASSOC. Los objetos de esta lista tienen asignados cdigos de grupo DXF de AutoCAD para cada parte de la informacin de la entidad. Supongamos que el ltimo objeto creado en el dibujo es una lnea cuyos puntos iniciales y finales son (1,2) y (6,5), respectivamente. Mediante la funcin entlast, puede recuperar el nombre de la entidad del ltimo objeto y transmitirlo a entget. (entget (entlast)) El resultado podra ser el siguiente: ((-1 . <<Nombre de entidad: 60000014>>) (0 . "LNEA") (8 . "0") (10 1.0 2.0 0.0) (11 6.0 6.0 0.0) ) Nombre de entidad Tipo de objeto Capa Punto inicial Punto final

Los cdigos de grupo DXF que utiliza AutoLISP no son exactamente iguales que los de los archivos DXF. Al igual que ocurre con DXF, los elementos de encabezamientos de entidades (color, tipo de lnea, grosor, indicador de atributo e identificador de entidad) se exportan slo en el caso de que no contengan valores por defecto. A diferencia de DXF, los campos optativos de definicin de entidades se exportan tanto si mantienen los valores por defecto como si no, lo cual simplifica el proceso. Los programas siempre pueden asumir que estos campos estn presentes en los algoritmos generales que les afectan. Adems, a diferencia de DXF, las coordenadas X, Y y Z se agrupan en una lista de puntos, como (10 1.0 2.0 3.0), en lugar de aparecer como grupos 10, 20 y 30 separados. El primer elemento de la lista (-1) contiene el nombre de esta entidad. Los pares de puntos independientes, que representan los valores, se pueden extraer mediante ASSOC, utilizando CDR para obtener sus valores. Las sublistas para puntos no son pares punteados como el resto. El CDR de la sublista es el valor del grupo por convencin. Como un punto es una lista de dos (o tres) nmeros reales, el grupo completo es una lista de tres (o cuatro) elementos. El CDR del grupo es una lista que representa un punto, de modo que se mantiene la convencin de que CDR siempre devuelve el valor.

53

CDIGOS DE GRUPO BSICOS INTERESANTES Se presentan aqu algunos cdigos de grupo (los que se usarn ms frecuentemente). Para conocer los dems se recomienda la consulta al manual de personalizacin de Autocad. CDIGO -1 0 1 2 3,4 6 7 8 10 11 38 39 40 a 48 50 a 58 62 210 VALOR Nombre de entidad Tipo de entidad Valor del texto (la propia cadena) Nombre: bloques, etc Otros valores de nombre o de texto Nombre de tipo de lnea Nombre de estilo de texto Nombre de capa PUNTO PRIMARIO: Punto inicial (lnea), punto de colocacin(texto), centro (crculo), punto de insercin de un bloque Punto final Elevacin Altura de objeto radios de circulo, Altura de texto, factores de escala. ..... ngulos Nmero de color Orientacin de la altura de objeto

ENTLAST Devuelve el nombre del ltimo objeto principal (entidad) no suprimido del dibujo Sintaxis: (ENTLAST) Valor retornado: El nombre de entidad La funcin ENTLAST se suele utilizar para obtener el nombre de la entidad que se ha aadido con la funcin COMMAND. (setq e1 (entlast)) Define e1 como el nombre de la ltima entidad principal del dibujo.

ENTNEXT Devuelve el nombre del siguiente objeto (entidad) del dibujo. La funcin ENTNEXT devuelve tanto las entidades principales como las subentidades. Las entidades seleccionadas mediante SSGET son entidades principales, no atributos de bloques ni vrtices de polilneas. Para acceder a la estructura interna de estas entidades complejas, se utiliza ENTNEXT que permite llegar a todas las subentidades Sintaxis: (ENTNEXT [nombre_ent]). Valos retornado: Si se llama a ENTNEXT sin argumentos, devuelve el nombre de la primera entidad no suprimida de la base de datos. Si ENTNEXT se llama con un argumento de nombre de entidad nombre_ent, devuelve el nombre de la primera entidad no suprimida que sigue a nombre_ent en la base de datos. Si nombre_ent es la ltima entidad de la base de datos, devuelve nil. Forma de uso: Una vez que se haya obtenido el nombre de la subentidad adecuada, se puede trabajar con ella como con cualquier otra entidad. Si para ello se utiliza ENTNEXT, se puede buscar la entidad original aproximndose con ENTNEXT hasta que se encuentre una entidad SEQEND y, a continuacin, extrayendo el grupo -2 de la entidad, que es el nombre principal de entidad.

54

(setq e1 (entnext)) (setq e2 (entnext e1))

Asigna e1 al nombre de la primera entidad del dibujo Define e2 como el nombre de la entidad que sigue a e1

(defun lastent (/ a b) (if (setq a (entlast)) (while (setq b (entnext a))

Obtiene la ltima entidad principal si contiene subentidades, crea un bucle hasta la ltima subentidad a: devuelve la ltima entidad o subentidad principal

(setq a b) ) ) )

ENTSEL Solicita al usuario la designacin de un nico objeto (entidad) mediante la especificacin de un punto. Sintaxis: (ENTSEL [solicitud]) La cadena especificada en solicitud se utiliza para solicitar al usuario el objeto. Si no se escribe ninguna cadena, la solicitud tomar Designar objeto como valor por defecto. Valor retornado: una lista cuyo primer elemento es el nombre de la entidad del objeto designado y cuyo segundo elemento lo forman las coordenadas del punto utilizado para designar el objeto. Nota: El punto de designacin que devuelve ENTSEL no representa un punto que est en el objeto seleccionado. El punto que se devuelve es la ubicacin del cursor en cruz cuando se realiza la designacin. La relacin entre el punto de designacin y el objeto variar dependiendo del tamao de la caja de seleccin y de la escala de ampliacin actual. La siguiente secuencia de comandos de AutoCAD ilustra el uso de la funcin entsel y la lista que devuelve: Comando: linea Desde el punto: 1,1 al punto: 6,6 al punto: ENTER Comando: (setq e (entsel "Designe un objeto: ")) Designe un objeto: 3,3 (<<Nombre de entidad: 60000014> (3.0 3.0 0.0))

ENTDEL Suprime objetos (entidades) o recupera los objetos eliminados anteriormente Sintaxis: (ENTDEL nombre_ent) La entidad especificada mediante nombre_ent se suprime si ya forma parte del dibujo. La funcin entdel recupera la entidad (la devuelve al dibujo) si se ha suprimido anteriormente en esta sesin de edicin. Las entidades suprimidas se purgan del dibujo cuando se sale del mismo. La funcin entdel puede suprimir las entidades grficas y no grficas. Valor retornado: El nombre de entidad suprimida o dada de alta. (setq e1 (entnext)) (entdel e1) (entdel e1) ;Define e1 como el nombre de la primera entidad del dibujo ;Suprime la entidad e1 ;Anula la supresin (recupera) la entidad e1

La funcin ENTDEL slo acta con entidades principales. Los atributos y vrtices de polilneas no pueden eliminarse sin tener en cuenta la entidad original. Puede utilizar la funcin COMMAND para ejecutar los comandos ATREDIT o EDITPOL con el fin de modificar subentidades. En las definiciones de bloque no se pueden borrar entidades. Sin embargo, con ENTMAKE, se puede cambiar la definicin completamente, con excepcin de la entidad que desea suprimir.

55

ENTMAKE Crea una nueva entidad (objeto grfico) en el dibujo. La funcin ENTMAKE puede definir entidades tanto grficas como no grficas. Sintaxis: (ENTMAKE [lista_ent]) El argumento lista_ent debe ser una lista con datos de definicin de entidad en un formato similar al devuelto por la funcin ENTGET. El argumento lista_ent debe contener toda la informacin necesaria para definir la entidad Si se omite dicha informacin, ENTMAKE devuelve nil y no se admite la entidad. Si omite informacin de la definicin optativa (como la capa), ENTMAKE utiliza el valor por defecto. Valor retornado: Si ENTMAKE crea correctamente la nueva entidad, devuelve la lista de informacin de la definicin de la entidad. Si ENTMAKE no puede crear la entidad, devuelve nil. Forma de uso: Un mtodo para crear una entidad consiste en obtener la informacin de definicin de una entidad con la funcin ENTGET, modificarla y transmitir los datos revisados a la funcin ENTMAKE. Antes de crear una entidad ENTMAKE, se debe verificar si los nombres de capa, tipo de lnea y color indicados son correctos. Al indicar un nombre de capa nuevo, ENTMAKE crea la capa de forma automtica. El cdigo siguiente crea un crculo rojo, con centro en el punto (4,4) y radio 1. Los campos optativos de capa y tipo de lnea se han omitido, por lo que se mantienen los valores por defecto. (entmake '((0 . "CIRCLE") (62 . 1) (10 4.0 4.0 0.0) (40 . 1.0) ) ENTMOD Modifica los datos de la definicin de un objeto (entidad) Al actualizar la entidad principal, ENTMOD la modifica y actualiza su imagen en la pantalla. Sintaxis: (ENTMOD <lista_ent>) La funcin ENTMOD se transmite a una lista (lista_ent) en el formato que devuelve ENTGET y actualiza la informacin de base de datos correspondiente al nombre de entidad especificado por el grupo -1 en lista_ent. Valor retornado: El registro de entidad Forma de uso: El mecanismo principal por el que AutoLISP actualiza la base de datos consiste en recuperar las entidades con ENTGET, modificar la lista que las define y actualizarlas en la base de datos con ENTMOD. La funcin ENTMOD puede definir objetos tanto grficos como no grficos. (setq en (entnext)) Asigna en al nombre de la primera entidad del dibujo (setq ed (entget en)) Define ed como los datos de la entidad en (setq ed (subst (cons 8 "0") (assoc 8 ed) ed ) ) Cambia el grupo de capas de ed a la capa 0 (entmod ed) Modifica la capa de la entidad en el dibujo ENTUPD Actualiza la imagen de un objeto (entidad) en pantalla Sintaxis: (ENTUPD <nombre_ent>) Cuando se modifica un vrtice de polilnea o un atributo de bloque con ENTMOD, no se actualiza en la pantalla la entidad compleja completa. La funcin ENTUPD puede utilizarse para actualizar en pantalla una polilnea o bloque modificados. Esta funcin puede llamarse con el nombre de la entidad como parte de la polilnea o bloque; no es necesario que sea una entidad principal. Aunque ENTUPD va destinada al uso con bloques y polilneas con atributos, se puede llamar para cualquier entidad y siempre regenera la entidad en la pantalla, incluidas las subentidades. Si la primera entidad del dibujo fuera una polilnea con varios vrtices, entonces: (setq e1 (entnext)) Define e1 como el nombre de entidad de la polilnea (setq e2 (entnext e1)) Define e2 como el primer vrtice (setq ed (entget e2)) Define ed como los datos del vrtice (setq ed (subst '(10 1.0 2.0) (assoc 10 ed) ed ) ) Cambia la posicin del vrtice en ed al punto (1,2) (entmod ed) Traslada el vrtice en el dibujo (entupd e1) Regenera la entidad e1 de la polilnea.
56

Tipo de objeto y color Radio y Centro

Ejemplo completo

(DEFUN C:TTT () (PRIN1 "SEALAR ENTIDADES PARA EL CONJUNTO DESIGNADO") (SETQ CD1 (SSGET) N1 (SSLENGTH CD1) I1 0 I2 0 I3 0 F1 (OPEN "d:\\docencia\\DATOS" "w") ) (PRINT (STRCAT "CD1=" (ITOA N1) )) (REPEAT N1 (SETQ NENT (READ (STRCAT "ENT" (ITOA I1))) ENT(SSNAME CD1 I1) RENT (ENTGET ENT) I1 (+ 1 I1) ) (PRINT "CD1" F1) (PRINT NENT F1) (PRINT RENT F1) ) (CLOSE F1) ) (DEFUN C:TTT () (PRIN1 "SEALAR ENTIDADES PARA EL CONJUNTO DESIGNADO") (SETQ CD1 (SSGET) CD2 (SSGET "X" '( (8 . "1"))) CD3 (SSGET "X" '((0 . "TEXT"))) N1 (SSLENGTH CD1) N2 (SSLENGTH CD2) N3 (SSLENGTH CD3) I1 0 I2 0 I3 0 F1 (OPEN "D:\\docencia\\DATOS" "w") ) (PRINT (STRCAT "CD1=" (ITOA N1))) (PRINT (STRCAT "CD2=" (ITOA N2))) (PRINT (STRCAT "CD3=" (ITOA N3))) (REPEAT N1 (SETQ NENT (READ (STRCAT "ENT" (ITOA I1))) ENT (SSNAME CD1 I1) RENT (ENTGET ENT) I1 (+ I1 1) ) (PRINT "CD1" F1) (PRINT NENT F1) (PRINT RENT F1) (SETQ CAPA (ASSOC 8 RENT) CAPAN (CONS 8 "1") RENT (SUBST CAPAN CAPA RENT) ) (ENTMOD RENT) )

57

(REPEAT N2 (SETQ NENT (READ (STRCAT "ENT" (ITOA I2))) ENT (SSNAME CD2 I2) RENT (ENTGET ENT) I2 (+ I2 1) ) (PRINT "CD2" F1) (PRINT NENT F1) (PRINT RENT F1) (SETQ CAPA (ASSOC 8 RENT) CAPAN (CONS 8 "2") RENT (SUBST CAPAN CAPA RENT) ) (ENTMOD RENT) ) (REPEAT N3 (SETQ NENT (READ (STRCAT "ENT" (ITOA I3))) ENT (SSNAME CD3 I3) RENT (ENTGET ENT) I3 (+ I3 1) ) (PRINT "CD3" F1) (PRINT NENT F1) (PRINT RENT F1) (SETQ ALTEXTO (ASSOC 40 RENT) NALTEXTO (CONS 40 (* 2 CDR ALTEXTO)) RENT (SUBST NALTEXTO ALTEXTO RENT) ) (ENTMOD RENT) ) (CLOSE F1) )

58

7. CDIGOS Y MENSAJES DE ERROR DE AUTOLISP En este apartado se tratan los mensajes de error que se pueden encontrar mientras se escriben y depuran funciones AutoLISP. La mayora de estos mensajes sealan errores de programacin en AutoLISP, como: Nombre de funcin o smbolo mal escritos Tipo o nmero de argumentos de funcin errneos Incoherencia en parntesis Incoherencia en comillas (cadenas de caracteres no terminadas) Falta de comprobacin de la terminacin correcta de una funcin antes de intentar utilizar su resultado.

Los mensajes que Autolisp presenta por defecto son los siguientes: - Los argumentos de defun no pueden tener el mismo nombre: Una funcin definida con varios argumentos que tengan el mismo nombre fallar y generar este mensaje. - AutoCAD rechaz la funcin: Los argumentos suministrados a una funcin de AutoCAD no son vlidos (como en setvar con una variable de sistema de slo lectura o tblnext con un nombre de tabla no vlido) o la propia funcin no es vlida en el contexto actual. Por ejemplo, no puede utilizar una funcin getxxx de introduccin de datos del usuario dentro de la funcin command. - Desbordamiento de pila de AutoLISP : Se ha superado el espacio de almacenamiento de pila de AutoLISP. El motivo puede ser una repeticin excesiva de funciones o listas de argumentos muy largas. - Tipo de argumento errneo: Se ha pasado un tipo de argumento incorrecto a una funcin. (Por ejemplo, no se puede obtener la strlen de un nmero entero.) - Bad association list: La lista suministrada a la funcin assoc no est formada por listas de valor clave. - Cdigo de conversin errneo: El identificador space suministrado a la funcin trans no es vlido. - Bad ENTMOD list: El argumento suministrado a entmod no es una lista de datos de entidades adecuada (tal y como lo devuelve entget). - Bad ENTMOD list value: Una de las sublistas de la lista de asociacin suministrada a entmod contiene un valor errneo. - Lista de argumento formal inadecuada: Al evaluar esta funcin, AutoLISP ha detectado una lista de argumento formal no vlida. Quizs no se trate de una funcin, sino ms bien de una lista de datos. - Funcin incorrecta: El primer elemento de la lista no es un nombre de funcin vlido; quizs se trate de un nombre de variable o de un nmero. Este mensaje tambin puede indicar que la funcin especificada no est bien definida - Lista incorrecta: Se ha suministrado una lista con errores de forma a una funcin. Esto puede suceder si un nmero real empieza con un separador decimal. Ha de incluir un cero inicial en este caso. - Lista de puntos incorrecta: La solicitud F, CP o WP lleva adjunta una lista nula o con elementos que no son puntos. Se utilizan con ssget y grvecs. - Bad node: La funcin type ha encontrado un tipo de elemento no vlido. - Tipo de nodo errneo en la lista: La funcin foreach ha encontrado un tipo de elemento no vlido.

59

- Argumento de puntos incorrecto valor de punto incorrecto: Se ha pasado un punto mal definido (una lista de dos nmeros reales) a una funcin que esperaba un punto. Un nmero real no puede empezar por un separador decimal; en dicho caso, hay que incluir el cero inicial. - Detectado nmero real incorrecto: Se ha intentado transmitir un nmero real no vlido de AutoLISP a AutoCAD. - Bad ssget list: El argumento suministrado a ssget "X") no es una lista de datos de entidad adecuada (tal y como devuelve entget) - Bad ssget list value: Una de las sublistas de la lista de asociaciones suministrada a (ssget "X") contiene un valor errneo. - Cadena modo ssget incorrecta: Este error se produce cuando ssget recibe una cadena no vlida en el argumento modo. - Lista de xdata incorrecta: Este error se genera cuando xdsize, ssget, entmod, entmake o txtbox recibe una lista de datos de entidad extendida con errores de forma. - Se requiere punto de base: Se ha llamado a la funcin getcorner sin el argumento de punto base obligatorio. - Boole arg1 0 or 15: El primer argumento de la funcin booleana ha de ser un nmero entero entre 0 y 15. - Imposible evaluar la expresin: Separador decimal mal colocado o alguna otra expresin incorrecta. - No es posible abrir (archivo) para entrada; fallo de LOAD: No se ha encontrado el archivo designado en la funcin load, o el usuario no tiene permisos de lectura sobre ese archivo. - Imposible volver a entrar en AutoLISP: Una funcin activa est utilizando el bfer de comunicacin AutoCAD/AutoLISP; no se podr llamar a otra nueva funcin hasta que la actual haya finalizado. - Interrupcin desde el teclado: El usuario ha tecleado CTRL+C durante el proceso de una funcin. - Divide by zero: No se puede dividir por cero. - Desbordamiento en divisin: La divisin por un nmero muy pequeo ha dado como resultado un cociente no vlido. - Exceeded maximum string length. Se ha pasado a una funcin una cadena con ms de 132 caracteres. - Extra right paren: Se ha encontrado uno o ms parntesis cerrados de los necesarios. - File not open: El descriptor de archivo para la operacin de E/S no es el de un archivo abierto. - Lectura de archivo, memoria de cadenas insuficiente: Memoria de cadenas agotada mientras AutoLISP lea un archivo. Consulte el captulo 15, "Gestin de memoria". - File size limit exceeded: Un archivo ha superado el lmite de tamao permitido por el sistema operativo. - Floating-point exception: (Slo sistemas UNIX.) El sistema operativo ha detectado un error aritmtico de coma flotante. - Funcin cancelada: El usuario ha tecleado CTRL+C o ESC (cancelar) en respuesta a una solicitud de datos.

60

- Function undefined for argument: El argumento pasado a log o sqrt sobrepasa los lmites permitidos. - Function undefined for real: Se ha suministrado un nmero real como argumento de una funcin que exige un nmero entero; por ejemplo, (lsh val 1.2). - Illegal type in left: El archivo .lsp no es ASCII puro, sino que se ha guardado con un programa de tratamiento de textos e incluye cdigos de formato. - Improper argument: El argumento para gcd es negativo o cero. - Nmero incorrecto de argumentos. La funcin quote slo espera un argumento concreto, pero se le han proporcionado otros. - Nmero incorrecto de argumentos para una funcin: El nmero de argumentos para la funcin creada por el usuario no coincide con el nmero de argumentos formales especificado en defun. - Solicitud inadecuada de datos sobre lista de comandos: Se ha encontrado una funcin de comando pero no se puede ejecutar porque hay otra funcin activa o porque el intrprete de comandos no est completamente inicializado. Este error puede producirse desde una llamada a la funcin command en acad.lsp, acadr13.lsp o en un archivo .mnl. - Entrada interrumpida: Se ha detectado un error o condicin de fin de archivo prematuro, lo que ha provocado la finalizacin de la introduccin de datos en el archivo. - Insufficient node space: No hay espacio suficiente en la pila de almacenamiento para la accin solicitada. Consulte el captulo 15, "Gestin de memoria". - Insufficient string space. No hay espacio en la pila de almacenamiento para la cadena de texto especificada. Consulte el captulo 15, "Gestin de memoria". - Invalid argument: Tipo de argumento errneo o argumento sobrepasa los lmites permitidos. - Lista de argumentos no vlida: Se ha pasado a una funcin una lista de argumentos que contiene errores. - Invalid character: Una expresin contiene un carcter errneo. - Invalid dotted pair: Los pares punteados son listas que contienen dos elementos separados por la construccin espacio-punto-espacio. Este mensaje de error puede deberse a un nmero real que empieza por el separador decimal, en cuyo caso ha de incluir el cero inicial. - Valor de nmero entero no vlido: Se ha encontrado un nmero menor que el entero ms pequeo o mayor que el nmero entero ms grande. - Desbordamiento LISPSTACK: Se ha superado el espacio de almacenamiento de pila de AutoLISP. El motivo puede ser una repeticin excesiva de funciones o listas de argumentos muy largas. - Malformed list: Se ha terminado prematuramente una lista que se estaba leyendo en un archivo. La causa ms comn es una incoherencia en el emparejamiento de las aperturas y cierres de parntesis o comillas. - Malformed string: Se ha terminado prematuramente una cadena que se estaba leyendo en un archivo. - Misplaced dot: Un nmero real comienza con el separador decimal. Ha de incluir un cero inicial en este caso. - Funcin nula: Se ha intentado evaluar una funcin que tiene una definicin vaca.

61

- Quitar/salir abandonar: Se ha llamado a la funcin quit o exit. - Cadena demasiado larga: La cadena que se ha pasado a setvar es demasiado larga. - Too few arguments: Se han pasado pocos argumentos a una funcin integrada. - Demasiados argumentos: Se han pasado demasiados argumentos a una funcin integrada.

62

8. NDICE DE FUNCIONES
- ............................................................................. 8 ............................................................................. 8 * ............................................................................. 8 / ............................................................................. 8 /= ........................................................................... 24 + ............................................................................. 8 < ........................................................................... 24 <=........................................................................... 25 = ..................................................................... 24, 26 > ........................................................................... 24 >=........................................................................... 25 1- ............................................................................. 9 1+ ............................................................................. 9 ABS ......................................................................... 9 ACAD_STRLSORT ............................................... 44 AND ....................................................................... 25 ANGLE................................................................... 31 ANGTOF ................................................................ 22 ANGTOS................................................................ 22 APPEND ................................................................ 15 APPLY ................................................................... 20 ASCII ..................................................................... 23 ASSOC .................................................................. 17 ATAN ....................................................................... 9 ATOF ..................................................................... 21 ATOI ...................................................................... 21 ATOM .................................................................... 19 CAR ....................................................................... 16 CDR ....................................................................... 16 CHR ....................................................................... 23 CLOSE................................................................... 40 COMMAND ............................................................ 37 COND .................................................................... 27 CONS..................................................................... 15 COS ......................................................................... 9 CVUNIT.................................................................. 23 DEFUN................................................................... 30 DISTANCE............................................................. 31 DISTOF .................................................................. 22 ENTDEL................................................................. 55 ENTGET................................................................. 53 ENTLAST............................................................... 54 ENTMAKE ............................................................. 56 ENTMOD................................................................ 56 ENTNEXT .............................................................. 54 ENTSEL ................................................................. 55 ENTUPD ................................................................ 56 EQ.......................................................................... 26 EQUAL................................................................... 26 EVAL ..................................................................... 46 EXP........................................................................ 10 EXPT...................................................................... 10 FINDFILE ............................................................... 40 FIX ......................................................................... 21 FLOAT ................................................................... 21 FOREACH ............................................................. 19 GCD ....................................................................... 10 GETANGLE ........................................................... 32 GETCORNER ........................................................ 33 GETDIST................................................................ 32 GETFILED ............................................................. 36 GETINT .................................................................. 34 GETKWORD.......................................................... 35 GETORIENT .......................................................... 33 GETPOINT............................................................. 32 GETREAL .............................................................. 34 GETSTRING .......................................................... 34 GETVAR ................................................................ 34 GRAPHSCR........................................................... 45 IF ........................................................................... 27 INITGET ................................................................. 35 INTERS .................................................................. 31 ITOA....................................................................... 21 LAMBDA................................................................ 20 LAST ...................................................................... 17 LENGTH................................................................. 15 LIST........................................................................ 15 LISTP ..................................................................... 18 LOAD ..................................................................... 39 LOG........................................................................ 10 MAPCAR................................................................ 20 MAX ....................................................................... 10 MEMBER ............................................................... 18 MIN......................................................................... 10 MINUSP ................................................................. 10 NTH ........................................................................ 17 NULL...................................................................... 46 NUMBERP ............................................................. 11 OPEN ..................................................................... 39 OR .......................................................................... 25 OSNAP................................................................... 38 POLAR................................................................... 31 PRIN1..................................................................... 41 PRINC .................................................................... 41 PRINT..................................................................... 41 PROGN .................................................................. 27 PROMPT ................................................................ 41 QUIT....................................................................... 46 QUOTE................................................................... 46 READ ............................................................... 13, 23 READ- LINE........................................................... 42 READ-CHAR.......................................................... 42 REDRAW ............................................................... 45 REM ....................................................................... 11 REPEAT................................................................. 28 REVERSE .............................................................. 18 RTOS ..................................................................... 22 SETQ...................................................................... 12 SETVAR................................................................. 12 SIN ........................................................................... 9 SQRT ..................................................................... 11 SSADD................................................................... 52 SSDEL ................................................................... 52 SSGET ................................................................... 50 SSLENGTH............................................................ 51 SSMEMB................................................................ 51 SSNAME ................................................................ 51 STRCASE .............................................................. 13 STRCAT................................................................. 13 STRLEN ................................................................. 13 SUBST ................................................................... 18 SUBSTR................................................................. 13 TERPRI .................................................................. 42 TEXBOX................................................................. 47 TEXTPAGE ............................................................ 45 TEXTSCR............................................................... 45 TRANS ................................................................... 23 TYPE ...................................................................... 12 VL-LIST->STRING ................................................. 14 VL-PRINC-TO-STRING.......................................... 14 VL-SORT................................................................ 44 VL-SORT-I ............................................................. 44 VL-STRING->LIST ................................................. 14 VPORTS................................................................. 45 WHILE.................................................................... 29 WRITE-CHAR ........................................................ 41 WRITE-LINE .......................................................... 42 ZEROP ................................................................... 11

63

9. BIBLIOGRAFA BSICA AUTODESK: Autolisp: Manual de personalizacin. (Varias versiones) OTERO GONZLEZ, Csar: Guiones para las clases de C.A.D. Tercera y Cuarta parte: Lisp avanzado. E.T.S. de Ingenieros de Caminos, Santander. 1992. TOGORES FERNNDEZ, Reinaldo y OTERO GONZLEZ, Csar: Programacin en Autocad con Visual Lisp. Ed. Mc Graw Hill. 2003.

63

También podría gustarte