




























































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Programación Auto Lisp, para acelerar el avance el proceso de tu proyecto en AutoCAD.
Tipo: Guías, Proyectos, Investigaciones
1 / 68
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!





























































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)
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:
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:
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:
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:
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:
Las funciones proporcionadas por el lenguaje se pueden clasificar de la siguiente manera :
Incrementa un número en uno Sintaxis: (1+
(1+ 5) devuelve 6 (1+ -17.5) devuelve -16.
Disminuye en uno un número. Sintaxis: (1-
(1- 5) devuelve 4 (1- -17.5) devuelve -18.
ABS Convierte un número a su valor absoluto Sintaxis: (ABS
(abs 100) devuelve 100 (abs -100) devuelve 100 (abs -99.25) devuelve 99.
ATAN Calcula el arcotangente Sintaxis: (ATAN
(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.
Calcula el coseno de un ángulo expresado en radianes Sintaxis: (COS
(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
(sin 1.0) devuelve 0. (sin 0.0) devuelve 0. (sin (/ pi 6)) devuelve 0.
Calcula el antilogaritmo neperiano de un numero Sintaxis:(EXP
(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
(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
(gcd 81 57) devuelve 3 (gcd 12 20) devuelve 4
LOG Calcula el logaritmo neperiano de un número real Sintaxis: (LOG
(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
(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
(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
(minusp -1) devuelve T (minusp -4.293) devuelve T (minusp 830.2) devuelve nil
Liga el nombre de símbolos al valor de una expresión Sintaxis: (SETQ < Símbolo>
(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)
Cambia el valor de variables del sistema. Sintaxis: (SETVAR <"nombre de la variable">
(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
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
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])
(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">
(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)
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
(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>
(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
(length '(a b c d)) devuelve 4 (length '(a b (c d))) devuelve 3 (length '()) devuelve 0
Extrae el primer elemento de una lista. Sintaxis: (CAR
(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
(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.