Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Programación Autolisp, Guías, Proyectos, Investigaciones de Derecho

Programación Auto Lisp, para acelerar el avance el proceso de tu proyecto en AutoCAD.

Tipo: Guías, Proyectos, Investigaciones

2020/2021

Subido el 20/01/2023

henry-lopez-soto
henry-lopez-soto 🇵🇪

2 documentos

1 / 68

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
PROGRAMACIÓN
AUTOLISP
(PERSONALIZACIÓN
DE AUTOCAD)
MILAGROS CANGA VILLEGAS
JOSÉ ANDRÉS DÍAZ SEVERIANO
Departamento de Ingeniería Geográfica
y Técnicas de Expresión Gráfica
T
a
a/2
a/3
Ta
a/2
a/2
Pa
P
cenp
ceng
cen
a/2 a/3
a/12
a/12
a/12
Sistema de rectas
paralelas
a/3
a/3
Formas
homotéticas
rad
Pa
P
cen
Figura 1: Definición geométrica
Figura 2: Mosaico
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44

Vista previa parcial del texto

¡Descarga Programación Autolisp y más Guías, Proyectos, Investigaciones en PDF de Derecho solo en Docsity!

PROGRAMACIÓN

AUTOLISP

(PERSONALIZACIÓN

DE AUTOCAD)

MILAGROS CANGA VILLEGAS

JOSÉ ANDRÉS DÍAZ SEVERIANO

Departamento de Ingeniería Geográfica

y Técnicas de Expresión Gráfica

T

a

a/

a/

T (^) a

a/

a/

Pa

P

cenp

ceng

cen

a/2 a/ a/

a/

a/

Sistema de rectas paralelas

a/

a/

Formas homotéticas

rad

Pa

P

cen

Figura 1: Definición geométrica

Figura 2: Mosaico

“No basta el recuerdo Cuando aún queda tiempo”

(Luis Cernuda)

“El hoy es malo, pero el mañana ... es mío”

(Antonio Machado)

ii

1. PRESENTACIÓN GENERAL DE AUTOLISP

AutoLISP es una adaptación del lenguaje de programación LISP y forma parte integral del paquete AutoCAD. Autolisp es un pequeño subconjunto del CommonLISP, y por ello se ajusta muy estrechamente a la misma sintaxis y convenciones, pero consta de muchas funciones específicas de AutoCAD.

AutoLISP es la más potente herramienta para optimizar la ejecución de AutoCAD. Le habilita para «automatizar» AutoCAD incluso más allá de lo que puede llevar a cabo usando macros.

Las rutinas AutoLISP tienen aplicaciones como:

  • La creación de nuevas y únicas órdenes AutoCAD.
  • La inserción de funciones especiales para dibujar y para calcular.
  • Análisis detallados de gráficos 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 gráficos. AutoLISP es flexible y fácil de aprender y utilizar para los no-programadores, quienes al aprender AutoLISP sólo necesitan conceptos básicos de programación, 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 condición específica (bucles).
  • Específicamente: Acceder a los datos de la base de datos geométrica

El código de AutoLISP no se compila 1 , se puede teclear el código en la línea de comandos y ver los resultados inmediatamente haciéndose más sencilla la introducción a este lenguaje para los no iniciados. En un segundo nivel de aprendizaje resulta mucho más fácil realizar pruebas y depurar cuando este código se carga desde un archivo, en lugar de volverlo a escribir cada vez que se realiza alguna modificación.

El código de AutoLISP se almacena en archivos de texto ASCII con la extensión *. lsp. La sintaxis de las expresiones de AutoLISP escritas en los archivos es básicamente 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 versión 2000

de AutoCad o superior.

2.3. Listas

Las listas de AutoLISP son grupos de valores relacionados, separados por espacios en blanco (uno o varios se interpretan como uno sólo) e incluidos entre paréntesis.

Las listas proporcionan un método eficaz para almacenar numerosos valores relacionados.

AutoCAD expresa los puntos 3D como una lista de tres números reales.

Ejemplos de listas son: (1.0 1.0 0.0), ("éste" "ése" "aquél") y (1 "UNO").

2.4. Símbolos y variables

AutoLISP utiliza símbolos para almacenar los datos.

En los nombres de símbolos no se distingue entre mayúsculas y minúsculas, pudiendo emplearse cualquier secuencia de caracteres alfanuméricos, siempre que no contenga a alguno de los siguientes:

  • Paréntesis ( ) Reservado para lista y expresiones
  • Punto. Punto decimal
  • Apostrofo ' Abreviatura de la Función QUOTE
  • Comillas " Reservado a las cadenas de caracteres.
  • Punto y coma; Para comenzar una línea de comentarios.

Un nombre de símbolo no puede estar compuesto sólo por caracteres numéricos.

Las aplicaciones de AutoLISP hacen uso de símbolos o valores constantes, como cadenas, números reales o enteros, y variables , empleadas para almacenar datos generados durante las ejecución 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 sólo de una contrabarra (). Esta variable se emplea con la función 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 : símbolo que en Lisp significa “nada” o “vacío”.

Es posible cambiar el valor de estas variables con la función setq. Sin embargo, otras aplicaciones podrían 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 números 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 admiración (!).

2.5. Conjuntos de selección

Los conjuntos de selección son grupos compuestos por uno o varios objetos (entidades).

Las rutinas de AutoLISP permiten añadir o suprimir de forma interactiva objetos de los conjuntos de selección.

2.6. Nombres de entidad

Un nombre de entidad es un identificador numérico 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 selección de objetos para un posterior empleo de maneras varias.

2.7. Descriptores de archivo

Los descriptores de archivo son identificadores alfanuméricos asignados a archivos abiertos por AutoLISP.

Cuando sea necesario que una función de AutoLISP lea o escriba en un archivo, debe hacerse referencia a su identificador.

2.8. Subrutinas

Es un símbolo con el nombre de una función 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. RECOMENDACIONES INICIALES PARA LA CODIFICACIÓN DE UNA RUTINA LISP

  • Conocer la sintaxis y las reglas del lenguaje.
  • Saber de qué funciones dispone el lenguaje.
  • Describir exactamente cuál es el objeto de la rutina LISP. Los programadores se refieren a esta versión de una rutina como pseudocódigo.
  • Recorrer el proceso manualmente desde el teclado, si es posible. Este procedimiento de verificación a priori, ayudará a reconocer rápidamente los problemas en el proceso de desarrollo.
  • Tomar notas de cada paso.
  • Anotar qué cálculos tuvieron lugar y en qué figuras se basaron.
  • Escribir el código lo más ordenado posible, distinguiendo entre:
    • Función principal (que será la que se invoca al utilizar el programa). Suele incluir la definición de un nuevo comando Autocad.
    • Funciones intermedias , según la estructura que el programar decida.
  • Utilizar nombres de funciones y variables fácilmente identificables, limitando el empleo de estas últimas a aquellas que sean estrictamente necesarias.
  • Escribir líneas de comentarios.
  • Utilizar funciones creadas en otros programas. Hacer Bibliotecas de funciones de usuario.
  • Sangrar el texto del código para facilitar la interpretación posterior.

5. FUNCIONES AUTOLISP

Las funciones proporcionadas por el lenguaje se pueden clasificar de la siguiente manera :

    1. PRESENTACIÓN GENERAL DE AUTOLISP INDICE:
    1. ELEMENTOS DEL LENGUAJE Y TIPOS DE DATOS
    • 2.1. Números
    • 2.2. Cadenas
    • 2.3. Listas
    • 2.4. Símbolos y variables
    • 2.5. Conjuntos de selección
    • 2.6. Nombres de entidad
    • 2.7. Descriptores de archivo
    • 2.8. Subrutinas
    1. EXPRESIONES DE AUTOLISP
    1. RECOMENDACIONES INICIALES PARA LA CODIFICACIÓN DE UNA RUTINA LISP
    1. FUNCIONES AUTOLISP
    • 5.1. FUNCIONES ARITMÉTICAS
    • 5.2. FUNCIONES DE ASIGNACIÓN
    • 5.3. FUNCIONES PARA MANEJAR CADENAS DE TEXTO
    • 5.4. FUNCIONES PARA GESTIÓN DE LISTAS
      • 5.4.1. CREACIÓN DE LISTAS
      • 5.4.2. EXTRACCIÓN DE ELEMENTOS DE UNA LISTA
      • 5.4.3. MANIPULACIÓN DE LISTAS
    • 5.5. FUNCIONES MONOLÍNEA
    • 5.6. FUNCIONES DE CONVERSIÓN Y TRANSFORMACIÓN
    • 5.7. FUNCIONES DE RELACIÓN
    • 5.8. FUNCIONES DE CONDICIÓN
    • 5.9. FUNCIONES PARA GESTIÓN DE CICLOS
    • 5.10. FUNCIÓN PARA CREAR FUNCIONES DE USUARIO
    • 5.11. FUNCIONES GRÁFICAS
    • 5.12. FUNCIONES DE ENTRADA INTERACTIVA
    • 5.13. FUNCIONES PARA GESTIÓN DE FICHEROS
    • 5.14. FUNCIONES DE LECTURA Y ESCRITURA
      • 5.14.1. ESCRITURA
      • 5.14.2. LECTURA
    • 5.15. FUNCIONES DE ORDENACIÓN
    • 5.16. FUNCIONES DE CONTROL DE PANTALLA
    • 5.17. OTRAS FUNCIONES DE UTILIDAD
    1. FUNCIONES AVANZADAS DE PROGRAMACIÓN AUTOLISP
    • 6.1. OBJETIVOS Y ENTORNO DE LA PROGRAMACIÓN AutoLISP
    • 6.2. CONCEPTOS BÁSICOS
    • 6.3. FORMA DE TRABAJO Y FUNCIONES UTILIZADAS
    • 6.4. DESCRIPCIÓN DE LAS FUNCIONES
    1. CÓDIGOS Y MENSAJES DE ERROR DE AUTOLISP
    1. ÍNDICE DE FUNCIONES
    1. BIBLIOGRAFÍA BÁSICA
  • FUNCIONES ARITMÉTICAS, FUNCIONES BÁSICAS
  • FUNCIONES DE ASIGNACIÓN,
  • FUNCIONES PARA MANEJAR CADENAS DE TEXTO,
  • FUNCIONES PARA GESTIÓN DE LISTAS,
  • FUNCIONES MONOLÍNEA,
  • FUNCIONES DE CONVERSIÓN Y TRANSFORMACIÓN,
  • FUNCIONES DE RELACIÓN,
  • FUNCIONES DE CONDICIÓN,
  • FUNCIONES PARA GESTIÓN DE CICLOS,
  • FUNCIÓN PARA CREAR FUNCIONES DE USUARIO,
  • FUNCIONES GRÁFICAS,
  • FUNCIONES DE ENTRADA INTERACTIVA,
  • FUNCIONES PARA GESTIÓN DE FICHEROS,
  • FUNCIONES DE LECTURA Y ESCRITURA,
  • FUNCIONES DE ORDENACIÓN,
  • FUNCIONES DE CONTROL DE PANTALLA,
  • OTRAS FUNCIONES DE UTILIDAD,

Incrementa un número en uno Sintaxis: (1+ ) Valor retornado = 1+n (entero o real según n sea entero o real.)

(1+ 5) devuelve 6 (1+ -17.5) devuelve -16.

Disminuye en uno un número. Sintaxis: (1- ) Valor retornado = n-1 (entero o real según n sea entero o real.)

(1- 5) devuelve 4 (1- -17.5) devuelve -18.

ABS Convierte un número a su valor absoluto Sintaxis: (ABS ) Valor retornado = el valor absoluto de n.

(abs 100) devuelve 100 (abs -100) devuelve 100 (abs -99.25) devuelve 99.

ATAN Calcula el arcotangente Sintaxis: (ATAN [n2]), donde los argumentos n1 y n2 se convierten en números 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) devuelve 0. (atan 1.0) devuelve 0. (atan -1.0) devuelve -0. (atan 2.0 3.0) devuelve 0. (atan 2.0 -3.0) devuelve 2. (atan 1.0 0.0) devuelve 1. (atan 1 2) devuelve 0. (atan (/ 1 2)) devuelve 0.

COS

Calcula el coseno de un ángulo expresado en radianes Sintaxis: (COS ) Valor retornado = El coseno de ang

(cos 0.0) devuelve 1. (cos pi) devuelve -1. (cos (/ pi 3)) devuelve 0.

SIN Calcula el seno de un ángulo expresado en radianes Sintaxis: (SIN ) Valor retornado = El seno de ang

(sin 1.0) devuelve 0. (sin 0.0) devuelve 0. (sin (/ pi 6)) devuelve 0.

EXP

Calcula el antilogaritmo neperiano de un numero Sintaxis:(EXP ) Valor retornado: número real igual a e n

(exp 1.0) devuelve 2. (exp 2.2) devuelve 9. (exp -0.4) devuelve 0.

EXPT Calcula el resultado de elevar un número a una potencia Sintaxis:(EXPT ) Valor retornado: número real o entero

(expt 2 4) devuelve 16 (expt 3.0 2.0) devuelve 9.

GCD Calcula el máximo común denominador de dos enteros Sintaxis: (GCD ) Valor retornado = El valor del máximo común denominador.

(gcd 81 57) devuelve 3 (gcd 12 20) devuelve 4

LOG Calcula el logaritmo neperiano de un número real Sintaxis: (LOG ) Valor retornado = Un número real.

(log 4.5) devuelve 1. (log 1.22) devuelve 0. (log 2.718281) devuelve 1.

MAX Extrae el mayor valor de una serie de números Sintaxis: (MAX ……..) Valor retornado = El mayor valor encontrado.

(max 4.07 -144) devuelve 4. (max -88 19 5 2) devuelve 19 (max 2.1 4 8) devuelve 8.

MIN Extrae el menor valor de una serie de números Sintaxis: (MIN ……..) Valor retornado = El menor valor encontrado.

(min 683 -10.0) devuelve -10. (min 73 2 48 5) devuelve 2 (min 2 4 6.7) devuelve 2.

MINUSP

Comprueba si un número es menor que 0 Sintaxis: (MINUSP ) Valor retornado = T si el argumento n es un número y es negativo y nil en caso contrario.

(minusp -1) devuelve T (minusp -4.293) devuelve T (minusp 830.2) devuelve nil

5.2. FUNCIONES DE ASIGNACIÓN

SETQ

Liga el nombre de símbolos al valor de una expresión Sintaxis: (SETQ < Símbolo> < Símbolo> ....... .) Valor retornado: El devuelto por el último argumento de la función.

(setq a 5.0) devuelve 5.0 y define el símbolo (variable) a como 5.0. (setq b 123 c 4.7) devuelve 4.7 y define los símbolos (variables): b como 123 y c como 4. (setq s "el") devuelve "el" (setq x '(a b)) devuelve (A B)

SETVAR

Cambia el valor de variables del sistema. Sintaxis: (SETVAR <"nombre de la variable"> ) La variable del sistema no podrá ser sólo 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) Devuelve 0 y desactiva las marcas auxiliares. (setvar "pdmode" 34) Devuelve 34 y establece un tipo de punto (setvar "pellipse" 3) Error: AutoCAD rechazó la función

TYPE

Extrae el tipo de dato de un argumento. Sintaxis: (TYPE ) Valor retornado: El tipo de dato como una cadena en mayúsculas

REAL: numero entero FILE: descriptor de fichero STR: cadenas INT: numero entero. SYM: símbolos LIST: listas y funciones de usuario SUBR: funciones internas PICKSET Conjuntos de selección ENAME Nombres de entidades ..........

Los elementos que dan como resultado nil (como un símbolo no asignado) devuelven nil.

(setq a 123 r 3.45 s "Hola!" x '(a b c)) (setq f (open "nombre" "r"))

entonces:

(type 'a) devuelve SYM (type a) devuelve INT (type f) devuelve FILE (type r) devuelve REAL (type s) devuelve STR (type x) devuelve LIST (type +) devuelve SUBR (type nil) devuelve nil

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 minúsculas o mayúsculas Sintaxis: (STRCASE <"cadena"> [modo])

  • conversión a minúsculas: modo /= nil
  • conversión a mayúsculas : modo = nil o no se presenta. Valor retornado: La cadena convertida.

(strcase "Ejemplo") devuelve "EJEMPLO" (strcase "Ejemplo" T) devuelve "ejemplo"

STRCAT

Empalma (concatena ) dos o más cadenas Sintaxis: (STRCAT <"cadena1"> ["cadena2"]...........) Valor retornado: Una sola cadena empalmada.

(strcat "a" "cerca") devuelve "acerca" (strcat "a" "b" "c") devuelve "abc" (strcat "a" "" "c") devuelve "ac"

STRLEN

Cuenta los caracteres de una cadena Sintaxis: (STRLEN <"cadena">........) Valor retornado: Un número entero.

Si se especifican varios argumentos cadena, la función devuelve la suma de las longitudes de todos los argumentos. Si éstos se omiten o se escribe una cadena vacía, el resultado es 0 (cero).

(strlen "abcd") devuelve 4 (strlen "ab") devuelve 2 (strlen "uno" "dos" "tres") devuelve 10 (strlen) devuelve 0 (strlen "") devuelve 0

SUBSTR

Extrae una porción de una cadena de caracteres. Sintaxis: (SUBSTR <"cadena"> [ long ]) inicio : número entero que indica la posición del primer carácter a extraer. long: longitud de la subcadena a extraer ( si no se da proporciona la subcadena desde la posición inicial hasta el final) Valor retornado: La subcadena extraída.

(substr "abcde" 2) devuelve "bcde" (substr "abcde" 2 1) devuelve "b" (substr "abcde" 3 2) devuelve "cd" (substr "abcde" 3 7) devuelve "cde" (substr "hola" 5) devuelve "" (cadena vacía)

5.4. FUNCIONES PARA GESTIÓN DE LISTAS

5.4.1. CREACIÓN DE LISTAS

LIST

Crea una lista a partir de un número de expresiones Sintaxis: ( LIST <expresión>...........) Valor retornado: Una lista de los argumentos de la función.

(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 explícita con la función QUOTE si la lista no contiene variables ni opciones sin definir. El carácter de comilla ( ' ) se define como la función QUOTE.

APPEND

Funde varias listas en una Sintaxis: (APPEND ...........) Valor retornado: Una lista única.

(setq L5 (append '(a b) '(c d))) devuelve (A B C D) (setq L6 (append '((a)(b)) '((c)(d)))) devuelve ((A)(B)(C)(D)) (setq L7 (append L3 L4_1)) devuelve (3.9 6.7 10 20 30) (setq L8 (append L4_2 L4_1) devuelve ((10) (20) (30) 10 20 30) (setq L9 (append La Lb Lc) devuelve (10 20 30)

CONS

Añade al principio de una lista como primer elemento una expresión Sintaxis: (CONS <expresión> ) Valor retornado: La nueva lista.

(cons 'a '(b c d)) devuelve (A B C D) (cons '(a) '(b c d)) devuelve ((A) B C D)

La función CONS también 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) devuelve (A. 2)

LENGTH

Cuenta los elementos de una lista Sintaxis: (LENGTH ) Valor retornado: El número entero correspondiente.

(length '(a b c d)) devuelve 4 (length '(a b (c d))) devuelve 3 (length '()) devuelve 0

5.4.2. EXTRACCIÓN DE ELEMENTOS DE UNA LISTA

CAR

Extrae el primer elemento de una lista. Sintaxis: (CAR ) Valor retornado: El primer elemento de la lista. Si lista está vacía, CAR devuelve nil.

(car '(a b c)) devuelve A (car '((a b) c)) devuelve (A B) (car '()) devuelve nil (car (cons 'a 2) devuelve a

CDR

Extrae una nueva lista donde están todos los elemento de la lista menos el primero. Sintaxis: (CDR ) Valor retornado: la nueva lista. Si lista está vacía, CDR devuelve nil.

(cdr '(a b c)) devuelve (B C) (cdr '((a b) c)) devuelve (C) (cdr '()) devuelve nil

Para obtener el segundo átomo de un par punteado , se puede utilizar la función CDR.

(cdr '(a. b)) devuelve B (cdr '(1. "Texto")) devuelve "Texto"

FUNCIONES ANIDADES DE CAR Y CDR

AutoLISP permite concatenar las funciones CAR y CDR hasta en cuatro niveles. Las siguientes son funciones válidas.

CAAAAR CADAAR CDAAAR CDDAAR CAAADR CADADR CDAADR CDDADR CAAAR CADAR CDAAR CDDAR CAADAR CADDAR CDADAR CDDDAR CAADDR CADDDR CDADDR CDDDDR CAADR CADDR CDADR CDDDR CAAR CADR CDAR CDDR

Cada a representa una llamada a CAR y cada d representa una llamada a CDR. Por ejemplo:

(caar x) es equivalente a (car (car x)) (caar L4_2) devuelve 10 (cdar x) es equivalente a (cdr (car x)) (cadar x) es equivalente a (car (cdr (car x))) (cadr x) es equivalente a (car (cdr x)) (cadr L4_2) devuelve (20) (cddr x) es equivalente a (cdr (cdr x)) (caddr x) es equivalente a (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 números 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)) un punto 2D (setq pt3 '(5.25 1.0 3.0)) un punto 3D (car pt2) devuelve 5. (cadr pt2) devuelve 1. (caddr pt2) devuelve nil (car pt3) devuelve 5. (cadr pt3) devuelve 1.