Sei sulla pagina 1di 6

CONCEPTOS BSICOS DE AUTO LISP

Andres Medina
Universidad Nacional de Colombia - Fac. Ing.
Dept. Ing. Mecnica y Mecatrnica. Bogot, Colombia.
amedinae@unal.edu.co

Abstract Este documento busca explicar y exponer los Auto LISP o simplemente es el lenguaje de programacin
conceptos bsicos de AUTO LISP; como operadores bsicos, bsico de AutoCAD. Es un lenguaje de programacin muy
condicionales, listas y funciones. De forma que para cualquier sencillo y poderoso, que permite la manipulacin de listas
persona interesada en el tema le sirva de introduccin y pueda (bases de datos) mezclndolas con clculos complicados y
empezar a aprender a usar AUTO LISP en sus actividades. entorno grfico de entidades. Por medio de LISP, es posible
simplificar tediosas tareas repetitivas que incluyan pequeas
Palabras clave --- AUTO LISP; Lenguaje de programacin; variables, lo que permite agilizar el proceso de dibujo.
instrucciones; listas; AutoCAD; Operadores; Condicionales;
Funciones; Es el segundo lenguaje ms antiguo de programacin de alto
nivel an en uso generalizado., fue desarrollado alrededor de
1958 por John McCarthy., siendo solamente sobrepasado por
el FORTRAN.
I. QUE ES UN LENGUAJE DE
PROGRAMACIN? Auto LISP es un lenguaje orientado a la manipulacin de
smbolos; por ello se encontrar que la forma de programar
con l es totalmente diferente a la utilizada con los otros
lenguajes de programacin convencionales, como PASCAL,
El trmino programacin se define como un conjunto de BASIC o C. En LISP se hace uso en gran medida de los
instrucciones consecutivas y ordenadas que llevan a ejecutar parntesis, que sirven para indicar el inicio y final de una lista.
una tarea especfica. Dichas instrucciones se denominan LISP procesa listas de smbolos, en vez de datos numricos
cdigo fuente, el cual es nico para cada lenguaje y est como los lenguajes FORTRAN, BASIC y C.
diseado para cumplir una funcin o propsito especfico.
Usan diferentes normas o bases para controlar el Auto LISP es un subconjunto del LISP (lenguaje desarrollado
para la investigacin en Inteligencia artificial) que significa
comportamiento de un dispositivo y tambin pueden ser LIST Processing (Procesado de listas). Auto LISP aade
usados para crear programas informticos. algunas funciones especiales que estn diseadas para la
manipulacin de dibujos de AutoCAD.
Tambin se puede definir a la programacin como un
conjunto de mtodos que permiten planificar la solucin de un Como los sistemas CAD se orientan hacia la manipulacin de
smbolos grficos y Auto LISP se basa en el uso de smbolos,
problema. La tcnica de la programacin estructurada est
es un excelente lenguaje para la programacin de sistemas
orientada hacia la elaboracin de programas que resulten CAD.
fciles de comprender. guardando una estructura sencilla y
que observe ciertos estndares, con la finalidad de que otras Hay tres caractersticas de LISP que lo distinguen de la
personas y el mismo programador puedan acceder a este para mayora de los otros lenguajes de programacin:
futuras modificaciones. A. LISP manipula smbolos en vez de nmeros
B. Es un lenguaje orientado al objeto en vez de ser un
Un lenguaje de programacin es bsicamente un sistema lenguaje procedimental.
estructurado de comunicacin, similar al humano, el cual nos C. Es un lenguaje que evala en vez de interpretar o
permite comunicarnos por medio de signos, ya sean palabras, compilar.
sonidos o gestos. Refirindonos a los aparatos, este sistema
est organizado para que se entiendan entre s y a su vez
interprete las instrucciones que debe ejecutar. Por lo tanto, un III. QUE FUNCIONALIDAD TIENE EN AUTOCAD?
lenguaje de programacin es un modo prctico para que los
seres humanos puedan dar instrucciones a maquinas o AutoCAD nos ofrece otras formas para la manipulacin de
sistemas ya sea durante o antes de la accin que se planea objetos adems de la normal, que consiste en dibujar y dotar
ejecutar, a travs de este lenguaje se busca controlar el estos smbolos grficos; se pueden crear sus propios mens,
comportamiento fsico y lgico de una mquina, para que as como seleccionar variables del sistema AutoCAD para
desempeen con precisin alguna orden humana. obtener resultados ms completos y rpidos; pero sin duda
alguna el mecanismo ms poderoso para manipular el entorno
de AutoCAD es el lenguaje de programacin Auto LISP.
II. QUE ES AUTO LISP?
Auto LISP es una interfaz de aplicacin de AutoCAD que se
encarga de la automatizacin de las tareas de diseo. Cuando
se carga una aplicacin o rutina de Auto LISP, funciona en su
propio espacio de nombres para cada dibujo que se abra. Un necesario sin tener que repetir el proceso por lo que el tiempo
espacio de nombre es un entorno aislado que impide que las de espera entre ejecucin y ejecucin es nfimo.
rutinas de Auto LISP especficas de un dibujo tengan Un lenguaje evaluado se encuentra entre uno interpretado y no
conflictos de valor o nombre de variable o de smbolo con las compilado. Cuando se encuentra por primera vez un bloque
de otros dibujos. Por ejemplo, la lnea de cdigo siguiente de cdigo, este se convierte en cdigo compacto; si dicho
establece un valor diferente del smbolo a para los distintos
documentos. bloque de encuentra de nuevo mientras se ejecuta el
programa, el evaluador detecta que ya ha sido evaluado y lo
A. Lectura de un archivo LSP (. lsp), un archivo de ejecuta.
texto ASCII que contiene el cdigo de programa de Auto
LISP.
B. Lectura de un archivo FAS (. fas), versin binaria V. CUALES SON LOS OPERADORES BASICOS?
compilada de un nico archivo de programa LSP.
C. Lectura de un archivo VLX (. vlx), un conjunto
compilado de uno o varios archivos LSP o DCL (Dialog Un operador es un smbolo que indica al compilador para
Control Language, Lenguaje de control de dilogos. realizar manipulaciones matemticas o lgicas especficas.
LISP permite numerosas operaciones en los datos, con el
apoyo de varias funciones, macros y otras construcciones.
Entre las aplicaciones ms notables de Auto LISP se pueden
citar: Las operaciones permitidas en los datos podran ser
categorizados como:
A. Dibujo de figuras bidimensionales con
caractersticas especficas.
A. OPERADORES ARITMETICOS:
B. Creacin de objetos tridimensionales.
C. Generacin de grficas de funciones basndose en
ecuaciones. (+) Suma dos operandos.
D. Clculos de reas y tablas de datos, combinacin de (-) Resta dos operandos.
comandos de dibujo para realizar determinados (*) Multiplica los dos operandos.
tipos de tareas. (/) Divide el numerador por denominador
IV. QUE TIPO DE LENGUAJE ES? (mod, rem) Mdulo del operador y de resto
de despus de una divisin entera.
Los lenguajes de programacin pueden ser: (Incf)Incrementa operador aumenta valor
entero por el segundo argumento
A. Lenguajes de programacin de bajo nivel: especificado.
Son aquellos utilizados para controlar el hardware (partes (Decf) Operador decremento disminuye
tangibles) del aparato y dependen directamente de la mquina, valor entero por el segundo argumento
es decir, que no pueden ser usados en aparatos diferentes para especificado.
los que fueron creados. Estos lenguajes son los que ordenan
las operaciones esenciales para el funcionamiento del B. OPERADORES DE COMPARACION
dispositivo. Tambin es conocido como cdigo mquina. Su (=) Comprueba si los valores de los
funcionamiento es complejo, por lo que lo utilizan operados son iguales o no, s, entonces
principalmente los fabricantes de hardware. Con ellos se condicin sea verdadera.
pueden programar tareas como reproduccin de audio o (/=) Comprueba si los valores de los
video, mostrar imgenes, realizar operaciones matemticas, operados son diferentes o no, si los valores
movimiento del puntero, asignacin, liberacin de memoria, no son iguales, entonces se convierte en
entre otras. verdadera condicin.
B. Lenguajes de programacin de alto nivel: (>) Comprueba si los valores de los
Estos lenguajes son ms parecidos al humano. No dependen operados se montonamente decreciente.
de la mquina y sirven principalmente para crear programas (<) Comprueba si los valores de los
informticos que puedan solucionar distintos tipos de operados son montonamente crecientes.
necesidades.
(>=) Comprueba si el valor de cualquier
operando de la izquierda es mayor o igual
De acuerdo a esto, Auto LISP es un lenguaje de programacin
al valor del siguiente operando bien, si s,
de alto nivel. Adems, Auto LISP es un lenguaje que es
entonces se convierte en verdadera
evaluado en vez de interpretado o compilado. Los lenguajes
condicin.
interpretados leen el texto del programa lnea por lnea y lo
convierten a instrucciones de mquina, generando un archivo (<=) Comprueba si el valor de cualquier
en cdigo de mquina. Un lenguaje compilado es aquel cuyo operando de la izquierda es menor o igual
cdigo fuente, escrito en un lenguaje de alto nivel, es al valor de su operando derecho, en caso
traducido por un compilador a un archivo ejecutable afirmativo, a continuacin, condicin sea
entendible para la mquina en determinada plataforma. Con verdadera.
ese archivo se puede ejecutar el programa cuantas veces sea
(Max) Se comparan dos o ms argumentos En el caso de que condicin sea cierto se evala expr1, en
y devuelve el valor mximo. caso contrario expr2.
(min) Se comparan dos o ms argumentos
y devuelve el valor mnimo. (if (< nota 5)
suspenso
C. OPERADORES LOGICOS: aprobado)

(and) Se necesita cualquier nmero de Cond:


argumentos. Los argumentos se evalan de
izquierda a derecha. Si todos los (cond (cond1 expr1)
argumentos se evalan como no-nil, (cond2 expr2)
entonces se devuelve el valor del ltimo
argumento. De lo contrario, se devuelve (t exprN))
cero.
(or) Se necesita cualquier nmero de Equivalente a una serie de ifs, si se cumple cond1 se evala
argumentos. Los argumentos se evalan de expr1, si no, si cond2 es cierto se evala expr2, El t final es
izquierda a derecha hasta que uno evala a opcional y dado que se cumple siempre sera equivalente a un
no nula, en tal caso se devuelve el valor del default en un switch de java
argumento, de lo contrario se vuelve nil.
(cond ((< nota 5) 'suspenso)
(Not) Se toma un argumento y devuelve t
((< nota 7) 'aprobado)
si el argumento se evala como nil.
((< nota 9) 'notable)
D. OPERADORES BIT A BIT:
((< nota 10) 'sobresaliente)
(logand) Esto devuelve los bits AND (t error))
lgico de sus argumentos. Si no se da
ningn argumento, entonces el resultado es Case:
-1, que es una identidad para esta
operacin.
(case expresion
(logior) Esto devuelve el bit a bit lgicas (valor1 expr1)
incluido o de sus argumentos. Si no se da ((valor2 valor3) expr2)
ningn argumento, entonces el resultado es
cero, lo que es una identidad para esta (otherwise expr))
operacin.
(logxor) Esto devuelve el bit a bit lgicas Equivalente a los switchs de Java. Si expresin evala a
OR exclusiva de sus argumentos. Si no se valor1 se ejecuta expr1, si evala a valor2 o valor3 (si puede
da ningn argumento, entonces el resultado evaluar a ms de un valor se colocan en una lista) se evala
es cero, lo que es una identidad para esta expr2, Otherwise es equivalente a default en los switchs de
operacin. java, se ejecuta si no evala a ninguno de los dems.
(lognor) Esto devuelve el NO bit a bit de Nota: case evala con eql
sus argumentos. Si no se da ningn
argumento, entonces el resultado es -1, que (case nota
es una identidad para esta operacin. ((0 1 2 3 4) Suspenso)
(logeqv) Esto devuelve la equivalencia (5 Aprobado)
lgica bit a bit de sus argumentos. Si no se (6 Bien)
da ningn argumento, entonces el resultado ((7 8) Notable)
es -1, que es una identidad para esta ((9 10) Sobresaliente))
operacin.
VII. CMO SE CREAN LISTAS?
VI. QUE CONDICIONES EXISTEN Y COMO SE
ESCRIBEN?
Se pueden crear listas mediante los siguientes mtodos:
En Auto LISP tenemos los siguientes condicionales: A. LIST

If: Crea una lista a partir de un nmero de expresiones Sintaxis:


(if condicin (LIST <expresin>...........) Valor retornado: Una lista de los
expr1 argumentos de la funcin.
expr2)
-(setq L1 (list 'a 'b 'c)) devuelve (A B C)
- length '(a b c d)) devuelve 4
-(setq L2 (list 'a '(b c) 'd)) devuelve (A (B C) D) - (length '(a b (c d))) devuelve 3
- (length '()) devuelve 0
-(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) VIII. CMO SE DECLARAN FUNCIONES?

-(setq a 10 b 20 c 30 L4_1 (list a b c)) Una funcin es un grupo de instrucciones que juntos realizan
devuelve (10 20 30) una tarea.
Puede dividir el cdigo en funciones separadas. Cmo divide
-(setq La (list a) Lb (list b) Lc (list c) L4_2(La Lb Lc)) su cdigo entre diferentes funciones depende de usted, pero
devuelve ((10)(20)(30)) lgicamente la divisin por lo general es lo que cada funcin
realiza una tarea especfica.
Como alternativa a utilizar LIST, se puede indicar una lista
de forma explcita con la funcin QUOTE si la lista no El nombre de macro defun se utiliza para definir funciones.
contiene variables ni opciones sin definir. El carcter de La defun macro necesita tres argumentos:
comilla () se define como la funcin QUOTE. Nombre de la funcin
Parmetros de la funcin
APPEND Cuerpo de la funcin
Sintaxis de definicin de funcin es:
Funde varias listas en una Sintaxis: (APPEND <lista>...........)
Valor retornado: Una lista nica.
(defun name (parameter-list) "Optional documentation string."
body)
-(setq L5 (append '(a b) '(c d))) devuelve (A B C D)
Vamos a ilustrar el concepto con ejemplos sencillos.
-(setq L6 (append '((a)(b)) '((c)(d)))) devuelve ((A)(B)(C)
(D))
A. Ejemplo 1
-(setq L7 (append L3 L4_1)) devuelve (3.9 6.7 10 20 30)
Vamos a escribir una funcin llamada averagenum que
imprimir el promedio de cuatro nmeros. Vamos a enviar
-(setq L8 (append L4_2 L4_1) devuelve ((10) (20) (30) 10 20
estos nmeros como parmetros.
30)
Crear un nuevo archivo de cdigo fuente llamado main.lisp y
escriba el cdigo siguiente en el mismo.
-(setq L9 (append La Lb Lc) devuelve (10 20 30)
(defun averagenum (n1 n2 n3 n4)
CONS
(/ ( + n1 n2 n3 n4) 4)
)
Aade al principio de una lista como primer elemento una
(write (averagenum 10 20 30 40))
expresin Sintaxis: (CONS <expresin> <lista>) Valor
retornado: La nueva lista.
Cuando se ejecuta el cdigo, devuelve el siguiente resultado:
25
- (cons 'a '(b c d)) devuelve (A B C D)
B. Ejemplo 2
- (cons '(a) '(b c d)) devuelve ((A) B C D)
Vamos a definir y llamar a una funcin que calcula el rea de
un crculo cuando el radio del crculo se da como argumento.
Crear un nuevo archivo de cdigo fuente llamado main.lisp y
La funcin CONS tambin acepta un tomo en lugar del
escriba el cdigo siguiente en el mismo.
argumento lista, en cuyo caso construye una estructura
denominada pares punteados. En los pares punteados, Auto
(defun area-circle(rad)
LISP incluye un punto entre el primer y el segundo elemento.
"Calculates area of a circle with given radius"
Un par punteado es un tipo especial de lista, por lo que
(terpri)
algunas funciones que utilizan listas normales no los aceptan
(format t "Radius: ~5f" rad)
como argumento.
(format t "~%Area: ~10f" (* 3.141592 rad rad))
)
-(cons 'a 2) devuelve (A . 2)
(area-circle 10)
LENGTH
Cuando se ejecuta el cdigo, devuelve el siguiente resultado:
Area: 314.1592
Cuenta los elementos de una lista Sintaxis: (LENGTH
<lista>) Valor retornado: El nmero entero correspondiente.
Tenga en cuenta que:
Puede proporcionar una lista vaca como parmetros,
lo que significa que la funcin no tiene argumentos, http://www.larevistainformatica.com/Lisp.htm
la lista est vaca, escrito como ().
LISP tambin permite que los argumentos
http://www.ptolomeo.unam.mx:8080/xmlui/bitstream/han
opcionales, mltiples y palabras clave. dle/132.248.52.100/8969/decd_1406.pdf?sequence=1
La cadena de documentacin describe el propsito de
la funcin. Se asocia con el nombre de la funcin y
http://www.lawebdelprogramador.com/foros/Au
se puede obtener usando la documentation funcin.
toCad/597333-QUE-ES-LISP.html
El cuerpo de la funcin puede consistir en cualquier
nmero de expresiones Lisp. https://latinoamerica.autodesk.com/products
El valor de la ltima expresin en el cuerpo se /autocad/features
devuelve como el valor de la funcin.
Tambin puede devolver un valor de la funcin
mediante el return-from operador especial. [3] http://docs.autodesk.com/ACD/2013/ESP/index.html?
url=files/GUID-16DC15FC-5329-492E-B66A-
401D49CF971F.htm,topicNumber=d30e499594
IX. CONCLUSIONES
http://www.ptolomeo.unam.mx:8080/xmlui/bitstream/han
. dle/132.248.52.100/8969/decd_1406.pdf?sequence=1
Resumiendo, las ventajas que se puedan obtener utilizando
AutoLISP son, entre otras: http://vps280516.ovh.net/divulgamat15/index
.php?
A. La sistematizacin de tareas o rocedimientos que option=com_content&view=article&id=10986&di
agilicen el trabajo con AutoCAD. rectory=67
B. Permite automatizar el desarrollo de proyectos, es
decir, realizar un agrupamiento de tareas planificadas que [4] https://otroespacioblog.wordpress.com/2012/09/02/lenguaj
siguiendo una estrategia de desarrollo culmine en un es-de-programacion-compilados-vs-interpretados/
objetivo comn, teniendo para esta misma estrategia una o
ms vas de desarrollo que de antemano ya se a hallan
[5] https://desarrolloweb.com/articulos/235
previsto.
8.php
C. Se tiene una explotacin mxima del paquete ya que
se manipula directamente la base de datos sin pesar por el
uso convencional de los comandos bsicos de AutoCAD. [6] http://www.w3ii.com/es/lisp/lisp_decisi
D. Creacin de nuevos comandos que se incorporan a ons.html
los comandos bsicos de Autocad.
E. Interaccin mayor con otros paquetes de dibujo e http://en.togores.net/apuntesparauncurso/vi
inclusive con otros programas de aplicacin. sual-lisp-para-autocad/2-tecnicas-
fundamentales/estructuras-de-
control/estructuras-condicionales
REFERENCIAS
http://mundogeek.net/archivos/2004/05/12/es
tructuras-condicionales-en-lisp/
[1] https://colombiadigital.net/actualidad/articulos-
informativos/item/7669-lenguajes-de-programacion-que-
son-y-para-que-sirven.html [7] PROGRAMACIN AUTOLISP -MILAGROS
http://es.ccm.net/contents/304-lenguajes- CANGA VILLEGAS y JOS ANDRS DAZ SEVERIANO
de-programacion.

http://noticias.universia.es/cienciatecnolo [8] http://www.w3ii.com/es/lisp/lisp_functions.html


gia/noticia/2016/03/18/1137432/lenguaje-
programacion-aprender.html

[2] http://civilgeeks.com/2011/09/27/que-es-autolisp/