jueves, 28 de febrero de 2008

AUTOLISP

Este apartado nace para presentar a los interesados, un manual sencillo para el aprendizaje de AutoLisp. El AutoLisp es un lenguaje de programación para AutoCad, que facilita el manejo de Autocad y optimiza el rendimiento. Espero que os sea de utilidad.

Información de tu interés: www.selmotopografia.es



TEMA 1 DE 10
INTRODUCCIÓN

Este tutorial se puede decir que es la 2ª edición personalizada del tutorial realizado por ROBIERZO. La 1º edición ha sido publicada en:
http://foro.3dgazpacho.com/viewtopic.php?t=7882
Se han intentado corregir algunas cosas, añadir otras y eliminar aquellas que carecían de importancia o estaban mal. Se admiten sugerencias y/o correcciones. Como muchos de vosotros ya sabéis, este tutorial no es para los ya iniciados, sino más bien para aquellos que parten de cero. Con esto intento facilitar el acceso al mundo de AutoLisp a todos los interesados. Como novedad principal en esta 2ª edición diremos que se incorporará un nuevo tema, TEMA 10, en el que veremos algunas órdenes de VisualLisp, muy útiles y que no suponen cambiar el chip de AutoLisp ni cosas raras.
Para aquellos que no tienen ni idea, parece obligado decir que:

1º-. AutoLisp es un lenguaje de programación para AutoCad. Es decir, si no trabajas con AutoCad es bastante ilógico aprender una herramienta que sólo funciona bajo AutoCad. A partir de AutoCad 14 nace el VisualLisp, que no es otra cosa que AutoLisp, pero con una cantidad enorme de nuevas funciones que facilitan mucho las cosas.

2º-. Cuantos más conocimientos se tienen de AutoCad más fácil es de elaborar las rutinas en AutoLisp. Al fin y al cabo, se trata de realizar un programita que haga lo que AutoCad no hace, o que hace a medias, o que hace de modo lento y tedioso.

3º-. Las rutinas son ficheros de texto, de extensión "lsp", que normalmente se guardan en las carpetas de acceso directo de AutoCad, normalmente en la carpeta SUPPORT. Yo lo que hago es crearme una carpeta especial para mis rutinas. Simplemente lo que debo hacer antes de abrir una rutina que se aloje en esta carpeta es decirle a AutoCad el nombre de esta carpeta. Para ello vamos a La barra de menús de AutoCad y en Herramientas/Opciones, en la pestaña de Archivos, vamos a la Ruta de búsqueda de archivos de soporte y le añadimos nuestra carpeta de nuestras rutinas. Si echáis un vistazo en la carpeta SUPPORT, que es donde se deben guardar las rutinas por defecto, encontraréis muchos de estos ficheritos con extensión *.lsp. Normalmente ocupan muy poco, pues son ficheros de texto, editables con cualquier editor de texto. Si editáis uno de estos ficheritos, veréis el código original de una rutina normal y corriente de AutoLisp. Muchas veces el autor de una rutina de éstas opta por compilarla. La compilación lo que hace es crear un fichero en lenguaje máquina, mas accesible para nuestro ordenador, que acelera las operaciones de la rutina, y además oculta el contenido real de la rutina. Estos ficheros compilados tienen extensión *.fas o *.vlx. Son exactamente igual que los *.lsp, pero como digo, en lenguaje máquina. De esta manera podemos proteger nuestras rutinas de cambios o intrusismo por parte de otros “piratillas” que quieran hacerlas de su propiedad.

4º-. AutoCad, a partir de su versión 14, incorpora una herramienta a modo de editor, que podéis encontrar en la barra de menús: "Herramientas/AutoLisp/editor de VsualLisp"
Desde aquí se abre el editor de VisualLisp/AutoLisp. Una vez abierto el editor vamos a “Archivo/nuevo archivo” y ya estamos en disposición de empezar a elaborar nuestra nueva rutina. En la ayuda de este editor, en adelante VLIDE, podemos encontrar respuesta a muchos de nuestros problemas, aunque tiene un pequeño problemilla, y es que muchos de los temas que se desarrollan en esta ayuda están en inglés. Pero bueno, para eso están los foros.
El VLIDE, Editor de VisualLisp, es tremendamente útil, aunque también existen otras herramientas para programar en AutoLisp. Dado que el VLIDE está incorporado con AutoCad, yo no lo dudaría y utilizaría esta herramienta. El VLIDE utiliza un sistema de colores de forma automática que aplica de tal forma que diferencia las funciones, las variables, las cadenas de texto y los números. Os resultará fácil comprenderlo. Podéis abrir cualquier fichero *.lsp para echarle un vistazo, eso sí. Sin cambiar nada, de momento.

5º-. Existen 2 máximas en programación:
1ª máxima: Ningún programa funciona a la primera. Es más. Yo diría que ningún programa funciona a la segunda. (Si tú eres de los que lo consigues, enhorabuena). Así que no desesperéis si las cosas no salen a las primeras de cambio.
2ª máxima: Cualquier programa es mejorable. Si creéis que sois unos monstruos de la creación por hacer un excelente programa, sabed que vendrá alguien que lo mejore, simplemente añadiendo una coma a vuestra magnífica rutina. ¿Por qué creéis que AutoCad va por la enésima versión?

6º-. Las maneras de cargar una rutina en AutoCad son dos: 1ª: Desde la barra de menús de AutoCad “Herramientas/AutoLisp/cargar” o 2ª: desde la línea de comandos, escribiendo: (load”nombre rutina”)
Ej.: si tenemos una rutina que se llama prueba.lsp, escribiríamos: (load”prueba”)

Y para terminar esta tediosa introducción, un par de cositas más. Deciros que este temario que voy a desarrollar ha sido elaborado basándose en los siguientes libros, que os recomiendo encarecidamente que compréis:
Autor: José Antonio Tajadura y Javier López Tit: AutoLisp 12,13,14 Edit: Mc Graw Hill Autor:Reinaldo Togores y César Otero Tit: Programación en AutoCad con VisualLisp Ed.: Mc Graw Hill.

Yo lo que sé lo aprendí a base de consultar estos dos manuales y de visitar y asediar con preguntas a los foreros de:
http://www.3dgazpacho.com/ , http://www.hispacad.com/ , http://www.soportecad.org/
Mi más sincero agradecimiento a todas aquellas personas que colaboran incansablemente en estos foros para ayudar y esclarecer dudas a todos los que sabemos menos pero tenemos gran ilusión por aprender.
También puedes hallar información en sitios como:
http://personales.unican.es/togoresr/
http://perso.wanadoo.es/lm2ark
http://www.prexem.blogspot.com/

Vamos a hablar de algunos caracteres especiales que existen en AutoLisp. Hay que destacar dos elementos que son imprescindibles. El paréntesis “( )”y el punto y coma “ ; ” . Todas las funciones o expresiones deben ir precedidas de un punto y coma o metidas entre paréntesis.
1º Punto y coma: ; Sirve para añadir comentarios o aclaraciones que nos ayuden a entender mejor nuestra rutina. Todo lo que vaya detrás del punto y coma lo consideraremos como texto aclaratorio que en realidad lo único que aporta a la rutina es un comentario que ayuda al autor a estructurar adecuadamente la rutina. En realidad podríamos borrarlo y el programa no sufriría alteraciones. Cuando el comentario es muy grande podemos acompañarlo de la barra vertical “” de tal forma que al inicio del comentario aparezca “;” y al final del comentario aparezca “;”. Así evitaremos poner un punto y como al inicio de cada línea.


Ej.: ;Este es un comentario que introduciremos en 3 líneas en nuestra rutina.
Todo lo que queda dentro del punto y coma y la barra vertical es prescindible
para el uso correcto de nuestra rutina.;

2º Paréntesis: ( ) Debe haber el mismo número de paréntesis de apertura que de cierre. De lo contrario se producirá un error. Los utilizaremos para preceder cualquier comando de AutoLisp y para dar fin a dicho comando.
Ej: (GETPOINT pt "\nSeñala un punto")

3º Comillas: " " Se utilizan para encerrar expresiones de texto que queremos que aparezcan en la pantalla, ya sea en la línea de comando o en una ventana. Todo lo que esté entre comillas será considerado como una cadena de texto, incluso los paréntesis, comas, punto y comas.... Como los paréntesis, debe haber un número par de comillas.
También se utilizarán para dar entrada a las expresiones propias de AutoCad, a través de la orden COMMAND.
Ej: (COMMAND "_line" pt '(150 120) "")
Como podemos observar, en este caso, la orden “LINE” la hemos puesto entre comillas, así como el INTRO final, que lo indicamos mediante 2 comillas “”.
4º Punto: . Se usa como punto decimal. No confundir con la coma , que utilizan algunos programas. En AutoLisp siempre se utiliza el punto como indicador de decimal.
5º Apóstrofo: ‘ Equivale al comando (QUOTE). Devuelve el literal de la expresión.
6º Contrabarra: \ Dentro de una cadena de texto podemos incluir una contrabarra seguida de uno de los siguientes caracteres:
\n: Retorno de carro, nueva línea
\r: Return
\t: Tabulador
Es decir. Si escribimos: (GETPOINT pt "\nSeñala un punto") , cuando AutoLisp evalúe esta expresión, antes de escribir "Señala un punto" en la línea de comando, hará un salto de carro para que no aparezcan dos o más expresiones distintas, unas a continuación de otras. Esta combinación \n suele utilizarse mucho en todos los comandos que solicitan al usuario una entrada, a través de la línea de comandos.
7º Cierre admiración: ! Sirve para extraer desde la línea de comandos, el valor de una variable. Ej.: (SETQ radio 5.639)
Si tecleamos !radio en la línea de comandos nos aparecerá 5.639
ACLARACIONES *AutoLisp no distingue entre mayúsculas y minúsculas.
*Es conveniente usar el nombre de las órdenes de AutoCad en inglés. Si trabajamos con AutoCad español y queremos saber el nombre en inglés tecleamos en la línea de comando: (GETCNAME "orden en castellano")
Ej.: (GETCNAME “texto”) y aparece "_text"
El guión bajo que aparece delante de una orden en inglés sirve para que dicha orden la reconozca cualquier versión de AutoCad, sea en castellano o en inglés. Y es con este guión bajo como debemos expresar todas nuestras órdenes desde AutoLisp, para evitar problemas con cambios en nuestra versión de AutoCad.
*AutoLisp siempre trabaja en radianes.
*PI es el número 3.1415926....., por lo que ninguna variable podrá llamarse PI. *T es el símbolo de TRUE, cierto, por lo que ninguna variable podrá llamarse T.
*nil es el símbolo de falso, por lo que ninguna variable podrá llamarse nil. Siempre aparecerá en minúsculas, nunca NIL.

Información de tu interés: www.selmotopografia.es

10 comentarios:

Anónimo dijo...

Suerte en tu blog
por ahi entrare a aprender en tu nuevo espacio.
si pudiras colgar codigos y explicases las funciones,estare al tanto saludos

robierzo dijo...

Hola Caderic. Bueno, en principio intentaré actualizar el temario que colgué en el Gazpacho y a ver si puedo ponerlo por aquí. Es una pena que no puedan subirse archivos. Más adelante iré poniendo algunos códigos que utilizo habitualemente para mi trabajo. A ver si entre todos aprendemos algo. Un saludo.

Anónimo dijo...

Hola Robierzo, mucha suerte con tu blog.
Espero que crezca y que entre gente asi comolo hace en el foro.
Yo la verdad que de lisp ni idea pero seguro que en un futuro puedas poner mas temas como VBApor ejemplo jejejeje.

Saludos.

Anónimo dijo...

Bueno el del anterior comentario soy yo Frany jajajaj, no he podido entrar con cueenta.
Estoy ultimante algo torpe con estas cosas, que tengo que poner mui cuentra de gmail o que? crearme otra.
Saludos.

Frany.

robierzo dijo...

Hola Frany. Bueno, pues te digo lo mismo que a Caderic. Iré poniendo cosas en función del tiempo de que disponga. Bienbenido y saludos. Puedes crearte una cuenta si quieres o entrar como anónimo. Yo he creado este blog recientemente y tampoco sé muy bien cómo va. Noto que tiene una deficiencia muy grande y es que no se pueden adjuntar archivos. Pero bueno, a ver si los de google lo van mejorando. Saludos y Suerte.

Francisco Naranjo dijo...

Espero que pueda entrar con la cuenta de gmail

Francisco Naranjo dijo...

No es por nada, pero creo que resulta un poco incomodo teclear cada vez el control visual para poder postear algo.
No se si esto va a hecer que la gente deje de entrar, al emos en mi caso, me resulta un poco lioso al principio.
De todas maneras no se si has entrado en el foro SOPORTECAD.ORG, alli la seguridad parece mejor que en HISPACAD Y 3DGAZPACHO, el administrador ATARI parece que se ha tomado las cosas mas en serio con eso, lo unico que tienes que hacer es meter tu cuenta y calve cada vez que accedes al foro , pero eso es una vez y luego dentro ya puedes ver todos los post. Espero tu visita por alli tambien.

Saludos.

Francisco Naranjo dijo...

Bueno, la verdad que no vi que eres miembro de SOPORTECAD desde el año 2005, jajaja.
saludos.

Anónimo dijo...

Robierzo!
Me alegra mucho tu iniciativa de iniciar este espacio para todos los que tratamos de hacer algo en Vlisp, por mas que con el sentimiento opuesto vea como se hunde 3dgazpacho.
Espero que tengas muchisima suerte y oportunidad de ayudar a mucha gente.
Saludos y éxitos.

robierzo dijo...

Gracias Navearg. Esto de los blogs tiene algunas carencias, pero bueno. está de moda y es algo personal, que iré haciendo poco a poco. sin prisas y sin ánimo de desbancar a Google.jajajajaja