Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programacion AutoLisp Avanzada
Programacion AutoLisp Avanzada
P
a
PROGRAMACIN Pa
AUTOLISP a/2
T a
a/2 a/3
cenp
cen
a/12
DE AUTOCAD) ceng
a/12
a/3
Sistema de rectas
a/12 paralelas
Figura 2: Mosaico
P
Pa
Formas
homotticas
cen
a/3
a/3
rad
(Luis Cernuda)
(Antonio Machado)
i
INDICE:
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.
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:
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.
1
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.
Para poder utilizar plenamente AutoLISP, es necesario entender las diferencias entre los distintos tipos
de datos y el modo en que deben utilizarse.
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
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 entre comillas que se utilizan de forma explcita en expresiones de AutoLISP se conocen
como cadenas de texto o constantes de cadena.
2
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").
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 (!).
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.
3
2.6. Nombres de entidad
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.
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.
4
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.
(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.
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.
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
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.
5
4. RECOMENDACIONES INICIALES PARA LA CODIFICACIN DE UNA RUTINA LISP
6
5. FUNCIONES AUTOLISP
FUNCIONES BSICAS
FUNCIONES AVANZADAS
7
5.1. FUNCIONES ARITMTICAS
+
Suma nmeros
Sintaxis: (+ <n1> <n2> . . . )
Valor retornado: Suma de todos los argumentos numricos. Ningn argumento devuelve Nil
(+ 1 2) devuelve 3
(+ 1 2 3 4.5) devuelve 10.5
(+ 1 2 3 4.0) devuelve 10.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) devuelve 10
(- 50 40.0) devuelve 10.0
(- 50 40.0 2.5) devuelve 7.5
(- 8) devuelve -8
*
Multiplica nmeros
Sintaxis: (* <n1> <n2> . . . )
Valor retornado: Producto de todos los argumentos numricos. Ningn argumento devuelve Nil
(* 2 3) devuelve 6
(* 2 3.0) devuelve 6.0
(* 2 3 4.0) devuelve 24.0
(* 3 -4.5) devuelve -13.5
(* 3) devuelve 3
/
Divide nmeros
Sintaxis: (/ <n1> <n2> . . . )
Valor retornado: El cociente del primer argumento dividido por el producto de los dems
argumentos.
(/ 100 2) devuelve 50
(/ 100 2.0) devuelve 50.0
(/ 100 20 2) devuelve 2
(/ 100 20 2.0) devuelve 2.5
(/ 4) devuelve 4
(/ 1 2) devuelve 0
(/ 4 (/ 1 2)) devuelve ERROR
(/ 4 (/ 1.0 2)) devuelve 8.0
Devuelve el operador NOT binario (complemento de -1) del argumento
Sintaxis: ( <entero>)
Valor retornado = -1 - <entero>.
(~ 3) devuelve -4
(~ 100) devuelve -101
(~ -4) devuelve 3
8
1+
Incrementa un nmero en uno
Sintaxis: (1+ <n> )
Valor retornado = 1+n (entero o real segn n sea entero o real.)
(1+ 5) devuelve 6
(1+ -17.5) devuelve -16.5
1-
Disminuye en uno un nmero.
Sintaxis: (1- <n> )
Valor retornado = n-1 (entero o real segn n sea entero o real.)
(1- 5) devuelve 4
(1- -17.5) devuelve -18.5
ABS
Convierte un nmero a su valor absoluto
Sintaxis: (ABS <n> )
Valor retornado = el valor absoluto de n.
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.
COS
Calcula el coseno de un ngulo expresado en radianes
Sintaxis: (COS <ang> )
Valor retornado = El coseno de ang
SIN
Calcula el seno de un ngulo expresado en radianes
Sintaxis: (SIN <ang> )
Valor retornado = El seno de ang
9
EXP
Calcula el antilogaritmo neperiano de un numero
Sintaxis:(EXP <n> )
Valor retornado: nmero real igual a en
EXPT
Calcula el resultado de elevar un nmero a una potencia
Sintaxis:(EXPT <base> <potencia>)
Valor retornado: nmero real o entero
(expt 2 4) devuelve 16
(expt 3.0 2.0) devuelve 9.0
GCD
Calcula el mximo comn denominador de dos enteros
Sintaxis: (GCD <n1> <n2>)
Valor retornado = El valor del mximo comn denominador.
LOG
Calcula el logaritmo neperiano de un nmero real
Sintaxis: (LOG <n> )
Valor retornado = Un nmero real.
MAX
Extrae el mayor valor de una serie de nmeros
Sintaxis: (MAX <n1> <n2> <n3>..)
Valor retornado = El mayor valor encontrado.
MIN
Extrae el menor valor de una serie de nmeros
Sintaxis: (MIN <n1> <n2> <n3>..)
Valor retornado = El menor valor encontrado.
MINUSP
10
REM
Calcula el resto de la divisin entre dos nmeros
Sintaxis: (REM <n1> <n2>)
Valor retornado: El resto de dividir n1 entre n2.
SQRT
Calcula la raz cuadrada de un nmero
Sintaxis: (SQRT <n> )
Valor retornado = Un nmero real, raz cuadrada de n
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) devuelve T
(zerop 0.0) devuelve T
(zerop 0.0001) devuelve nil.
NUMBERP
11
5.2. FUNCIONES DE ASIGNACIN
SETQ
SETVAR
TYPE
Los elementos que dan como resultado nil (como un smbolo no asignado) devuelven nil.
entonces:
12
5.3. FUNCIONES PARA MANEJAR CADENAS DE TEXTO
READ
STRCASE
STRCAT
STRLEN
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).
SUBSTR
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-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- 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.
14
5.4. FUNCIONES PARA GESTIN DE LISTAS
LIST
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
CONS
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.
LENGTH
15
5.4.2. EXTRACCIN DE ELEMENTOS DE UNA LISTA
CAR
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.
Para obtener el segundo tomo de un par punteado, se puede utilizar la funcin CDR.
AutoLISP permite concatenar las funciones CAR y CDR hasta en cuatro niveles. Las siguientes son
funciones vlidas.
Cada a representa una llamada a CAR y cada d representa una llamada a CDR. Por ejemplo:
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:
16
(caddr pt3) devuelve 3.0
(car (cons 'a 2)) devuelve A
(cdr (cons 'a 2)) devuelve 2
LAST
NTH
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.
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 .
REVERSE
Invierte un lista
Sintaxis: (REVERSE <lista>)
Valor retornado: La lista con sus miembros en orden inverso.
LISTP
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.
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))) devuelve ((a 10) (b 20)(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.
equivale a dibujar una marca de punto en los puntos pt1 pt2 y pt3.
ATOM
(setq a (x y z)
b 23)
(atom a) devuelve nil
(atom b) devuelve T
19
5.5. FUNCIONES MONOLNEA
APPLY
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.
(setq A 10 B 20 C 30)
(mapcar '1+ (LIST A B C) devuelve la lista (11 21 31)
Ejemplo anterior:
(setq L '( 1 2 3 4 5 6))
(mapcar '1+ L) 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.
20
5.6. FUNCIONES DE CONVERSIN Y TRANSFORMACIN
FIX
(fix 3) devuelve 3
(fix 3.7) devuelve 3
FLOAT
ATOI
Ejemplo de cdigo que introduce puntos en una lista solicitando el punto por su posicin en la lista.
ATOF
ITOA
21
RTOS
Ejemplos: (RTOS 5.6 1 4) => 5.6000 E+00" (RTOS 5.6 2 4) => 5.6000"
(RTOS 5.6 5 4) => 5 5/8"
DISTOF
ANGTOS
ANGTOF
22
ASCII
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.
READ
TRANS
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.
23
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) devuelve T
(= 20 388) devuelve nil
(= 2.4 2.4 2.4) devuelve T
(= 499 499 500) devuelve nil
(= "yo" "yo") devuelve T
(= "yo" "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
<
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.
>
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
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.
>=
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.
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 en caso
contrario.
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.
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.
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.
entonces:
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.
entonces:
=
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) devuelve T
(= 20 388) devuelve nil
(= 2.4 2.4 2.4) devuelve T
(= 499 499 500) devuelve nil
(= "yo" "yo") devuelve T
(= "yo" "t") devuelve nil
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.
(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) la variable b se evala como un par punteado
a = 25 => b = (a 25) la variable b se evala como una lista
a = 20 => b = "b=20" 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 "y") 1)
((= s "N") 0) ((= 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.
PROGN
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))
)
)
27
5.9. FUNCIONES PARA GESTIN DE CICLOS
REPEAT
(setq a 10 b 100)
(repeat 4
(setq a (+ a 10))
(setq b (+ b 100))
(setq L '( 1 2 3 4 5 6)
n (length L) i 0 Ln nil
)
(repeat n
(setq elem (nth i L)
elem (1+ elem)
Ln (cons elem ln)
i (1+ i)
)
)
(setq L (reverse Ln)) 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)
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))
) Define a como 90.
(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
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.
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.
(SUMA_10 5) devuelve 15
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
DISTANCE
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.
POLAR
INTERS
31
5.12. FUNCIONES DE ENTRADA INTERACTIVA
GETPOINT
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.
GETANGLE
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.
GETORIENT
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
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.
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.
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"
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:
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.
35
GETFILED
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).
36
COMMAND
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.
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.
Las funciones indicadas por el usuario getxxx (getangle, getstring, getint, getpoint, etc.) no se
pueden utilizar dentro de la funcin command.
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.
37
OSNAP
El funcionamiento de esta orden depende del valor de la variable del sistema APERTURE y del
punto de vista 3D actual.
38
5.13. FUNCIONES PARA GESTIN DE FICHEROS
LOAD
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.
Cuando un programa define varias funciones deben estar todas codificadas en un nico fichero que
se cargar con la funcin LOAD.
OPEN
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.
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.
CLOSE
Por ejemplo, el siguiente cdigo calcula el nmero de lneas del archivo unarchivo.txt y define la
variable ct en ese nmero.
FINDFILE
El nombre completo que devuelve FINDFILE puede utilizarse con la funcin OPEN.
Si ninguno de los directorios del camino de bsqueda de la biblioteca contiene el archivo no esta.
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.
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.
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
WRITE-CHAR
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.
TERPRI
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, read-
char 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 )
(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
(setq mes '("ene" "feb" "mar" "abr" "may" "jun" "jul" "ago" "sep" "oct" "nov" "dic"))
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-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.
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.
Los ndices se pueden emplear para recuperar mediante la funcin NTH los valores originales.
44
5.16. FUNCIONES DE CONTROL DE PANTALLA
REDRAW
GRAPHSCR
TEXTSCR
TEXTPAGE
VPORTS
45
5.17. OTRAS FUNCIONES DE UTILIDAD
EVAL
Evala expresiones
Sintaxis:(EVAL <expresin>)
Valor retornado: El valor retornado por la expresin evaluada
(setq a 123)
(setq b 'a)
entonces:
QUOTE
(quote a) devuelve A
(quote cat) devuelve CAT
(quote (a b)) devuelve (A B)
'a devuelve A
'cat devuelve CAT
'(a b) devuelve (A B)
Los tres ltimos ejemplos no tienen efecto si se introducen directamente desde el teclado como
respuesta a un mensaje de AutoCAD.
NULL
QUIT
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
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.
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)
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.
0
LINE
5 Registro de la entidad lnea utilizado por Autolisp
20
100 ((-1 . <Nombre de objeto: 3c50500>) (0 . "LINE") (5 . "20")
AcDbEntity (100 . "AcDbEntity") (67 . 0) (8 . "0") (100 . "AcDbLine")
8
0 (10 112.187 131.211 0.0) (11 233.336 229.388 0.0) (210 0.0 0.0 1.0))
100
AcDbLine
10
112.186506
20
131.211019
30
0.0
11
233.335573
21
229.387734
31
0.0
48
6.3. FORMA DE TRABAJO Y FUNCIONES UTILIZADAS
(SETQ)
Creacin interactiva: SSGET
Creacin automtica: SSGET "X" filtros
Modos de designacin de Autocad
(SETQ)
SSLENGTH
SSNAME
SSMEMB
SSADD
SSDEL
(SETQ)
ENGET
(SETQ)
ENTLAST
ENTNEXT
ENTSEL
ENTDEL
ASSOC
CONS
SUBST
rdenes relacionadas con la manipulacin de listas
ENTMAKE
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).
(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.
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
SSNAME
SSMEMB
Por ejemplo, si la entidad e1 pertenece al conjunto de seleccin cs1 pero e2 no, entonces
51
SSADD
SSDEL
Por ejemplo, si la entidad e1 pertenece al conjunto de seleccin cs1 pero e2 no, entonces
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))
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 VALOR
-1 Nombre de entidad
0 Tipo de entidad
1 Valor del texto (la propia cadena)
2 Nombre: bloques, etc
3,4 Otros valores de nombre o de texto
6 Nombre de tipo de lnea
7 Nombre de estilo de texto
8 Nombre de capa
PUNTO PRIMARIO: Punto inicial (lnea), punto de colocacin(texto), centro (crculo),
10
punto de insercin de un bloque
11 Punto final
38 Elevacin
39 Altura de objeto
40 a 48 radios de circulo, Altura de texto, factores de escala. .....
50 a 58 ngulos
62 Nmero de color
210 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.
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)) Asigna e1 al nombre de la primera entidad del dibujo
(setq e2 (entnext e1)) Define e2 como el nombre de la entidad que sigue a e1
(defun lastent (/ a b)
(if (setq a (entlast)) Obtiene la ltima entidad principal
(while (setq b (entnext a))
si contiene subentidades, crea un bucle hasta la ltima
subentidad
(setq a b) ) a: devuelve la ltima entidad o subentidad principal
)
)
ENTSEL
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
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) Tipo de objeto y color
(10 4.0 4.0 0.0) (40 . 1.0) ) Radio y Centro
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
56
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
57
(REPEAT N2
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:
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.
- 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.
- 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.
- 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.
- 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.
- File not open: El descriptor de archivo para la operacin de E/S no es el de un archivo abierto.
- 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.
- 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.
- 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 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.
- 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.
- 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.
- Too few arguments: Se han pasado pocos argumentos a una funcin integrada.
62
8. NDICE DE FUNCIONES
- ............................................................................. 8 IF ........................................................................... 27
............................................................................. 8 INITGET ................................................................. 35
* ............................................................................. 8 INTERS .................................................................. 31
/ ............................................................................. 8 ITOA....................................................................... 21
/= ........................................................................... 24 LAMBDA................................................................ 20
+ ............................................................................. 8 LAST ...................................................................... 17
< ........................................................................... 24 LENGTH................................................................. 15
<=........................................................................... 25 LIST........................................................................ 15
= ..................................................................... 24, 26 LISTP ..................................................................... 18
> ........................................................................... 24 LOAD ..................................................................... 39
>=........................................................................... 25 LOG........................................................................ 10
1- ............................................................................. 9 MAPCAR................................................................ 20
1+ ............................................................................. 9 MAX ....................................................................... 10
ABS ......................................................................... 9 MEMBER ............................................................... 18
ACAD_STRLSORT ............................................... 44 MIN......................................................................... 10
AND ....................................................................... 25 MINUSP ................................................................. 10
ANGLE................................................................... 31 NTH ........................................................................ 17
ANGTOF ................................................................ 22 NULL...................................................................... 46
ANGTOS................................................................ 22 NUMBERP ............................................................. 11
APPEND ................................................................ 15 OPEN ..................................................................... 39
APPLY ................................................................... 20 OR .......................................................................... 25
ASCII ..................................................................... 23 OSNAP................................................................... 38
ASSOC .................................................................. 17 POLAR................................................................... 31
ATAN ....................................................................... 9 PRIN1..................................................................... 41
ATOF ..................................................................... 21 PRINC .................................................................... 41
ATOI ...................................................................... 21 PRINT..................................................................... 41
ATOM .................................................................... 19 PROGN .................................................................. 27
CAR ....................................................................... 16 PROMPT ................................................................ 41
CDR ....................................................................... 16 QUIT....................................................................... 46
CHR ....................................................................... 23 QUOTE................................................................... 46
CLOSE................................................................... 40 READ ............................................................... 13, 23
COMMAND ............................................................ 37 READ- LINE........................................................... 42
COND .................................................................... 27 READ-CHAR.......................................................... 42
CONS..................................................................... 15 REDRAW ............................................................... 45
COS ......................................................................... 9 REM ....................................................................... 11
CVUNIT.................................................................. 23 REPEAT................................................................. 28
DEFUN................................................................... 30 REVERSE .............................................................. 18
DISTANCE............................................................. 31 RTOS ..................................................................... 22
DISTOF .................................................................. 22 SETQ...................................................................... 12
ENTDEL................................................................. 55 SETVAR................................................................. 12
ENTGET................................................................. 53 SIN ........................................................................... 9
ENTLAST............................................................... 54 SQRT ..................................................................... 11
ENTMAKE ............................................................. 56 SSADD................................................................... 52
ENTMOD................................................................ 56 SSDEL ................................................................... 52
ENTNEXT .............................................................. 54 SSGET ................................................................... 50
ENTSEL ................................................................. 55 SSLENGTH............................................................ 51
ENTUPD ................................................................ 56 SSMEMB................................................................ 51
EQ.......................................................................... 26 SSNAME ................................................................ 51
EQUAL................................................................... 26 STRCASE .............................................................. 13
EVAL ..................................................................... 46 STRCAT................................................................. 13
EXP........................................................................ 10 STRLEN ................................................................. 13
EXPT...................................................................... 10 SUBST ................................................................... 18
FINDFILE ............................................................... 40 SUBSTR................................................................. 13
FIX ......................................................................... 21 TERPRI .................................................................. 42
FLOAT ................................................................... 21 TEXBOX................................................................. 47
FOREACH ............................................................. 19 TEXTPAGE ............................................................ 45
GCD ....................................................................... 10 TEXTSCR............................................................... 45
GETANGLE ........................................................... 32 TRANS ................................................................... 23
GETCORNER ........................................................ 33 TYPE ...................................................................... 12
GETDIST................................................................ 32 VL-LIST->STRING ................................................. 14
GETFILED ............................................................. 36 VL-PRINC-TO-STRING.......................................... 14
GETINT .................................................................. 34 VL-SORT................................................................ 44
GETKWORD.......................................................... 35 VL-SORT-I ............................................................. 44
GETORIENT .......................................................... 33 VL-STRING->LIST ................................................. 14
GETPOINT............................................................. 32 VPORTS................................................................. 45
GETREAL .............................................................. 34 WHILE.................................................................... 29
GETSTRING .......................................................... 34 WRITE-CHAR ........................................................ 41
GETVAR ................................................................ 34 WRITE-LINE .......................................................... 42
GRAPHSCR........................................................... 45 ZEROP ................................................................... 11
63
9. BIBLIOGRAFA BSICA
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