jueves, 21 de junio de 2012

Tutorial AutoLISP de AutoCAD para Principiantes

Cada programa de AutoLISP debe ser similar a esto:

(miprog defun () 
(Princ "Juan") 
(Princ) 
)

Puede ejecutar AutoLisp en la linea de Comandos dentro de AutoCAD. Aquí es donde vamos a empezar.

AutoLISP es un lenguaje que devuelve un valor después de la ejecución. Cada función que se ejecuta va a devolver o eco de su respuesta. Vamos a probar esto. Abra AutoCAD y escriba lo siguiente en la línea de comandos: (+ 1 2) y pulse la tecla Intro. (La función + agrega números juntos). Mire la línea de comandos. Usted debe ver algo que se parece a esto:



Observe que el 3 debajo de la línea se ha escrito. AutoLISP devuelve el valor de la función que ha escrito. Ponlo a prueba, una vez más. Esta vez cambia el 1 a 3 y el 2 a 5. Al igual que en (+ 3 5). ¿Qué lo devuelva? AutoLisp siempre devuelve la respuesta.


Variables

Las variables son nombres para los valores. Recuerde que el álgebra? X = 1 y = 2. Le resulta familiar?, X e Y son variables. Si usted necesita almacenar datos, como una cadena o un entero, tendrá que asignar un nombre de variable para los datos. La forma de hacerlo es utilizar la función setq. Ej. (Setq a 1). Este conjunto es la una variable con el valor 1. Cada vez que utilice la variable a en su programa, que en realidad se utiliza el valor 1. Si se introduce con tipo (+ a 2) y se presiona, AutoLisp volvería 3.

Puede utilizar cualquier nombre de variable que desea. (Prácticamente) Mayúsculas y minúsculas, no importa. Le sugiero que no utilizan los nombres que usa el AutoCAD. ¿Cómo saber cuáles están siendo utilizados por AutoCAD? Buena pregunta. El método más sencillo para saber si AutoCAD utiliza un nombre, basta con escribir el nombre en el interior del símbolo del sistema de AutoCAD y pulse la tecla Enter. Si no ocurre nada, lo pueden utilizar.Defina las variables y los programas con nombres únicos. Algunos ejemplos de seguridad de los nombres de variables son las siguientes:

(setq b1 3)

(setq aa1 4)

(setq JuansVarForHisProgram 1)

(setq thisVarA 2)



Algunos malos ejemplos:
(setq line 1)
(setq acad 4)
(setq ltscale 7)
(setq car 12)
(setq cdr 400) 


Le sugiero que sean descriptivos los nombres de las variables, para no confundirnos y acordarnos.
Esto es muy útil cuando se depura un programa. Escriba(setq aa1 454)  y pulse Enter. Para comprobar el valor de la variable que acaba de declarar, simplemente  escriba !aa1 en el símbolo del sistema y presione Enter. El uso de un signo de exclamación en la parte delantera de la variable se imprime el valor de la variable a la línea de comandos.

Funciones


Vamos a dar un paso más y crear nuestra propia función. Cada función definida comienza con la declaración defun.

Ej. (defun miprog() o (defun C:miprog()

La diferencia entre el uso de la C: y no utilizar el C: se explicará más adelante. Por ahora. vamos a aprender otra función de AutoLisp para ser usada en nuestro primer programa. La función princ simplemente imprime en la línea de comandos. Ej. (princ "Juan") imprimirá Juan en la línea de comandos. Bueno entonces, vamos a escribir esto en el símbolo del sistema:

(defun miprog()(princ "Juan")) y pulse Enter.

Usted debe ver algo que se parece a esto:




Ahora escribe (miprog) en el símbolo del sistema y presione la tecla enter. Usted debe ver algo que se parece a esto:



El programa se ejecuta e imprime "Juan" en la línea de comandos. A continuación, el programa hizo eco de la última declaración de la línea de comandos. AutoLISP devuelve siempre la respuesta correcta? Es por eso que terminó con Juan "Juan" en la línea de comandos. La manera de deshacerse de la eco es utilizar una declaración princ sin ningún tipo de parámetros como la última declaración de tu programa. Ej. (princ).
Vamos a reescribir el programa usando la función (princ) para detener el eco. Escriba esto es en el prompt de comando:

(defun miprog()(princ "Juan")(princ))

A continuación, escriba (miprog) y pulse Enter. ¿Qué pasó? Sin eco. Bien.

Ahora si vamos a explicar lo del directorio C: que hemos mencionado anteriormente. El C: en AutoCAD no indica que desea que este programa se ejecute en el símbolo del sistema como una función integrada. Vamos a hacer de nuevo el programa. Escriba esto en la línea de comandos:

(defun C:miprog()(princ "Masingenio")(princ))

Ahora escribe (miprog) y pulse Enter. ¿Qué pasó? ¿Por qué imprime Juan? Se utilizó el C: delante de la función. No tenemos que poner el programa entre paréntesis para ejecutarlo. (Hay algunas otras diferencias, vamos a llegar a eso en los niveles avanzados.) Para ejecutar una función que se declaró con una C: sólo tienes que escribir el nombre del programa en el símbolo del sistema. Vamos a hacer eso ahora. Escribe miprog en el símbolo del sistema y presione ENTRAR. Se imprime "Masingenio" a la línea de comandos. ¡Wow! No salir corriendo para mostrar a todos todavía. La próxima vez que abra un dibujo de su nueva función va a desaparecer y usted tendrá que escribirla de nuevo. Una pena!

¡Espera! Podemos guardarlo en el disco y vuelva a cargarlo cada vez que lo necesitaba. Vamos a hacer eso. Voy a suponer que usted tiene un sistema operativo de Windows para las siguientes instrucciones.

Haga clic en el botón Inicio. Ir a los programas. Ir a Accesorios. Ir a la  Bloc de notas .
Bloc de notas se debe abrir. Cuando lo hace, escribe en:

(defun C:miprog()  
      (princ "Juan")
      (princ "Masingenio")
      (princ "AutoLisp")
      (princ)
)

Ahora, vaya a "Archivo" del menú desplegable en el Bloc de notas y seleccione "Guardar como". Escriba miprog.lsp para el nombre del programa. ¡Espera! No hagas clic en el botón GUARDAR todavía. El Bloc de notas tiene la mala costumbre de suponer que desea guardar como un archivo de texto con la extensión txt. Ir a los "Guardar como..."  y en el cuadro desplegable seleccione "Todos los archivos (*.*)". Asegúrese de guardar el archivo en una ubicación en la que AutoCAD puede encontrar el archivo de forma rápida. Sugiero crear un directorio en su disco duro para guardar todos sus archivos AutoLISP, me permito sugerir un directorio como por ejemplo:  "C:\ACAD\lsp".
Volver a AutoCAD. Ir al Menu "Manage" y luego haz clic en el botón de "Load Aplication". Luego en la ventana que se abre, tienes que ubicar tu archivo según la ruta que le diste, lo seleccionas y haces clic en el botón "Load". Haga clic en el botón "Close" para salir del cuadro de diálogo.


 Luego escriba miprog y pulse enter. Si se pulsa el botón F2 para que aparezca la pantalla de texto, deberías ver algo parecido a esto:



Y listo ha creado un programa de AutoLISP. ¡Felicitaciones!

Traducido y modificado de JuanerypMasingenio.com/autolispbeg.html

3 comentarios:

  1. Hola Me pueden ayudar? necesito saber como escribir palabras en angulos en autocad 2010, se puede? intento y solo lo puedo hacer vertical y horizontal.
    Gracias Saludos

    ResponderEliminar
  2. esto es genial porfavor sigan subiendo mas al respecto para que podamos generan nuestras propias rutinas mil gracias!!!

    ResponderEliminar
  3. Hola, he creado un cuadro con DCL y una programa en Lisp que trabaja con ese cuadro, el problema es que siempre el cuadro aparece en el centro de la pantalla y deseo que esto cambio o poder colocarlo donde lo deseo yo, se de la funcion New_Dialog; pero no tengo bien la sintaxis o como funciona la accion punto_pantalla? por favor si alguien supiera al respecto que me ayude por favor, gracias

    ResponderEliminar