Curso Practico de AutoLisp

November 11, 2022 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Curso Practico de AutoLisp...

Description

 

 

 

Curso práctico  d de programación   con A utolis p  

El ab o r ad o  p p o r  M Mar i o  T To r r es  P Pe j er r ey   http://www.construcgeek.com/

 A u   , A   , -  -  M  d e  d e  h t  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS   SP  P    ,   -   M a  an   nu  u   a  a   l l   d  es  s  c   ca  a  r   r g    a  ad   do  o     d  es  s  d  d   e  e    h  tt  t p      : :/   //   /w  w   w  w   w  w   . c o  on  n   s   st  t r  r  u  u   c  c  g    e  ee  e  k  k   . c o  om   m/  /   

[1]

 

 

 

 A u   , A   , -  -   M  M a  d e  d e  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS  S   P   P ,   -  an   nu   ua  a  l  l  d  es  s  c   ca  a  r  r  g    a  ad  d   o  o     d  es  s  d   de  e   h   h t  tt  t  p    : :/   //   /w  w   w  w   w  w   . c o  on   ns  s  t  t r   ru  u   c  c  g    e  ee  e  k  k   . c o  om  m   /  /   

[2]

 

 

PRIMERA  C CLASE  

 INTRODUCCION 

 AutoLISP es un lenguaje de alto nivel, potente y flexible, muy apropiado para aplicaciones CAD. Es una adaptación del lenguaje LISP (LISt Processing: Procesado de Listas) que se desarrolló en los años cincuenta para la investigación de Inteligencia Artificial, basado en listas y símbolos, elementos fundamentales de AutoCAD lo que permite añadir nuevos comandos de una forma fácil y accesible. Una de las características principales de AutoLIPS es el acceso a la base de datos de un dibujo de AutoCAD. La base de datos de AutoCAD se compone de toda la información del dibujo en el cual nos encontramos trabajando: ubicaciones de las entidades, capas, estilos de texto, etc. Mediante AutoLISP se puede obtener datos de esa base bas e de datos o modificarla de acuerdo a nuestras necesidades. Los programas creados en AutoLISP son archivos de texto con extensión *.LSP  que  que se pueden crear desde cualquier editor de textos, ya sea desde el EDIT  del  del DOS  o  o NOTEPAD   de de WINDOWS , o desde el propio editor Visual LISP.  AutoCAD cuenta con un intérprete interno que es el que se encarga de evaluar los programas escritos por el usuario; para eso se debe cargar el programa en la memoria de AutoCAD mediante el comando APPLOAD. Mediante la carga, el intérprete evalúa la sintaxis del programa escrito y si encuentra un error en él, procede a informarlo mediante un mensaje mensaje que se muestra en la barra de comandos el cual indica el error generado y el bloque de instrucción que lo contiene. De esta manera le permite al usuario revisar y corregir las instrucciónes creadas, hasta que se cargue sin ningún problema, aunque no asegura que el programa en plena ejecución funcione de una manera correcta por lo que se debe ejecutar utilizando todas las instrucciones posibles. La carga de una aplicación LISP solo tiene efecto para la sesión actual, si se inicia un nuevo dibujo o se sale de  AutoCAD, la aplicación LISP desaparece de la memoria, debiéndose cargar nuevamente. Debido a esto AutoCAD proporciona la manera de hacer que las aplicaciones se carguen de una manera automática, debiendo para ello adicionar una instrucción con la función AUTOLOAD, AUTOLOAD, en archivo ACAD.LSP. Ejem: (autoload "milisp" '("milisp")).  AutoCAD proporciona varios archivos “.lsp” que en realidad son comandos de AutoCAD que siempre utilizamos, los cuales pueden ser modificados de acuerdo a las necesidades del usuario. En resumen AutoLISP es lenguaje muy potente y versátil que nos permitirá reducir el tiempo empleado en la generación de nuestros dibujos, ya que los nuevos comandos creados pueden ser utilizados en cualquier momento.

 A u   , A   , -  -  M  d e  d e  h t  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS   SP  P    ,   -   M a  an   nu  u   a  a   l l   d  es  s  c   ca  a  r   r g    a  ad   do  o     d  es  s  d  d   e  e    h  tt  t p      : :/   //   /w  w   w  w   w  w   . c o  on  n   s   st  t r  r  u  u   c  c  g    e  ee  e  k  k   . c o  om   m/  /   

[3]

 

 

EL  E ENTORNO  D DE  D DESARROLLO  V VISUAL  L LISP 

 Visual LISP (VLISP) representa una renovación de LISP para AutoCAD, actualizándolo para incluir prestaciones que ya son normales en los modernos dialectos de LISP que se ajustan a la normativa COMMON LISP. Aún sin llegar a ser totalmente compatible con esta normativa, es significativo el incremento de su potencia como lenguaje de programación. Es particularmente útil la posibilidad que se incorpora para la interacción con la jerarquía de objetos de la aplicación mediante la interfaz ActiveX ™ Automation de Microsoft, y la posibilidad de responder a eventos mediante la implementación de funciones diseñadas como reactores. Como herramienta de desarrollo se aporta un Entorno de Desarrollo Integrado (IDE) que incluye un compilador y varias utilidades para la depuración. El IDE Visual LISP incluye:  



 



 



 



   

 

 



     

 



 



Comprobador de Sintaxis que reconoce secuencias AutoLISP erróneas y el uso incorrecto de los argumentos en llamadas a las funciones primitivas del lenguaje. Compilador de Ficheros que incrementa la velocidad de ejecución y constituye una plataforma de distribución que brinda seguridad al código fuente. Depurador de Fuentes, diseñado específicamente para AutoLISP, que permite la ejecución paso a paso del código fuente en una ventana mientras se observan simultáneamente los resultados obtenidos en la pantalla gráfica de  AutoCAD. Editor de Programación que emplea la codificación por color para LISP y DCL, así como otras características de apoyo sintáctico. Formateo LISP automático que redistribuye las líneas de código y las identa para facilitar la lectura lectu ra de los programas.  Amplias características de Inspección y Vigilancia Vigila ncia (Watch) que permiten el acceso en tiempo real a los valores de las expresiones y las variables, y que pueden ser empleadas tanto para datos LISP como para objetos gráficos de  AutoCAD.  Ayuda sensible al contexto sobre las funciones AutoLISP y una ventana Apropos para búsqueda de nombres de símbolos. Sistema de Administración de Proyectos que facilitan el mantenimiento de aplicaciones con múltiples ficheros fuente. Empaquetado de los ficheros AutoLISP compilados en un único módulo de programa. Capacidad para guardar y recuperar la configuración del Escritorio para reutilizar la distribución de ventanas de cualquier sesión anterior de VLISP. Consola Visual LISP Inteligente que permite un nuevo nivel de interacción del usuario, con funciones que amplían las de la ventana de texto habitual de AutoCAD.

Carga del módulo Visual LISP

Para cargar el modulo de Visual LISP, debe haberse iniciado una sesión de AutoCAD. Esta sesión puede contener sólo un dibujo vacío, o pueden estar abiertos dibujos cuyo contenido se desee procesar. Para activar el IDE VLISP   tenemos tres opciones: opciones:   Seleccionar del menú Tool (Herramientas)>AutoLISP>Editor Visual LISP    Teclear en la línea de comandos:



VLISP Nota: Hemos encontrado al menos en una versión localizada española que el comando  VLIDE no es reconocido por el sistema. La Ayuda de esa misma versión aeñala como alternativa el comando VISUALLISPIDE, que tampoco es reconocido. En estos casos siempre se puede recurrir al comando VLIDE, descrito en el punto siguiente.   La versión anterior de Visual LISP utilizaba con los mismos fines el comando VLIDE, que sigue siendo reconocido por la versión 2002. De hecho, internamente la llamada de  AutoCAD al IDE Visual LISP se realiza mediante este comando, que veremos aparecer en la línea de comandos cada vez que se cambie a ese entorno.





 A u   , A   , -  -   M  M a  d e  d e  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS  S   P   P ,   -  an   nu   ua  a  l  l  d  es  s  c   ca  a  r  r  g    a  ad  d   o  o     d  es  s  d   de  e   h   h t  tt  t  p    : :/   //   /w  w   w  w   w  w   . c o  on   ns  s  t  t r   ru  u   c  c  g    e  ee  e  k  k   . c o  om  m   /  /   

[4]

 

 

Editor  d de  A AutoLISP 

El editor de AutoLISP: Visual LISP de AutoCAD presenta el siguiente aspecto: Barras de Herramientas  

Barra de Menús

 Ar ea de ed ic ió n d e pr og ram as

Barra de Estado  

Ventana de información de Visual LISP

BarraEn delaMenús: parte superior se sitúa la barra de menús que contiene comandos y otros procedimientos. Barra de Herramientas:

Presenta una serie de iconos que representan de una manera interactiva todos los comandos y órdenes de Visual LISP.  Area de edición de programas:

Ocupa la mayor parte de la pantalla y es el área donde se escribe el codigo de los programas.  Ventana de información de Visual LISP:

Situada en la parte inferior en la cual podemos también escribir codigo y además nos muestra información acerca de la carga de los programas como por ejemplo: su integridad sintactica.

 A u   , A   , -  -  M  d e  d e  h t  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS   SP  P    ,   -   M a  an   nu  u   a  a   l l   d  es  s  c   ca  a  r   r g    a  ad   do  o     d  es  s  d  d   e  e    h  tt  t p      : :/   //   /w  w   w  w   w  w   . c o  on  n   s   st  t r  r  u  u   c  c  g    e  ee  e  k  k   . c o  om   m/  /   

[5]

 

 

Barras  d de  H Herramientas.-   Visual LISP dispone de cinco Barras de Herramientas que pueden activarse/desactivarse desde el menú View>Toolbars... que abre el siguiente diálogo:

Estas cinco Barras de Herramientas contienen las opciones u comandos esenciales del IDE, facilitando el acceso a los mismos.

Contiene las herramientas usuales de Crear Nuevo, Abrir, Guardar, Imprimir, Cortar, Copiar, Pegar, Deshacer, Rehacer y por último un acceso a la función Apropos que sirve para completar el texto buscando una correlación de una subcadena con nombres de funciones, etc.

Incluye las funciones de Buscar, Buscar y Reemplazar. Además una casilla de lista desplegable donde se guardan los términos anteriormente buscados durante la sesión de trabajo, lo que permite repetir una busqueda con más facilidad, cosa que se hace con la herramienta situada a la derecha de la casilla. Por último incluye una serie de herramientas para navegar dentro del texto mediante marcadores, que se introducen con la herramienta de la izquierda, se avanza o retrocede con las dos siguientes y se eliminan con la última.

La barra Tools (Herramientas) opera sólo con la ventana del Editor activa. Sus funciones son, de izquierda a derecha: cargar el código del Editor para su ejecución desde la Consola, cargar sólo el código seleccionado, comprobar la sintaxis de todo el contenido de la ventana del Editor, o con la siguiente, comprobar sólo lo seleccionado. Para formatear el texto se utilizan los próximos dos botones, el primero para todo el editor y el segundo sólo para el texto seleccionado. Los dos siguientes botones sirven para marcar como comentario el texto seleccionado o para desmarcarlo. Y por supuesto, el último se trata trat a de la Ayuda en línea.

 A u   , A   , -  -   M  M a  d e  d e  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS  S   P   P ,   -  an   nu   ua  a  l  l  d  es  s  c   ca  a  r  r  g    a  ad  d   o  o     d  es  s  d   de  e   h   h t  tt  t  p    : :/   //   /w  w   w  w   w  w   . c o  on   ns  s  t  t r   ru  u   c  c  g    e  ee  e  k  k   . c o  om  m   /  /   

[6]

 

    Los tres primeros botones de esta barra determinan la acción al encontrar un punto de ruptura durante la evaluación. El primero entra en las expresiones anidadas posteriores al punto de ruptura, evaluándolas desde la más interior. El segundo evalúa esta expresión y se detiene antes de la siguiente para de nuevo decidir si se quiere entrar a evaluar las expresiones anidadas. El tercer botón continúa hasta el final de la función en curso y entonces cuando se detiene de nuevo la evaluación. El segundo trío de botones tiene que ver con las acciones a tomar cuando se produce una ruptura del flujo de ejecución a causa de un error, o de que se alcance un punto de ruptura prefijado dentro del programa. Aunque es un tema que se explicará más adelante, cabe decir ahora que estos estados de suspensión en la ejecución del programa se utilizan para examinar los valores asumidos por las variables, cambiarlos si es preciso, etc. El primer botón (Continue) permite terminar con esta pausa y continuar la ejecución normal del programa. El segundo botón (Quit) permite abandonar el nivel de evaluación actual (pueden superponerse varios ciclos de evaluación si se producen varios errores durante la depuración) y pasar al nivel de más arriba. Y el tercer botón (Reset) pasa el control (Top Level).  de la ejecución directamente al nivel superior El tercer grupo de botones incluye otras útiles herramientas de depuración. El botón Toggle Breakpoint permite añadir un nuevo punto de ruptura en el programa, situado en la posición actual del cursor. El segundo botón (Add Watch) da acceso al diálogo que permite seleccionar un nombre de variable para observar sus resultados durante la ejecución. Watch . Estos resultados se exhiben en una ventana especial, la ventana El botón Last Break resalta en la ventana del editor la expresión que dio origen a la última ruptura. En caso de error, de esta manera se detecta de inmediato dónde se produjo éste. El último botón no es realmente un botón de comando. Sirve simplemente para indicar si la interrupción actual se encuentra antes o después de la expresión.

El primer botón sirve para poner en primer plano la ventana de aplicación de AutoCAD. El segundo un menú donde podemos seleccionar la ventana del IDE Visual LISP que deseamos poner en primer plano.botón Esto abre se hace necesario pues podemos tener abiertas de manera simultánea un gran número de programas y puede no der fácil localizar aquélo que queremos. El tercer botón traslada el foco a la Consola de Visual LISP. El siguiente permite activar la característica de Inspección (Inspect). Inspect  permite   permite examinar y modificar objetos AutoLISP así como AutoCAD. La herramienta Inspect  crea   crea una  ventana separada para cada objeto sometido a inspección. La siguiente herramienta (Trace Stack) necesita explicaciones que se salen del marco de esta introducción. Baste decir que nos permite acceder a la memoria de pila donde se guardan las llamadas a función. Puede invocarse en un momento de suspensión en la ejecución de un programa y permite mediante un menú contextual acceder a datos relacionados con la operación del programa. El botón que le sigue (Symbol Service) está diseñado para simplificar el acceso a las distintas utilidades de depuración relacionadas con símbolos. Podemos resaltar cualquier nombre de símbolo en el Editor y al pulsar sobre este botón se abrirá la ventana Symbol Service  donde  donde se muestra el valor vinculado. Este valor se puede cambiar directamente en esta  ventana. Además tiene una barra de herramientas que permiten otros procesos con el símbolo seleccionado. El siguiente botón permite abrir la ventana  Apropos   que describimos en detalle más adelante  Y por último un botón que permite acceder acceder a la ventana Watch .

 A u   , A   , -  -  M  d e  d e  h t  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS   SP  P    ,   -   M a  an   nu  u   a  a   l l   d  es  s  c   ca  a  r   r g    a  ad   do  o     d  es  s  d  d   e  e    h  tt  t p      : :/   //   /w  w   w  w   w  w   . c o  on  n   s   st  t r  r  u  u   c  c  g    e  ee  e  k  k   . c o  om   m/  /   

[7]

 

 

CREACION  D DE  P PROGRAMAS  

Estructura de un archivo AutoLISP

Sabemos que un archivo “.lsp” se compone de listas y símbolos cuyos objetos son los siguientes:  

Lista.- Que contiene: Paréntesis de apertura, espacios y paréntesis de cierre que constituyen el límite de acción de los

   

Elemento .- Cualquier componente de una lista. Símbolo.- Elementos sin un valor concreto como una variable.



programas.  



     

 

Enteros Valores numéricos sin punto decimal. Reales.-.-Valores numéricos con con punto decimal. Cadenas.- Valores de texto que deben de ir i r entre comillas.

Es importante que se conozcan los nombres de las variables de AutoCAD y los valores que se le pueden asignar, ya que puede ser de mucha utilidad. Función DEFUN : Definir Función de Usuario

Para establecer un nuevo programa como estructura en necesario definir sus elementos, como lo son el nombre del programa, argumentos e instrucciones instrucciones en AutoLISP. Las funciones de usuario cuyo nombre está formado con el prefijo C: es considerado por AutoCAD como un nuevo comando el cual puede ser llamado en cualquier momento, si se omite se genera una función externa que puede ser llamada desde otra función. (DEFUN C:curso() ( PRO PROMPT “B “Bii en enven venii dos dos al Cur so de Aut oLI SP”) SP”) ) 

 Aquí defun  indica   indica una nueva función de usuario, la cual va a tener como nombre curso  y   y que va a ser considera como un nuevo comando de AutoCAD por contar con el prefijo C:. Se debe tener muy en cuenta la organización de los paréntesis ya que el número de los paréntesis abiertos debe de ser igual al número de paréntesis cerrados.  Al escribir curso en la barra de comandos de AutoCAD, se mostrará lo siguiente:  Command: cu curr s o  Bienvenidos al Curso de AutoLISPnil Com Command:  

Función PROMPT : Escribir un texto en la Línea de Comandos de AutoCAD

Esta función permite escribir el texto especificado especificado en la línea de com comandos andos de AutoCAD y devuelve nil . Para evitar que se visualice nil  se  se puede utilizar antes del último paréntesis la función PRINC . Princ y prompt permiten hacer lo mismo, la diferencia es que princ acepta valores reales y prompt generalmente valores de textos. ( DEFUN C: pr ( ) (PROMPT “Bienvenidos al Curso de AutoLISP”) ( PR PRII NC) ) 

 Al ingresar el nuevo comando “curso”, PROMPT mostrará lo siguiente: Command: pr Bienvenidos al Curso de AutoLISP Command: and:

 A u   , A   , -  -   M  M a  d e  d e  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS  S   P   P ,   -  an   nu   ua  a  l  l  d  es  s  c   ca  a  r  r  g    a  ad  d   o  o     d  es  s  d   de  e   h   h t  tt  t  p    : :/   //   /w  w   w  w   w  w   . c o  on   ns  s  t  t r   ru  u   c  c  g    e  ee  e  k  k   . c o  om  m   /  /   

[8]

 

 

Función SETQ : Crear variables y atribuir valores 

Esta función nos permite crear una variable y atribuirle un valor especifico. ( DEFU EFUN N C: mca( ) (setq mivar “MTPCAZ”) ( prompt mi var) ( pr i nc ) )

En este ejemplo se está creando una variable llamada “mivar” y  se le esta asignando un valor de tipo string  (texto),  (texto), luego con la función prompt indicamos que nos muestre el valor de dicha  variable en la línea de comandos de AutoCAD. 

Función SETVAR : Establecer valor de una variable externa

Permite establecer el valor de una variable de AutoCAD. Se escribe para ello la función y luego dejando un espacio y entre comillas el nombre de la variable y por último el nuevo valor v alor a establecer. ( DEFUN C: sca( ) (setvar "cecolor" “5”) ( pr i nc ) ) 

Función GETVAR : Obtener el valor de una variable v ariable de AutoCAD 

Permite obtener el valor de una variable de AutoCAD. Se escribe para ello la función y luego dejando un espacio y entre comillas el nombre de la variable. La línea de comandos mostrará el valor de dicha variable.   ( DEFUN EFUN C: mca( ) (setq ca(getvar "cecolor"))  ( prompt ca) ( pr i nc ) ) “ca”    es el nombre de la nueva variable y la instrucción (getvar "cecolor  ")  ")   es el valor que se le asigna a la nueva variable, a su vez(getvar "cecolor  " ")  )   ha obtenido el valor valor de la variable de AutoCAD CECOLOR   que es  que el color azul (5). Por lo tanto el valor de ca es “5”.

Función COMMAND : Acceso a comandos de AutoCAD 

Permite llamar a los comandos de AutoCAD desde el programa. Las instrucciones que se ingresan en AutoLISP, son una secuencia de los datos que va solicitando el comando a medida que avanza su ejecución.. Los nombres de los comandos, las opciones (datos) y las variables de AutoCAD deben de ir i r entre comillas; pero no las variables creadas en AutoLISP. ( DEFUN FUN C: i be( ) (command "line" "0,0,0" "10,10" "") (command "zoom" "e") 

( pr i nc ) )   La primera instrucción de comando indica a AutoCAD que genere una linea desde d esde la coordenada 0,0,0 hasta



la coordenada 10,10.  10,10.    La segunda instrucción de comando le indica a AutoCAD que realice un zoom extents.  extents. 



- Las comillas que se encuentran solas significan presionar ENTER. 

 A u   , A   , -  -  M  d e  d e  h t  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS   SP  P    ,   -   M a  an   nu  u   a  a   l l   d  es  s  c   ca  a  r   r g    a  ad   do  o     d  es  s  d  d   e  e    h  tt  t p      : :/   //   /w  w   w  w   w  w   . c o  on  n   s   st  t r  r  u  u   c  c  g    e  ee  e  k  k   . c o  om   m/  /   

[9]

 

 

SEGUNDA  C CLASE  

ACCESO  Y Y  C CREACION  D DE  L LISTAS  

Función CAR : Primer elemento de una lista 

Obtiene el primer elemento de una lista, en el caso cas o de una coordenada X,Y,Z obtendrá el valor de X. ( def un c: c: ex( ) ( setq p1 p1 ' ( 5 10 20) ) (setq cl(CAR P1)) (p prr i nc c l ) ( pr i nc ) )

Se obtendrá: 5

- El apóstrofo o QUOTE permite ingresar una coordenada de un punto mediante una lista de valores sin utilizar la función LIST para construir una lista.

Función CADR : Segundo elemento de una lista  

Obtiene el segundo elemento de una lista, en el caso de una coordenada X,Y,Z obtendrá el valor de Y. ( def un c: c: ey( ) ( setq p1 p1 ' ( 5 10 20) ) (setq cl(CADR P1)) (p prr i nc c l ) ( pr i nc ) )

Se obtendrá: 10

Función CADDR : Tercer elemento de una lista 

Obtiene el tercer elemento de una lista, en el caso de una coordenada X,Y,Z obtendrá el valor de Z. ( def un c: ez( ) ( setq p1 p1 ' ( 5 10 20) ) (setq cl(CADDR P1)) (p prr i nc c l ) ( pr i nc ) )

Se obtendrá: 20

Función LIST : Crear lista de valores 

Esta función reúne las expresiones indicadas y genera con ellas una lista, se debe indicar al menos una expresión. Es más utilizada para definir variables de punto (coordenadas). ( de f un c :p1(list cl ( ) (setq 0.00 0.00)) (setq p2(list 10.00 10.00))  ( command and “l i ne ne” ” p1 p2 “” ) ( pr i nc ) )   Mediante LIST la variable p1 establece su valor en X=0.00 e Y=0.00.  Y=0.00.    Mediante LIST la variable p2 establece su valor en X=10.00 e Y=10.00.  Y=10.00.     Y por último la instrucción ( command “ l i ne” p1 p2 p2 “” ) genera una línea con el punto p1 como

  

punto inicial y p2 como punto final.  final. 

 A u   , A   , -  -   M  M a  d e  d e  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS  S   P   P ,   -  an   nu   ua  a  l  l  d  es  s  c   ca  a  r  r  g    a  ad  d   o  o     d  es  s  d   de  e   h   h t  tt  t  p    : :/   //   /w  w   w  w   w  w   . c o  on   ns  s  t  t r   ru  u   c  c  g    e  ee  e  k  k   . c o  om  m   /  /   

[10]

 

 

SOLICITAR  D DATOS  A AL  U USUARIO  

Función GETPOINT : Ingresar un punto 

La función GETPOINT obtiene y almacena las coordenadas X,Y,Z. de un punto, el cual se ingresa mediante el teclado o pikando un punto en pantalla.  Adicionalmente se puede indicar un mensaje solicitando el ingreso de un punto, éste mensaje aparecerá en la línea de comandos de AutoCAD. ( def un C: i p( ) ( set var " cmde decho" cho" 0)   (setq op(GETPOINT "Pike un punto:")) ( se sett q px(car op) op) ) ( se sett q p py(cad y(cadrr op) ) ( s et et q p1( l i s t px py py) ) ( command " poi nt " p1 p1)) ( set va varr " cmdecho decho"" 1) ( pr i nc ) ) * CMDECHO:  V ariable ariable de AutoCAD que desactiva la visualización visualización de los comando comandoss empleados en el programa: programa: 0 desactiva y 1 activa. 

Función GETINT : Ingresar un número entero 

Esta función obtiene un número entero ingresado por el usuario y lo almacena. En número entero debe estar entre –  32768 y 32767; si se ingresa un número no entero, ejm: 321.5 (decimal) se visualiza un mensaje de error y se solicita nuevamente el número entero. ( def un C: i e( ) (setq ne(GETINT "Ingrese un número: ")) ( pr i nc ne ne) ( pr i nc ) )

Función GETREAL : Ingresar un número real r eal 

Esta función obtiene un número real ingresado por el usuario y lo almacena. También se puede ingresar un número entero y se obtiene con sus decimal, ejm: 25 obtiene 25.0 ( def un C: i r ( ) (setq nr(GETREAL "Ingrese un número: ")) ( pr i nc nr nr ) )

( pr i nc )

Función GETDIST : Ingresar una distancia 

Esta función obtiene el valor de una distancia introducida, ingresándola mediante el teclado o definiendo un punto en pantalla por el usuario.

( def un C C:: od( od( )

(setq d1(GETDIST "Pike o ingrese el punto inicial:")) ( pr i nc "\ nDi st anci a = ") ( pr i nc d1 d1) ( pr i nc )



 A u   , A   , -  -  M  d e  d e  h t  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS   SP  P    ,   -   M a  an   nu  u   a  a   l l   d  es  s  c   ca  a  r   r g    a  ad   do  o     d  es  s  d  d   e  e    h  tt  t p      : :/   //   /w  w   w  w   w  w   . c o  on  n   s   st  t r  r  u  u   c  c  g    e  ee  e  k  k   . c o  om   m/  /   

[11]

 

 

Función GETSTRING : Ingresar una cadena de texto 

Esta función obtiene una cadena de texto ingresada por el usuario; si la cadena tiene más de 132 caracteres solo acepta los primeros 132. Se pueden ingresar cadenas sin o con espacios, depende de si se ingresa o no un modo (T); si se ingresa un modo se puede ingresar texto con espacios. ( def un C: os( ) (setq st(GETSTRING T "Ingrese un texto: ")) ( pr i nc "\ nEl t ext o escri t o es = ") (p prr i nc st st ) ( pr i nc ) )

Función INITGET : Establecer modos para las funciones GET... 

Especifica el modo en recibirán los datos las funciones GET... y estos son: 1  2  4  8  32  128 

No admite enter como respuesta. No admite valor cero. No admite valores negativos. No verifica límites aunque estén activados. Dibuja la línea o el rectángulo elásticos en forma discontinua. Permite ingresar datos por el teclado.

Se puede ingresar uno o se pueden sumar varios de ellos: ( def un C: i n( ) ((INITGET set q ne( 1) GETI ETI NT "I ngr ese un númer o: " ) )   ( pr i nc ne ne) ( pr i nc ) )

En este ejemplo ( INITGET INITGET 1 ) no permitirá que se ingrese un valor nulo (enter). 

Función GETKWORD : Solicitar palabras clave 

Permite ingresar al usuario palabras clave o abreviaturas ante una serie de opciones o alternativa alternativas. s. Las respuestas posibles se deben especificar previamente con la función INITGET, si se ingresa palabras clave diferentes GETKWORD solicita la palabra otra vez. ( def un C: i pc() ((setq I NI TGp(GETKWORD ET 1 " Si No""Le ) gusta AutoLisp [Sí o No]:")) ( pr i nc p p)) ( pr i nc ) ) 

Reconocerá que SI si se ingresa:   s ó S ó si ó SI

 A u   , A   , -  -   M  M a  d e  d e  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS  S   P   P ,   -  an   nu   ua  a  l  l  d  es  s  c   ca  a  r  r  g    a  ad  d   o  o     d  es  s  d   de  e   h   h t  tt  t  p    : :/   //   /w  w   w  w   w  w   . c o  on   ns  s  t  t r   ru  u   c  c  g    e  ee  e  k  k   . c o  om  m   /  /   

[12]

 

 

BLOQUES  D DE  P PROGRAMACION  

TERCERA  C CLASE

Función IF : Condicional simple 

nulo. 

La función IF evalúa una expresión condicional y si esta cumple dicha condición, entonces el resultado es diferente de ( def un C: cf 2( ) ( se sett q v1( get r eal ( se sett q v v2 2( get r eal (if (= v1 v2) ( pr i nc "Son "Son ( pr i nc "Son "Son ) ( pr i nc ) )

"I ngr ese un val or : ") ) "\ nI ngr ese u un n se segundo va val or : ") ) val or es i gual es") va val or es di di f er ent es")

Si v1 y v2 son iguales presenta "Son valores iguales". Si v1 y v2 son diferentes presenta "Son valores diferentes".   Función COND : Condicional múltiple 

Permite establecer una serie de condiciones, especificando acciones de acuerdo si se cumplen las condiciones. Se pueden establecer múltiples condiciones y acciones como opciones tenga para el usuario. ( def un C: C: au( ) ( I NI TGET 1 " Si No Mucho ucho Poco" Poco")) ( set q p( GET ETK KWORD " Le gust a Aut oLi sp [ Si / No/ Mucho/ ucho/ Poco] Poco] : " ) ) (COND ( (= p "Si") (princ "Si le gusta. Muy bien..") ) ( (= p "No") (princ "No le gusta. Que pena..") ) ( (= p "Mucho") (princ "Mucho. Siga aprendiendo..") ) ( (= p "Poco") (princ "Poco. Interésese mas..") ) ) ( pr i nc ) )

Función PROGN : Secuencia consecutiva 

 Admite como argumentos todas las expresiones que se indiquen y las evalúa secuencialmente. secuencialmente. Generalmente utilizamos PROGN en la función IF para que pueda ser posible ejecutar varias acciones si se cumple una condición o no. ( def un C: C: pr ( ) ( pr i nc " El El val or i ni c i al es 1 10 0" ) ( se sett q ci 1( get r eal "\ nI ngr ese un val or : ") ) ( i f ( = c i 1 10) (PROGN ( pr i nc "\ nLos Los va val or es son son i gual es") ( set q ab “ CAZMTP”) ( Pr i nc ab) ) ( pr i nc "\ nSon di f er ent es") ) ( pr i nc ) )

 A u   , A   , -  -  M  d e  d e  h t  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS   SP  P    ,   -   M a  an   nu  u   a  a   l l   d  es  s  c   ca  a  r   r g    a  ad   do  o     d  es  s  d  d   e  e    h  tt  t p      : :/   //   /w  w   w  w   w  w   . c o  on  n   s   st  t r  r  u  u   c  c  g    e  ee  e  k  k   . c o  om   m/  /   

[13]

 

 

Función WHILE : Repetir expresión según condición 

Esta función permite repetir acciones mientras se cumpla una condición dada que sirve como elemento de control de la repetitiva. Mientras la condición se cumpla o sea verdadera (T)todas (T) todas las acciones se ejecutan, hasta que la condición resulte falsa (nil). ( def un C: wh( ) ( set var var " cmdecho decho"" 0) ( se sett q vf 0) ( se sett q nl ( get r eal "\ nI ngr ese un númer o l í mi t e: ") ) (while (< vf nl) (( se set tq ptd( g po t "\" n ca com man and "e t text ex t i" npt " Ub " i" caci vfci) ón del t ext o: ") ) ( se sett q vf ( + vf 10) ) ( se ett q vf vf )  

)  ( set var var " cmdecho decho"" 1) ( pr i nc ) )

OPERACIONES  M MATEMATICAS  Y Y  L LOGICAS   Función + : Mas 

Esta función devuelve la suma de los valores especificados. ( def un C: C: mas( ) ( pr i nc " \ nSum Sumar númer os" ) ( setq n1( getr ea eall " \ nI ngr ese el pr i mer nú númer o: ") ) ( setq n n2 2( getr ea eall " \ nI ngr ese e ell segu segundo nú número: " ) )

(setq n3 (+ n1 n2)) ( pr i nc n3 n3) ( pr i nc ) ) Función - : Menos 

Esta función devuelve la resta de los valores especificados. es pecificados. ( def un C: menos( enos( ) ( pr i nc " \ nRestar números") ( setq n1( getr ea eall " \ nI ngr ese el pr i mer nú númer o: ") ) ( setq n n2 2( getr ea eall " \ nI ngr ese e ell segu segundo nú número: " ) )

(setq n3 (- n1 n2)) ( pr i nc n3 n3) ( pr i nc ) )

 A u   , A   , -  -   M  M a  d e  d e  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS  S   P   P ,   -  an   nu   ua  a  l  l  d  es  s  c   ca  a  r  r  g    a  ad  d   o  o     d  es  s  d   de  e   h   h t  tt  t  p    : :/   //   /w  w   w  w   w  w   . c o  on   ns  s  t  t r   ru  u   c  c  g    e  ee  e  k  k   . c o  om  m   /  /   

[14]

 

 

Función * : Multiplicar 

Devuelve el resultado de multiplicar de los valores especificados. ( def un C C:: mul t i ( ) ( pr i nc " \ nMul t i pl i car car númer os") ( setq n1( get r eal eal " \ nI ngr ese el pr i mer nú númer o: " ) ) ( setq n2 n2( get r eal eal " \ nI ngr ese el el segu segundo nú número: " ) )

(setq n3 (* n1 n2)) ( pr i nc n3 n3) ( pr i nc ) )

Función / : Dividir 

Devuelve el resultado de dividir de los valores especificados. ( def un C: di v( ) ( pr i nc "\ nDi vi di r nú núm mer os") ( setq n1( get r eal eal " \ nI ngr ese el pr i mer nú númer o: " ) ) ( setq n2 n2( get r eal eal " \ nI ngr ese el el segu segundo nú número: " ) )

(setq n3 (/ n1 n2)) ( pr i nc n3 n3) ( pr i nc ) )

Función = : Igual 

Compara los valores especificados. Si son iguales devuelve verdadero (T), de lo contrario devuelve falso (nil). ( def un C: i gu( ) ( setq n1 n1( get r eal eal " \ nI ngr ese un un númer o: ") ) ( se sett q n2( get r eal "\ nI ngr ese ot ot r o nú númer o: ") ) ( i f (= n1 n2) ( PROG PROGN ( pr i nc "\ nLo Los s va val or es son son i gual es. ") ) ( pr i nc "\ nLos Los va val or es son son di f er ent es. ") ) )

( pr i nc )

 A u   , A   , -  -  M  d e  d e  h t  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS   SP  P    ,   -   M a  an   nu  u   a  a   l l   d  es  s  c   ca  a  r   r g    a  ad   do  o     d  es  s  d  d   e  e    h  tt  t p      : :/   //   /w  w   w  w   w  w   . c o  on  n   s   st  t r  r  u  u   c  c  g    e  ee  e  k  k   . c o  om   m/  /   

[15]

 

 

Función /= : Diferente 

Compara los valores especificados. Si son diferentes devuelve verdadero (T), y si son iguales devuelve falso (nil). ( def un C: di f ( ) ( setq n n1 1( getr ea eall " \ nI ngr ese u un n númer o: " ) ) ( se sett q n2( get r eal "\ nI ngr ese ot ot r o nú númer o: ") ) ( i f (/= n1 n2) ( PROG PROGN ( pr i nc "\ nLos Los v va al or es son son di f er ent es. ") ) )

( pr i nc "\ nLo Los s va val or es so son n i gual es. ")

( pr i nc ) )

Función AND: Y lógico 

Devuelve verdadero si ninguna de las expresiones es falsa. Se deben de cumplir todas las expresiones. ( def un C: yc( ) ( setq n n1 1( getr ea eall " \ nI ngr ese u un n númer o: " ) ) ( se sett q n2( get r eal "\ nI ngr ese ot ot r o nú númer o: ") ) ( i f (AND (/= n1 n2) (< n1 n2))   ( PRO PROG GN ( pr i nc "\ nLos Los va val or es son son di f er ent es y  el 1er o menor. enor. ") ) ( pr i nc "\ nLos Los v va al or es son son i gual es o  el 1ero es mayor. ayor. ") ) ( pr i nc ) )

Función OR: O lógico 

Devuelve verdadero si una expresión de un conjunto dado es verdadera. Es suficiente s uficiente que se cumpla una expresión. ( def un C: oc( ) ( setq n n1 1( getr ea eall " \ nI ngr ese u un n númer o: " ) ) ( se sett q n2( get r eal "\ nI ngr ese ot ot r o nú númer o: ") ) ( i f (OR (> n1 n2) (= n1 n2))   ( PRO PROG GN ( pr i nc "\ nLos Los v va al or es son son i gual es o  el 1ero mayo yorr . " ) ) ( pr i nc "\ nEl pr i mer val val or i ngr esado sado es menor. ") ) ( pr i nc ) )

 A u   , A   , -  -   M  M a  d e  d e  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS  S   P   P ,   -  an   nu   ua  a  l  l  d  es  s  c   ca  a  r  r  g    a  ad  d   o  o     d  es  s  d   de  e   h   h t  tt  t  p    : :/   //   /w  w   w  w   w  w   . c o  on   ns  s  t  t r   ru  u   c  c  g    e  ee  e  k  k   . c o  om  m   /  /   

[16]

 

 

Función NOT: No lógico 

Devuelve verdadero si una expresión evaluada es falsa. ( def un c : nt ( ) ( setq n1 n1( get r eal eal " \ nI ngr ese un un númer o: ") ) ( se sett q n2( get r eal "\ nI ngr ese ot ot r o nú númer o: ") ) ( i f (NOT (< n1 n2))  ( PRO PROG GN ( pr i nc "\ nEl pr i mer val val or es mayor . ") ) ) ( pr i nc )

( pr i nc "\ nEl pr i mer val val or es menor . ")

) Función ABS : Valor Absoluto 

Devuelve el valor absoluto del número especificado. ( def un C: va( ) ( set q n1( get r ea eall " \ nI ngr ese un número qu que ser ser á rest ado ado 1 10 00: " ) ) ( setq n3 n3 ( - n1 100) ) ( pr i nc “\ nResu sull t ado: ”) ( pr i nc n3 n3)

(setq n4 (ABS n3)) ( pr i nc “\ nval or abso absoll ut o: ”) ( pr i nc n4 n4) ( pr i nc ) ) Función SQRT : Raíz Cuadrada 

Devuelve la raíz cuadrada un número especificado. ( def un c : r a() ( se sett q n1( get r eal "\ nI ngr ese el númer o a ca call cu cull ar l a raí raí z: ") )

(setq rai (SQRT n1)) ( pr i nc “\ nSu r aí z cua cuadr ada es: ”) ( pr i nc rai ) ( pr i nc ) ) Función EXPT : Exponente 

Devuelve el resultado de elevar a una potencia especifica un número especificado. ( def un C C:: exp xpo o( ) ( se sett q n1( get r eal "\ nI ngr ese el númer o a cal cal cul cul ar : ") ) ( se sett q po( get r eal "\ nI ngr ese el exponent e: ") )

(setq ex (EXPT n1 po)) ( pr i nc “\ nEl r es ul ul t ado es : ”) ( pr i nc ex ex) ( pr i nc ) ) Función ANGLE : Angulo definido por dos puntos  

Esta función obtiene el ángulo que se determina mediante dos puntos:

 A u   , A   , -  -  M  d e  d e  h t  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS   SP  P    ,   -   M a  an   nu  u   a  a   l l   d  es  s  c   ca  a  r   r g    a  ad   do  o     d  es  s  d  d   e  e    h  tt  t p      : :/   //   /w  w   w  w   w  w   . c o  on  n   s   st  t r  r  u  u   c  c  g    e  ee  e  k  k   . c o  om   m/  /   

[17]

 

 

El ángulo se determina de la siguiente manera: Se toma como línea imaginaria base, el eje X y como siguiente línea imaginaria, el punto inicial y el punto final ingresados por el usuario. ( def un C: C: an( ) ( se sett q pa( get poi nt "Pi ke o i ngr ese el punt o i ni ci al : ") ) ( se sett q pa2( get poi nt "Pi ke o i ngr ese el punt o f i nal : ") ) (setq ang (ANGLE pa pa2)) (setq ang (/(* 180 ang)PI))  ( pr i nc "\ nAngul o: ") ( pr i nc an ang) ( pr i nc ) )

La operación que se hace después de la función ANGLE permite transformar el valor obtenido en grados. Función DISTANCE : Distancia entre dos puntos 

Esta función devuelve la distancia entre dos puntos. ( def un C: ds( ) ( se sett q p1( get poi nt "Pi ke o i ngr ese el punt o i ni ci al : ") ) ( se sett q p2( get poi nt "Pi ke o i ngr ese el punt o f i nal : ") ) (setq dsp (DISTANCE p1 p2)) ( pr i nc "\ nDi s t anc anc i a: ") ( pr i nc dsp dsp)) ( pr i nc ) )

 A u   , A   , -  -   M  M a  d e  d e  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS  S   P   P ,   -  an   nu   ua  a  l  l  d  es  s  c   ca  a  r  r  g    a  ad  d   o  o     d  es  s  d   de  e   h   h t  tt  t  p    : :/   //   /w  w   w  w   w  w   . c o  on   ns  s  t  t r   ru  u   c  c  g    e  ee  e  k  k   . c o  om  m   /  /   

[18]

 

 

CONTROL DE CADENAS DE TEXTO

CUARTA  C CLASE   Función STRCASE : Cambiar a Mayúsculas o Minúsculas 

Esta función cambia una cadena especifica en mayúsculas o minúsculas dependiendo del valor de una opción. Si la opción está presente (T), la cadena de texto se convierte en minúscula o de lo contrario se convierte en mayúscula. ( def def un C: mn( ) ( se sett q t m( get st r i ng "I ngr ese un t ext o: ") ) ( set q t ma(STRCASE tm))   ; Convierte a mayúscula ( pr i nc t ma) ( set q t mi (STRCASE tm T))   ; Convierte a minúscula  ( pr i nc t mi ) ( pr i nc ) ) Función STRCAT : Concatenar cadenas 

Devuelve una cadena que es la suma de todas las cadenas indicadas, éstas deben ser textos o variables con valor de texto de lo contrario se produce un error. ( def un C C:: sc() ( se sett q t 1( get st r i ng ( se sett q t 2( get st r i ng ( se sett q t 3( get st r i ng (setq st (STRCAT (p prr i nc st st ) )

"\ nI ngr ese t ext o "\ nI ngr ese t ext o "\ nI ngr ese t ext o "Nueva cadena: "

1: 2: 3: t1

") ) ") ) ") ) t2 t3) )  

( pr i nc )

Función SUBSTR : Subcadena de una cadena

Esta función devuelve una parte parte de la cadena especificada para ell elloo se debe ingresar el número de carácter de inicio y el número de caracteres que contendrá la nueva cadena.  ( def un C: sb sb(( ) ( se sett q t ext o( get st r i ng "\ nI ngr ese un t ext o: ") ) ( setq n ntt (SUBSTR texto 2 3) )   ( se sett q i c( st r ca catt "De "Devuel ve: "  nt " Ca Car act er de i ni ci o 2 y l ongi t ud de 3 ca carr act er es. " ) ) ( pr i nc i c ) ( pr i nc ) ) Función STRLEN : Longitud de una cadena

Esta función devuelve un número que es la longitud total de una cadena especificada o de varias cadenas concatenadas. ( def un C: s l ( ) ( se sett q t xt ( get st r i ng "\ nI ngr ese un t ext o: ") ) ( s et et q l on(STRLEN txt))   ( s et et q l on( r t os l on) ) ( se sett q l ont ( st r cat cat "Lo "Lon ngi t ud de " txt ": " lon  " ca car act act er es. es. ") ) ( pr i nc l ont ) ( pr i nc ) )

 A u   , A   , -  -  M  d e  d e  h t  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS   SP  P    ,   -   M a  an   nu  u   a  a   l l   d  es  s  c   ca  a  r   r g    a  ad   do  o     d  es  s  d  d   e  e    h  tt  t p      : :/   //   /w  w   w  w   w  w   . c o  on  n   s   st  t r  r  u  u   c  c  g    e  ee  e  k  k   . c o  om   m/  /   

[19]

 

 

Función WCMATCH : Comparar una cadena con un patrón o filtro

Esta función compara una cadena indicada con un filtro y si la cadena cumple con el filtro indicado devuelve  verdadero (T), en caso contrario nil. Para construir un filtro es necesario un conjunto de caracteres especiales o comodines que deberán estar dentro de unas comillas.  ( de deff un C: wm( ) ( se sett q t xt ( get st r i ng "\ nI ngr ese un t ext o: ") ) ( i f (WCMATCH txt "A*,a*") 

; Si es verdadero: ( pr i nc "El "El t ext o que escri bi ó i ni ci a con con A o a. ")

;( Si falso: presi n c "El "El t ext o que escri bi ó i ni ci a di f er ent e de A o a. ") ) ( pr i nc ) )

En este ejemplo  WCMATCH  compara la variable txt que contiene el texto  ingresado, con el  patrón "A*,a*",  si el texto empieza con A o con a, devuelve verdadero. Otros comodines: #  Busca cualquier digito numérico. @  Busca cualquier carácter alfabético. .  Busca cualquier carácter no alfanumérico. *  Busca cualquier secuencia de carácter. ?  Indica un caracter. (WCMATCH “Barco” “-*q*”)  T. - 

Busca si la cadena no contiene una letra especificada.

Función ALERT : Cuadro de mensaje

Muestra un cuadro de mensaje con el texto especificado. Se pueden escribir varias líneas de texto incluyendo el código “\n” antes de la nueva linea. ( DEF EFU UN C: al ( ) (ALERT "Bienvenidos al Curso de AutoLISP\nProfesor: AutoLISP\nProfesor: \nMario Torres Pejerrey") ( PRI PRI NC) )

 A u   , A   , -  -   M  M a  d e  d e  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS  S   P   P ,   -  an   nu   ua  a  l  l  d  es  s  c   ca  a  r  r  g    a  ad  d   o  o     d  es  s  d   de  e   h   h t  tt  t  p    : :/   //   /w  w   w  w   w  w   . c o  on   ns  s  t  t r   ru  u   c  c  g    e  ee  e  k  k   . c o  om  m   /  /   

[20]

 

 

CONVERSION  D DE  T TIPO  D DE  D DATOS  

Función FLOAT : Convertir un número ENTERO en valor REAL R EAL

Convierte el número especificado en número real. ( def un C C:: c f ( ) ( setq ne ( get i nt " \ nI ngr ese un númer o: ") ) (setq nr(FLOAT ne)) ( pr i nc nr nr ) ( pr i nc ) ) Función ITOA : Convertir un número ENTERO en valor TEXTO

Convierte el número especificado en una cadena de texto. ( def un C: c i ( ) ( setq ne ( geti nt " \ nI ngr ese un número: " ) ) (setq nr(ITOA ne)) ( setq cad cad(( st r ca catt " \ nEl númer o es ahora ahora el el t ext ext o: " nr) ) ( pr i nc cad cad) ( pr i nc ) )

Función RTOS : Convertir un número REAL en valor TEXTO

Convierte un número real (con decimales) especificado, en una cadena de texto. Además se le debe especificar dos argumentos que son el formato de número y el número de decimales del nuevo valor. ( def un C: cr( ) ( set q ne ( get r ea eall " \ nI ngr ese un número con con 3 deci mal es: " ) ) (setq nr(RTOS ne 2 2)) ( setq cad cad(( st r ca catt " \ nEl númer o es ahora ahora el el t ext ext o: " nr) ) ( pr i nc cad cad) ( pr i nc ) )

Se ha especificado que el nuevo texto tenga un formato decimal y tenga dos decimales: (RTOS ne 2 2) El tipo de unidades se puede encontrar llamando al comando DDUNITS desde AutoCAD. Función ANGTOS : ANGTOS : Convertir un ANGULO en valor TEXTO

Convierte ángulo especificado el cual debe estar radianes, dos argumentos queelson el formato de modo y precisión del en nuevo valor.en una cadena de texto. Además se le debe especificar ( def un C: ca ca(( ) ( setq ne ne ( getang etangl e " \ nI ngr ese un angul o ent ero: " ) ) (setq nr(ANGTOS ne 1 3)) ( se sett q cad cad( st r ca catt "\ nEl ángul o i ngr esa sad do es es aho ahor a el el t ext o: " nr) ) ( pr i nc cad cad) ( pr i nc ) )

Se ha especificado que el nuevo texto tenga un formato grados/minutos/segundos y tenga tres decimales: (ANGTOS ne 1 3)

 A u   , A   , -  -  M  d e  d e  h t  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS   SP  P    ,   -   M a  an   nu  u   a  a   l l   d  es  s  c   ca  a  r   r g    a  ad   do  o     d  es  s  d  d   e  e    h  tt  t p      : :/   //   /w  w   w  w   w  w   . c o  on  n   s   st  t r  r  u  u   c  c  g    e  ee  e  k  k   . c o  om   m/  /   

[21]

 

 

Función ATOI : Convertir un TEXTO en número ENTERO

Convierte un texto especificado en número entero. Si el número con valor de texto contiene decimales o adicionalmente otro texto (189.25K&^*%) al convertirse en número entero estos se truncan (189). ( def un C: t e( ) ( se sett q t xt ( get st r i ng "\ nI ngr ese un númer o: ") ) (setq nr(ATOI txt)) ( pr i nc nr nr ) ( pr i nc ) )

;Valor de texto.

Función ATOF : Convertir un TEXTO en número REAL

Convierte un texto especificado en un número real. Si el número con valor de texto contiene decimales o adicionalmente otro texto (189.2565K&^*%) (189.2565K&^*%) al convertirse en número real solo los demás ttextos extos se truncan (189.2565). ( def un C: t r ( ) ( se sett q t xt ( get st r i ng "\ nI ngr ese un númer o: ") ) (setq nr(ATOF txt)) ( pr i nc nr nr ) ( pr i nc ) )

;Valor de texto.

Función ANGTOF : Convertir un TEXTO en ANGULO

Convierte un texto especificado en un ángulo. Si el número con valor de texto contiene decimales o adicionalmente otro texto (180.25K&^*%) produce un valor de falso (nill), pero si solo tiene decimales los acepta. ( def un C: t a( ) ( se sett q t xt ( get st r i ng "\ nI ngr ese un númer o: ") ) (setq nr(ANGTOF txt)) ( pr i nc nr nr ) ( pr i nc ) )

;Valor de texto.

El valor devuelto es siempre un ángulo en radianes. Función CVUNIT : Convertir un valor de un tipo de unidad a otro

Convierte el valor especificado de un tipo de unidad especificada a otro tipo de unidad especificada. Las unidades se indican con sus nombres en inglés y como cadenas de texto, es decir entre comillas.   ( def un C: pm ( ) ( pr i nc "\ nConver ver t i r Pul gadas a Met r os. ") ( se sett q val or ( get di st "\ nEnt r e va val or en Pul gadas: ") ) (setq cpm (CVUNIT valor "inches" "meters")) ( se sett q pul ( r t os va val or 2 4) ) ( se sett q met ( r t os cpm cpm 2 4) ) ( pr i nc ( st r ca catt "\ n" pul pul " pul pul gada( s) = " met " met r os. ") ) ( pr i nc ) )

 También se pueden utilizar las siguientes unidades: "hour" "second", "degree" "radian", "celsius" "kelvin".

 A u   , A   , -  -   M  M a  d e  d e  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS  S   P   P ,   -  an   nu   ua  a  l  l  d  es  s  c   ca  a  r  r  g    a  ad  d   o  o     d  es  s  d   de  e   h   h t  tt  t  p    : :/   //   /w  w   w  w   w  w   . c o  on   ns  s  t  t r   ru  u   c  c  g    e  ee  e  k  k   . c o  om  m   /  /   

[22]

 

 

QUINTA  C CLASE  

 VERIFICACION DE VALORES

Función LISTP : Detectar una lista

 Verifica si el elemento indicado es una lista, si lo es devuelve T, si no devuelve nil. nil. ( def un c : dl ( ) ( se ett q l s t 0 0)) ( se sett q ent ( get poi nt “\ nPi ke un punt o: “) ) ( i f (LISTP ent) ( pr i nc "\ " \ nS una l i s a. "")) Nio es un stt a. ) ( i f (LISTP lst)  ( pr i nc " \ nSi es un una l i s t a. a. " ) ( pr i nc "\ nNo es un una l i st a. ") ) ( pr i nc ) ) Función MINUSP : Detectar valor numérico negativo

 Verifica si el elemento indicado contiene un valor valor numérico negativo, si lo es devuelve T, si no devuelve nil. nil. ( def un c: dvn( vn( ) ( se sett q v( get r eal "\ nI ngr ese un val or posi t i vo o negat i vo: ") ) ( i f (minusp v) ( pr i nc "\ nVal or ne negat i vo. ") ( pr i nc " \ nVal or pos i t i vo. " ) ) ( pr i nc ) ) Función ZEROP : Detectar valor numérico igual a 0

 Verifica si el elemento indicado contiene un valor valor numérico igual a 0, si lo es devuelve T, si no devuelve nil. ( def un c: dvc( vc( ) ( se sett q v( get r eal "\ nI ngr ese un val or 0 o di di f er ent e: ") ) ( i f (ZEROP v)  ( pr i nc "\ nVal or 0. 0. ") ( pr i nc "\ nVal or di f er ent e de 0. ") ) ( pr i nc ) )  Función NULL : Detectar valor nulo

 Verifica si el elemento indicado contiene un valor nulo (sin valor), si lo es devuelve T, si no devuelve nil. ( def un c : nl l ( ) ( i f (NULL a) ( pr og ogn n ( pr i nc "\ nEl val or a es nu nul o. ") ( se sett q a "Va "Val or ") ) ( pr i nc "\ nEl val or a es es ah ahor a di di f er ent e de de nu nul o. ") ) (p prr i nc ) )   ( se ett q a ni l ) . Si deseamos dar un valor nulo a una u na variable debemos de crearla con nilA Ovalor PER CIONES  C CON  A ARCHIVOS    A u   , A   , -  -  M  d e  d e  h t  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS   SP  P    ,   -   M a  an   nu  u   a  a   l l   d  es  s  c   ca  a  r   r g    a  ad   do  o     d  es  s  d  d   e  e    h  tt  t p      : :/   //   /w  w   w  w   w  w   . c o  on  n   s   st  t r  r  u  u   c  c  g    e  ee  e  k  k   . c o  om   m/  /   

[23]

 

 

 

Función OPEN : Abrir un archivo

La función OPEN abre un archivo para leer o escribir datos. Se le indica a OPEN la ruta completa en caso de no estar en un directorio de trabajo de AutoCAD, el nombre del archivo y la extensión del mismo y luego un modo que indicará una manera de abrirlo. Estos modos son:  “r”  “w”  “a” 

 Abre el archivo especificado como solo solo lectura. Si el archivo no existe devuelve nil.  Abre el archivo especificado para escritura. Si el archivo no existe la función OPEN primero lo crea. Si el archivo existe, este método reemplaza al anterior.   Abre el archivo y se sitúa en el final para ir añadiendo datos. Si el archivo no existe existe se crea.   ( def un c : ar ( ) (setq ar(OPEN "c:\\temp\\MTPCAZ.xls" "c:\\temp\\MTPCAZ.xls" "w")) ( pr i nc ) )

Función CLOSE : Cerrar un archivo

La función CLOSE cierra un archivo abierto por la instrucción OPEN, es necesario cerrar un archivo abierto para que se actualice con los cambios generados (escritura). ( def un c: ac( ) ( setq ar( op open en " c: \ \ t emp\ \ MTPC TPCAZ. xl s" " w" ) ) (CLOSE ar) ( pr i nc ) )

Función FINDFILE : Buscar un archivo

Esta función busca un archivo especificado, en las rutas de los archivos de soporte de AutoCAD, especificados en el cuadro de diálogo Options. Si no lo encuentra devuelve nil, de lo contrario devuelve la ruta completa de ese archivo. Si se desea averiguar si existe o no un archivo en una ruta especificada basta con ingresar FINDFILE seguido de la ruta de acceso. ( def un c : f n( ) (setq bs (FINDFILE "MTPCAZ.xls")) ( pr i nc bs bs ) ( pr i nc ) )

 A u   , A   , -  -   M  M a  d e  d e  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS  S   P   P ,   -  an   nu   ua  a  l  l  d  es  s  c   ca  a  r  r  g    a  ad  d   o  o     d  es  s  d   de  e   h   h t  tt  t  p    : :/   //   /w  w   w  w   w  w   . c o  on   ns  s  t  t r   ru  u   c  c  g    e  ee  e  k  k   . c o  om  m   /  /   

[24]

 

 

Función GETFILED : Cuadros de diálogo para gestión de archivos

Carga un cuadro de diálogo del entorno Windows para recuperar el valor de una ruta señalada. Seguido del nombre de la función GETFILED se debe especificar el título del cuadro de diálogo, el nombre de archivo por defecto, luego la extensión por defecto de los archivos a buscar y por último el modo correspondiente. Estos modos son:  “1”  “4”  “8” 

Guarda un archivo. El archivo ingresado deberá ser nuevo. nuevo. Si ya existe, existe, se mostrará un mensaje de advertencia y en caso de aceptar el archivo se sobrescribirá. Permite abrir un archivo con extensión diferente a la especificada como por defecto. Abre un archivo y se le indica un archivo con otra extensión a la especificada en por defecto no lo acepta.  ( def un c : gf ( ) (setq bs (GETFILED "Capturar ruta" ( pr i nc bs bs ) ( pr i nc ) ) 

"MTPCAZ" "xls" "xls" 8))

Función PRIN1 : Escribir texto

Escribe un texto en pantalla si no se especifica un archivo, de lo contrario crea un a línea de texto en dicho archivo; la nueva línea se crea entre comillas (“ “). ( def un c: ed( ) ( se sett q bs ( get f i l ed "Cr "Cr ear y escri bi r dat os" " MTPCAZ" " xl s" 1)) ( setq a arr ( op open en bs " w" ) )

(PRIN1 "Curso particular" ar) ( c l os e ar ) ( pr i nc ) )

Función PRINT : Escribir texto en una nueva línea

Función idéntica a PRIN1. La diferencia es que salta a una nueva línea antes de escribir es cribir el archivo. ( def un c: en( ) ( se sett q bs ( get f i l ed "Ab "Abr i r y escri escri bi r dat os" " MTPCAZ" "xl s" 8)) ( setq a arr ( op open en bs " w" ) ) (PRIN1 "Curso particular" ar) (PRINT "de AutoCAD 2000" ar) (PRINT "San Pedro 377 San Andrés" ar) ( c l os e ar ) ( pr i nc ) )

 A u   , A   , -  -  M  d e  d e  h t  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS   SP  P    ,   -   M a  an   nu  u   a  a   l l   d  es  s  c   ca  a  r   r g    a  ad   do  o     d  es  s  d  d   e  e    h  tt  t p      : :/   //   /w  w   w  w   w  w   . c o  on  n   s   st  t r  r  u  u   c  c  g    e  ee  e  k  k   . c o  om   m/  /   

[25]

 

 

Función READ-LINE : Leer una línea de texto

Lee una línea de texto desde un archivo y devuelve el valor. Si se sigue llamando a READ-LINE, continúa leyendo las líneas siguientes. ( def un c : el ( ) ( se sett q bs ( get f i l ed "Ab "Abr i r y l eer dat os" " MTPC PCA AZ" " xl s" 8)) (setq ar (open bs "r")) (setq ln(READ-LINE ar)) (setq ln (strcat ln "\n" (READ-LINE ar))) (setq ln (strcat ln "\n" (READ-LINE ar)))  ( pr i nc l n) ( c l os e ar ) ( pr i nc ) )

Función WRITE-LINE : Escribir una línea de texto

Escribe una nueva línea en el archivo. Se diferencia de PRINT porque la nueva línea creada en el archivo no lleva comillas. ( def un c: wl ( ) ( se sett q bs ( get f i l ed "Ab "Abr i r y escri bi r dat os" " MTPN" " xl s" 8 8)) ) ( setq a arr ( open bs " w") ) (WRITE-LINE "Curso particular" ar) (WRITE-LINE "de AutoCAD 2000" ar) (WRITE-LINE "San Pedro 377 San Andrés" ar) ( c l os e ar ) ( pr i nc ) )

Función TEXTSCR : Cambiar a la ventana de texto

 Visualiza la ventana de texto de AutoCAD es el equivalente a presionar la tecla F2. ( def un c : vt ( ) (TEXTSCR) ( pr i nc "Cam "Cambi o a ven vent an ana a de de t ex extt o. " ) ( pr i nc ) )

FunciónCambia GRAPHSCR : Cambiar la pantalla gráfica a la pantalla gráfica de aAutoCAD. ( def un c: ag( ) (GRAPHSCR) ( pr i nc "Ca "Cambi o a pant al l a gr áf i ca. ca. ") ( pr i nc ) )

 A u   , A   , -  -   M  M a  d e  d e  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS  S   P   P ,   -  an   nu   ua  a  l  l  d  es  s  c   ca  a  r  r  g    a  ad  d   o  o     d  es  s  d   de  e   h   h t  tt  t  p    : :/   //   /w  w   w  w   w  w   . c o  on   ns  s  t  t r   ru  u   c  c  g    e  ee  e  k  k   . c o  om  m   /  /   

[26]

 

 

SEXTA  C CLASE  

ACCESO A LA BASE DE DATOS DE LAS ENTIDADES 

Estructura de la base de datos de AutoCAD

 Toda la información de las entidades de un dibujo dibujo constituye la base de datos de AutoCAD. Cada entidad esta creada en base a una lista, que contiene sublistas de asociaciones; cada asociación contiene dos valores separados por un punto: El primer valor contiene el tipo de propiedad, y el segundo s egundo el valor de dicha propiedad. ( def un c: bs( ) ( se sett q p1 p1( get poi nt "Pr i mer punt o") ) ( set q p2( get poi nt p1 " \ nSeg egu undo p pu unt o") ) ( comman and d " l i ne ne"" p1 p2 " " ) ( ENTG ENTGET( EN ENTLA TLAST) ST) ) ) 

El comando bs   crea una línea y luego nos muestra su base de datos la cual contiene sus propiedades (códigos) y sus respectivos valores.

CODIGOS COMUNES

 TIPO DE DATO

-1 0 6

El nombre de la entidad. El tipo de entidad. El nombre del tipo de línea. Si no aparece es BYLAYER.

7 8 39 62 210

El nombre del estilo de texto. El nombre de capa. El valor de altura de objeto. Si no aparece es 0. El número de color. Si no aparece es BYLAYER. El vector de orientación de la altura del objeto en 3D.

OTROS CODIGOS

1 2 10 11 12 13 40 41

OTROS

 TIPO DE DATO PARA UNA ENTIDAD ENTIDAD  VALOR

TEXTO, ATRIBUTO: Contenido de texto. BLOQUE: Nombre, ATRIBUTO: Tag. LÍNEA: Punto inicial, CIRCULO-ARCO: Centro,  TEXTO-ATRIBUTO: Punto de inicio, BLOQUE: Punto de inserción, PUNTO: Coordenadas, POLILINEA: Vértices, 3DFACE: Primer vértice. LÍNEA: Punto final, TEXTO-ATRIBUTO: Punto de justificación, 3DFACE: Segundo vértice. 3DFACE: Tercer vértice. 3DFACE: Cuarto vértice. ARCO-CIRCULO: Radio, TEXTO-ATRIBUTO: Altura de texto, POLILINEA: Grosor inicial. TEXTO-ATRIBUTO: Factor proporción de texto, BLOQUE: Escala X, POLILINEA: Grosor final.

TIPO DE DATO PARA UNA ENTIDAD

 A u   , A   , -  -  M  d e  d e  h t  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS   SP  P    ,   -   M a  an   nu  u   a  a   l l   d  es  s  c   ca  a  r   r g    a  ad   do  o     d  es  s  d  d   e  e    h  tt  t p      : :/   //   /w  w   w  w   w  w   . c o  on  n   s   st  t r  r  u  u   c  c  g    e  ee  e  k  k   . c o  om   m/  /   

[27]

 

  CODIGOS

VALOR

42 43 50

BLOQUE: Escala Y, POLILINEA: Factor curvatura de poliarc. BLOQUE: Escala Y. ARCO: Angulo de inicio, TEXTO-ATRIBUTO: Angulo de rotación, BLOQUE: Angulo de rotación, POLILINEA: Dirección tangente. ARCO: Angulo final, TEXTO-ATRIBUTO: Angulo inclinación de estilo. POLILINEA: Abierta o cerrada, BLOQUE: Número de columnas de Minsert. ATRIBUTO: Tipo (0: Normal, 1: Invisible, 2: Constante, 3: Verifi.

51 70 71 72

BLOQUE: Número de Generación filas de Minsert,  TEXTO-ATRIBUTO: (0: Normal, 2: Reflejado, 4:Cabeza abajo. TEXTO-ATRIBUTO: Justificación (0: Izquierda, 1: Centro, 2: Derecha, 3: Situar, 4: Rodear, 5: Ajustar.

Estructura de base de datos que no pertenecen a entidades.

Es la información de la estructura de los objetos no gráficos, es decir: de capas, Tipos de línea, Estilos de texto, etc. La organización de los datos es la misma que para las entidades, basándose en listas que contienen sublistas de asociaciones, cuyo primer elemento es el tipo propiedad (código), y el segundo elemento el valor. ( def un c: ng( ) ( set var var " cmde decho cho"" 0) (( com an and "l ayer ay """n set m va var r d" cm decho deer cho" 1)" " Mur os" " c" " 5" " Mur os" " " ) ( TB TBLSEA LSEAR RCH " LAYER LAYER" " Mur os" ) )

Devolverá: ((0 . "LAYER") (2 . "Muros") (70 . 0) (62 . 5) ((66 . "Continuous")), donde: 0 es el tipo de objeto, 2 es el nombre del objeto, 62 es el color, 6 es el tipo de línea. 

 A u   , A   , -  -   M  M a  d e  d e  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS  S   P   P ,   -  an   nu   ua  a  l  l  d  es  s  c   ca  a  r  r  g    a  ad  d   o  o     d  es  s  d   de  e   h   h t  tt  t  p    : :/   //   /w  w   w  w   w  w   . c o  on   ns  s  t  t r   ru  u   c  c  g    e  ee  e  k  k   . c o  om  m   /  /   

[28]

 

 

OPERACIONES  C CON  L LISTAS  

Función ASSOC : Obtener una lista de asociada

 ASSOC nos permite referirnos a un elemento especificado de una lista asociada que lo contiene. Los elementos son sublistas de una lista total. Función externa que permite dibujar una línea.  ( def un dl i nea( ) ( set var var "c mde decho cho"" 0) ( set set q p1( getpo etpoii nt "Pri mer punt o: ") ) ( set q p p2 2( get po poii nt p1 "\ nSe Segu gun ndo pun untt o: ") ) ( comman and d "l i ne" p1 p2 "" ) ( set q en entt ( ENTGET ( ENTLA TLAS ST) ) ) ( set var var " cmdech echo" o" 1) )

Devuelve la lista asociada a 8 que es: la capa en la que se encuentra la entidad dibujada. ( def un c: as( ) ( dl i nea) (setq an(ASSOC 8 ent))  ( pr i nc an an) ( Pr i nc ) ) 

Función CONS : Añadir nuevo primer elemento a una lista

Esta función construye una nueva sublista con los elementos indicados, una característica de esta nueva lista es que es construida de manera especial por dos elementos separados por un punto, que hace que ocupe menos memoria. ( def un c: co( co( ) ( set var " cmdecho" echo" 0)

(setq pa (CONS 8 0)) ( Pr i nc pa) ( set va varr " cmdecho decho"" 1) ( pr i nc ) ) 

Función SUBST : Sustituir elemento de una lista

SUBST sustituye una sublista especificada por otra, de la entidad especificada como tercer argumento, y devuelve la nueva lista. ( def un c: sb sb(( ) ( dl i nea) ( pr i nc en ent ) (setq nent(SUBST (cons 8 "0")(assoc 8 ent) ent)) ( pr i nc ne nent ) ( pr i nc ) )

Función LAST : Ultimo elemento de una lista

Esta función devuelve un valor que es el número de elementos de la lista indicada.  A u   , A   , -  -  M  d e  d e  h t  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS   SP  P    ,   -   M a  an   nu  u   a  a   l l   d  es  s  c   ca  a  r   r g    a  ad   do  o     d  es  s  d  d   e  e    h  tt  t p      : :/   //   /w  w   w  w   w  w   . c o  on  n   s   st  t r  r  u  u   c  c  g    e  ee  e  k  k   . c o  om   m/  /   

[29]

 

 

  ( def un c : l a( ) ( dl i nea) ( pr i nc en ent ) (setq ne(LAST ent)) ( pr i nc "\ nEl úl t i mo e ell ement o (su (sub bl i st a) de l a l í nea c crr eada e es: s: \ n")

( pr i nc ne ne) ( pr i nc ) )

FunciónDevuelve MEMBER: Obtener resto adepartir elementos a partir de uno especificado el resto de elementos de uno especificado, si hubiera elementos que se repiten member devuelve

resto a partir del primero y si no encuentra el elemento especificado devuelve nil. ( def un c: ml ( ) ( dl i nea) ( pr i nc en ent ) (setq ne(MEMBER (cons 410 "Model") ent)) ( pr i nc "\ nLos Los el el ement os a par t i r de l a su sub bl i st a i ndi cad cada so son n: \ n") ( pr i nc ne ne) ( pr i nc ) )

Función NTH: Obtener elemento enésimo de una lista

NTH examina el número indicado que lo considera considera como una posición en la lista y dev devuelve uelve el elemento que encuentranº4. en dicha posición.especificado El primer elemento considera como el elemento 0, es decir posición Si el número es mayorloque el número de elemen elementos tos devuelve nil.el quinto elemento lo considera en la ( def un c : nt ( ) ( dl i nea) ( pr i nc en ent ) (setq ne(NTH 1 ent)) ( pr i nc "\ nEl el ement o i ndi ca cad do es: \ n") ( pr i nc ne ne) ( pr i nc ) )

 A u   , A   , -  -   M  M a  d e  d e  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS  S   P   P ,   -  an   nu   ua  a  l  l  d  es  s  c   ca  a  r  r  g    a  ad  d   o  o     d  es  s  d   de  e   h   h t  tt  t  p    : :/   //   /w  w   w  w   w  w   . c o  on   ns  s  t  t r   ru  u   c  c  g    e  ee  e  k  k   . c o  om  m   /  /   

[30]

 

 

SEPTIMA  C CLASE  

SELECCIÓN DE OBJETOS Y BASE DE DATOS

Función ENTLAST : Obtiene última entidad creada

Devuelve el nombre de la última entidad creada en el dibujo. ENTLAST obtiene el nombre de la entidad, así no este  visible en la pantalla o este en una capa desactivada. La siguiente es una función externa que dibuja una línea. ( def un l i n( ) ( set var var " cmdecho decho"" 0) ( se sett q p1( get poi nt "Pr i mer punt o: ") ) ( set q p2( get poi nt p1 " \ nSeg egu undo punt o: " ) ) ( command and " l i ne" ne" p1 p2 p2 " " ) ( set var var " cmdecho decho"" 1) )

Se crea una nueva función que es el comando uent. ( def un c: uent ( ) ( l i n) (setq ent(ENTLAST)) ( set va varr " cmdecho decho"" 0) ( command and " chang change" e" ent " " " p" " c" " 6" " " ) ( set va varr " cmdecho" echo" 1) ( pr i nc ) )

Función ENTSEL : Obtiene la entidad seleccionada

ENTSEL nos permite seleccionar una entidad y devuelve su nombre y además la coordenada del punto de designación. Adicionalmente se puede agregar un mensaje para el usuario al solicitar s olicitar la designación de la entidad. ( def un c: ens( ) (setq ent(ENTSEL "\nSeleccione una entidad para cambiar el color: ")) ( set var var " cmdecho" echo" 0) ( comman and d " chan change" ge" en entt " " " p" " c" " 6" " " ) ( set var var " cmdecho" echo" 1) ( pr i nc ) )

 A u   , A   , -  -  M  d e  d e  h t  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS   SP  P    ,   -   M a  an   nu  u   a  a   l l   d  es  s  c   ca  a  r   r g    a  ad   do  o     d  es  s  d  d   e  e    h  tt  t p      : :/   //   /w  w   w  w   w  w   . c o  on  n   s   st  t r  r  u  u   c  c  g    e  ee  e  k  k   . c o  om   m/  /   

[31]

 

 

Función ENTNEXT : Obtiene entidades por orden de creación

Esta función obtiene el nombre de la primera entidad dibujada que sigue a aquella cuyo nombre se especifica. Si no se especifica ningún nombre devuelve la primera entidad dibujada. La función externa “dl” nos permite dibujar varias líneas.   ( def un dl ( ) ( set var " cmde decho cho"" 0) ( s et et q p1 p1( l i s t 0 0) ) ( pr i nc "Di "Di buj e l í neas eas q qu ue ser ser án ca cam mbi adas de de c col ol or. " ) ( whi l e p1 p1 ( i f (( p se set t qnp1( get poi nt "\ nPunt o i ni ci al [ ENTER par a t er mi nar ] : ") ) r og ogn ( se sett q p2 ( get poi nt p1 "\ nPunt o f i nal : ") ) ( comman and d " Li ne ne"" p1 p2 " " ) ( set var var " cmdecho" echo" 1) ) ) ) )

La nuevo comando “enx” obtiene le nombre de la primera entidad creada y luego obtiene el resto por orden de creación y les cambia de color. ( def un c: enx() ( dl ) ( setvar " cmdech echo" 0) 0) (setq ent(ENTNEXT)) ( command and " chang change" e" ent ent " " " p" " c" " 6" " " ) ( whi l e ent ( i f (setq ent(ENTNEXT ent)) ( pr og ogn n ( comman and d " chang change" e" ent ent " " " p" " c" " 6" " " ) ) ) ) ( set va varr " cmdecho decho"" 1) ( pr i nc ) ) Función ENTGET : Obtener estructura de una entidad

Esta función obtiene una lista con sublistas asociadas que conforman la estructura de una entidad seleccionada con ENTLAST, ENTSEL, etc. ( DEF EFU UN C: Sel ( ) ( l i n) ( pr i nc "La est est r uctura de de l a en ent i dad sel sel ecci cci onada es\ es\ n: ") (setq ent(ENTGET(entlast))) ent(ENTGET(entlast))) ( pr i nc ent ) ( pr i nc ) ) ( DEFUN EFUN C: Se Sen( n( ) ( se sett q se sell ( ent se sell "\ nSel ecc ccii one l a ent i dad di buj ada: ") ) ( setq nomen entt ( ca carr s el ) ) ;Obtenemos el nombre de la entidad. (setq ent(ENTGET noment)) ( pr i nc "\ nLa est r uct ur a de l a ent i dad se sell ecci onada es\ n: ") ( pr i nc e en nt ) ( pr i nc ) )

 A u   , A   , -  -   M  M a  d e  d e  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS  S   P   P ,   -  an   nu   ua  a  l  l  d  es  s  c   ca  a  r  r  g    a  ad  d   o  o     d  es  s  d   de  e   h   h t  tt  t  p    : :/   //   /w  w   w  w   w  w   . c o  on   ns  s  t  t r   ru  u   c  c  g    e  ee  e  k  k   . c o  om  m   /  /   

[32]

 

 

Función ENTDEL : Borrar o recuperar entidad

Nos permite borrar una entidad indicada o recuperarla en cualquier después de haber sido borrada. No se podrá recuperar si es que se sale de la sesión del dibujo. ( def un c: ent d( ) ( l i n) ( s et et q en ent ( ent l as t ) ) “Se bo bor r ó”)   (ENTDEL ent) ( pr i nc “Se ( pr i nc ) )

( def un c: ent d2( ) (ENTDEL ent) ( Pri nc “R “Rec ecu uper ó”) ( pr i nc )   )

El comando entd borra la linea dibujada y luego la recupera con el comando ent2. ent2.

Función ENTMOD : Actualizar lista en pantalla

 Actualiza en pantalla una entidad después de haber sido objeto de una sustitución de listas mediante la función SUBST. ( def un c c:: mod od(( ) ( se sett q ent ( ent se sell "Sel "Sel ecci one un t ext o: ") ) (setq ent(car ent)) (setq ent(entget ent)) ( set q nen nentt ( subst subst ( cons cons 40 5) ( ASSOC 40 en entt ) en entt ) ) (ENTMOD nent) ( pr i nc ) )

El ejemplo anterior cambia la altura actual del texto por una nueva altura de 5.0. Función ENTMAKE : Crear una entidad

Permite crear una entidad en el dibujo mediante una lista de su estructura. Si la lista es correcta crea la entidad de lo contrario devuelve nil. Esta lista debe contener todos los códigos necesarios que componen la nueva entidad a crear como son la altura, punto inicial, final dependiendo del tipo a crear; si se omite alguno produce error. La mejor manera de crear una entidad es obteniendo la estructura de una entidad ya existente copiarla y luego modificarla. ( def un c : c t ( ) (ENTMAKE '( ( 0 . "TEX "TEXT") ( 8 . " 0" 0" ) ( 10 97. 4767 767 157 157. 521 521 0. 0) ( 40 . 2. 5) ( 1 . " CAZMTP" TP" ) ( 50 . 0. 0) ( 41 . 1. 0) ( 51 . 0. 0) ( 7 . "Stand "Standar d") ( 71 . 0) ( 72 . 0)

( 73 . 0) ( 11 0. 0 0. 0 0. 0) )

: Tipo de entidad. : Capa de la entidad. : Punto de inserción.

:Altura del texto. :Contenido. :Angulo de rotación.  :Width Factor. :Angulo de oblicuidad. :Estilo para el texto. :Simetría de texto: 2=Mira hacia atrás. 4=Mira hacia arriba. :Justificación horizontal del texto. 1=Centrado, 2=Derecho, 3=Alineado,4=Medio, 5=Ajustado. : Justificación vertical: 0=Base, 1=Inferior, 2=Medio, 3=Superior. :Punto de alineación del texto tiene sentido, cuando el grupo 72 es igual a 3 ó 5.

) ( pr i nc ) )

 A u   , A   , -  -  M  d e  d e  h t  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS   SP  P    ,   -   M a  an   nu  u   a  a   l l   d  es  s  c   ca  a  r   r g    a  ad   do  o     d  es  s  d  d   e  e    h  tt  t p      : :/   //   /w  w   w  w   w  w   . c o  on  n   s   st  t r  r  u  u   c  c  g    e  ee  e  k  k   . c o  om   m/  /   

[33]

 

 

Función TBLNEXT : Leer estructura de entidad no gráfica

Devuelve la estructura de las entidad no gráficas (Tablas de símbolos), especificado. El tipo debe ser “LAYER”, “LTYPE”, ‘STYLE’, ‘BLOCK’, ‘VIEW’, “UCS”, “VPORT”, “DIMSTYLE”, que son los únicos admitidos, esta función devuelve la primera entidad no gráfica del tipo especificado, luego devuelve el resto a medida que nuevamente se llama a la función. Para ver el contenido de un número determinado de capas capas se llama se llama a TBLNEXT las veces que sea necesario, si nos existen mas capas que mostrar devuelve nil.  (TBLNEXT "Layer")

Función TBLSEARCH : Leer estructura de entidad no gráfica

Devuelve la estructura de las entidad no gráficas (Tablas de símbolos), especificado, pero una en particular especificando el nombre. Los tipos deben ser los mismos que para TBLNEXT y adicional un nombre que identifica al tipo. (TBLSEARCH "Layer" "Muros")

Mostrará la estructura de la capa Muros.

 A u   , A   , -  -   M  M a  d e  d e  ut  t o  o   C   C A    D  D ,   A u  ut   to  o   L  L   I   IS  S   P   P ,   -  an   nu   ua  a  l  l  d  es  s  c   ca  a  r  r  g    a  ad  d   o  o     d  es  s  d   de  e   h   h t  tt  t  p    : :/   //   /w  w   w  w   w  w   . c o  on   ns  s  t  t r   ru  u   c  c  g    e  ee  e  k  k   . c o  om  m   /  /   

[34]

 

 

OCTAVA  C CLASE  

SELECCIÓN DE OBJETOS MULTIPLES

Función SSGET : Seleccionar un conjunto de entidades

Solicita la designación de un conjunto de entidades. Si no se especifica un modo se solicita al usuario una designación completa. ( def un c c:: s s () (setq ents (SSGET)) ( command and " chang change" e" ent ent s " " " p" " c" " 5" " " ) ( pr i nc ) )

Se puede crear un filtro de elementos mediante el modo “X”, este modo evalúa una condición dada y selecciona las entidades que cumplan con esa condición. ( def un c: ssx( ssx( ) ( i f ( s et et q ent s (SSGET "X" (list(cons 0 ( comman and d " chan change" ge" en entt s " " " p" " c" ) ( i f ( s et et q ent s (SSGET "X" (list(cons 0 ( comman and d " chan change" ge" en entt s " " " p" " c" ) ( pr i nc ) )

"CIRCLE"))) ) " 3" " " ) "TEXT")(cons 62 1))) ) " 4" " " )

La primera selección busca todas las entidades del tipo “CIRCLE” (círculos), y la segunda busca textos que tengan el color 1 (rojo).  También se puede crear un filtro con operadores. operadores. (SSGET “X” (list(cons 0 “TEXT”) (cons –4 “
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF