Curso de personalizaci¾n y programaci¾n bajo AutoCAD (por Jonathan PrÚstamo RodrÝguez) - [771...

771
Curso Práctico de Personalización Y Programación Bajo AutoCAD por Jonathan Préstamo Rodríguez (Delineante Industrial y de Edificios y Técnico Superior en CAD)

Transcript of Curso de personalizaci¾n y programaci¾n bajo AutoCAD (por Jonathan PrÚstamo RodrÝguez) - [771...

Curso Prctico de Personalizacin Y Programacin Bajo AutoCAD

por Jonathan Prstamo Rodrguez (Delineante Industrial y de Edificios y Tcnico Superior en CAD)

Curso Prctico de Personalizacin y Programacin bajo AutoCAD ndice

ndicePARTE PRIMERAMDULO UNO: Personalizacin de mensUNO.1. INTRODUCCIN UNO.2. EL ARCHIVO ACAD.MNU UNO.2.1. Las secciones ***BUTTONS y ***AUX UNO.2.2. Mens desplegables (secciones ***POP) UNO.2.3. Las barras de herramientas (la seccin ***TOOLBARS) UNO.2.4. La seccin ***IMAGE de mens de imgenes UNO.2.5. El arcaico men de pantalla de AutoCAD bajo la seccin ***SCREEN UNO.2.6. Configuracin del tablero digitalizador bajo las secciones ***TABLET UNO.2.7. ***HELPSTRINGS; las cadenas de ayuda UNO.2.8. Teclas rpidas bajo ***ACCELERATORS UNO.3. SUBMENS UNO.3.1. Referencias a submens UNO.3.1.1. Llamadas a los submens de las distintas secciones UNO.4. CARACTERES ESPECIALES, DE CONTROL Y OTROS MECANISMOS UNO.4.1. Caracteres especiales UNO.4.2. Caracteres de control UNO.4.3. Otros mecanismos y apuntes UNO.4.3.1. Opciones de men mediante DIESEL UNO.4.3.2. Variable MENUCTL UNO.4.3.3. Creacin y uso de mens de macros UNO.4.3.3.1. Funcionamiento de MC.EXE UNO.4.4. Uso de la orden externa EDIT UNO.5. CARGA y DESCARGA DE MENS EN AutoCAD UNO.6. EJEMPLOS PRCTICOS DE MENS UNO.6.1. Men desplegable simple UNO.6.2. Mens desplegables UNO.6.3. Men de imagen y desplegable UNO.6.4. Men completo de cartografa UNO.FIN. EJERCICIOS PROPUESTOS 0 0 1 1 5 8 9 11 12 13 14 15 16 19 19 21 22 22 23 23 26 26 26 29 29 30 31 33 35

MDULO DOS: Personalizacin de barras de herramientas desde AutoCADDOS.1. INTRODUCCIN DOS.2. EL PRIMER ACERCAMIENTO DOS.3. NUESTRA BARRA DE HERRAMIENTAS DOS.3.1. Aadiendo botones a la barra DOS.3.2. Aadiendo un botn vaco DOS.3.3. Editar el icono del botn DOS.4. BOTONES DESPLEGABLES DOS.5. COPIA Y DESPLAZAMIENTO DE BOTONES DOS.6. COMPROBANDO EL .MNS DOS.7. EJEMPLOS PRCTICOS DE BOTONES DOS.7.1. Insertar DWG's en el 0,0 DOS.7.2. Matriz de pentgonos DOS.7.3. Insercin de formatos desplegable DOS.FIN. EJERCICIOS PROPUESTOS EJERCICIOS RESUELTOS DEL MDULO UNO 37 37 38 39 39 40 41 42 43 44 44 44 44 45 46

MDULO TRES: Creacin de tipos de lnea ii

Curso Prctico de Personalizacin y Programacin bajo AutoCAD ndiceTRES.1. TIPOS DE LNEA EN AutoCAD TRES.2. PODEMOS CREAR O PERSONALIZAR UN .LIN TRES.2.1. Examinando el ACADISO.LIN TRES.2.2. Sintaxis de personalizacin TRES.2.2.1. Creacin desde un editor ASCII TRES.2.2.2. Tipos de lnea complejos TRES.2.2.3. Creacin desde la lnea de comandos TRES.3. CARGAR TIPOS DE LNEA CREADOS TRES.4. EJEMPLOS PRCTICOS DE TIPOS DE LNEA TRES.4.1. Tipo simple 1 TRES.4.2. Tipo simple 2 TRES.4.3. Tipo complejo 1 TRES.4.4. Tipo complejo 2 TRES.4.5. Tipo complejo 3 TRES.FIN. EJERCICIOS PROPUESTOS EJERCICIOS RESUELTOS DEL MDULO DOS 51 51 51 52 52 54 58 59 60 60 60 60 60 61 61 61

MDULO CUATRO: Creacin de patrones de sombreadoCUATRO.1. PATRONES DE SOMBREADO CUATRO.2. SINTAXIS DE DEFINICIN CUATRO.3. TCNICA DE CREACIN CUATRO.4. UTILIZANDO EL PATRN DEFINIDO CUATRO.4.1. Iconos del men de imagen CUATRO.5. EJEMPLOS PRCTICOS DE PATRONES DE SOMBREADO CUATRO.5.1. Patrn slido CUATRO.5.2. Patrn simple inclinado CUATRO.5.3. Patrn de lneas cruzadas a 90 grados CUATRO.5.4. Patrn de hexgonos CUATRO.FIN. EJERCICIOS PROPUESTOS EJERCICIO S RESUELTOS DEL MDULO TRES 65 65 69 70 70 70 71 71 71 71 71 72

MDULO CINCO: Definicin de formas y tipos de letraCINCO.1. INTRODUCCIN CINCO.2. ARCHIVOS DE FORMAS PROPIOS CINCO.2.1. Sintaxis de creacin de formas CINCO.2.2. Cmo cargar e insertar formas CINCO.2.3. Compilando el fichero .SHP CINCO.2.4. Cdigos especiales CINCO.3. ARCHIVOS DE TIPOS DE LETRA CINCO.3.1. Utilizar los tipos de letra creados CINCO.3.2. Tipos de letra Unicode CINCO.3.3. Tipos de letra grande y grande extendido CINCO.3.3.1. Utilizar estos tipos de letra grande CINCO.3.4. Soporte PostScript CINCO.4. EJEMPLOS PRCTICOS DE FORMAS Y TIPOS DE LETRA CINCO.4.1. Cuadrado con diagonales CINCO.4.2. Subforma anterior y tringulos CINCO.4.3. Nmero ocho simple CINCO.4.4. Letra G mayscula romnica CINCO.4.5. Letra n minscula gtica CINCO.FIN. EJERCICIOS PROPUESTOS EJERCICIOS RESUELTOS DEL MDULO CUATRO 73 74 75 77 78 79 84 87 87 88 92 93 94 94 94 94 94 94 94 95

MDULO SEIS: Creacin de archivos de ayudaSEIS.1. INTRODUCCIN A LOS ARCHIVOS DE AYUDA SEIS.2. LA AYUDA DE AutoCAD. FORMATO .AHP SEIS.2.1. Visualizacin del archivo en AutoCAD SEIS.2.2. Introduciendo ms temas SEIS.2.3. Retornos suaves, tabulaciones y sangras SEIS.2.4. Vnculos de hipertexto 97 97 98 100 103 105

iii

Curso Prctico de Personalizacin y Programacin bajo AutoCAD ndiceSEIS.2.5. Archivos de ayuda en directorios de slo lectura SEIS.3. FORMATO WINDOWS. ARCHIVOS .HLP SEIS.3.1. Microsoft Help Workshop SEIS.3.2. Aadiendo temas a la pestaa Contenido SEIS.3.3. Aadiendo temas a ndice y Buscar SEIS.3.4. Utilizar los a rchivos .HLP desde AutoCAD SEIS.4. AYUDA EN FORMATO HTML SEIS.4.1. Aadiendo temas HTML a Contenido SEIS.5. EJEMPLOS PRCTICOS DE ARCHIVOS DE AYUDA SEIS.5.1. Ayuda a nuevos comandos creados SEIS.5.2. Documentacin sobre un comando nuevo SEIS.FIN. EJERCICIOS PROPUESTOS EJERCICIOS RESUELTOS DEL MDULO CINCO 106 107 108 108 109 110 110 111 111 111 112 113 113

MDULO SIETE: Creacin de rdenes externas, redefinicin y abreviaturas a comandosSIETE.1. INTRODUCCIN SIETE.2. DEFINICIN DE COMANDOS EXTERNOS SIETE.2.1. Comandos externos a nivel MS-DOS SIETE.2.2. Reiniciar el archivo ACAD.PGP SIETE.2.3. Comandos externos Windows SIETE.2.4. Los comandos de Windows START y CMD SIETE.2.5. Visto lo visto nada funciona SIETE.3. ABREVIATURAS A COMANDOS SIETE.4. REDEFINICIN DE COMANDOS DE AutoCAD SIETE.5. EJEMPLOS PRCTICOS DE COMANDOS EXTERNOS Y ABREVIATURAS SIETE.5.1. Comandos externos MS-DOS SIETE.5.2. Comandos externos Windows SIETE.FIN. EJERCICIOS PROPUESTOS EJERCICIOS RESUELTOS DEL MDULO SEIS 116 116 117 119 119 119 121 121 122 123 123 124 124 124

MDULO OCHO: Fotos, fototecas y archivos de guinOCHO.1. LAS FOTOS DE AutoCAD OCHO.1.1. Fotos de mayor rendimiento OCHO.2. FOTOTECAS O BIBLIOTECAS DE FOTOS OCHO.3. UTILIZACIN DE FOTOS Y FOTOTECAS OCHO.3.1. En lnea de comandos de AutoCAD OCHO.3.2. En macros OCHO.3.3. En mens de imgenes OCHO.3.4. En patrones de sombreado. El programa SlideManager OCHO.4. ARCHIVOS DE GUIN OCHO.4.1. Ejecutando archivos scripts OCHO.4.2. Retardos con RETARDA OCHO.4.3. Repeticiones con RSCRIPT OCHO.4.4. Reanudar con REANUDA OCHO.4.5. Carga de fotos antes de su visualizacin OCHO.4.6. Otros archivos de guin OCHO.4.7. Ejecucin de guiones en el arranque OCHO.5. EJEMPLOS PRCTICOS DE ARCHIVOS DE GUIN OCHO.5.1. Ejemplo 1 OCHO.5.2. Ejemplo 2 OCHO.FIN. EJERCICIOS PROPUESTOS EJERCICIOS RESUELTOS DEL MDULO SIETE 128 129 129 131 131 131 131 132 133 135 135 136 136 137 137 138 139 139 139 139 140

iv

Curso Prctico de Personalizacin y Programacin bajo AutoCAD ndice

PARTE SEGUNDAMDULO NUEVE: Lenguaje DIESEL y personalizacin de la lnea de estadoNUEVE.1. INTRODUCCIN NUEVE.2. LA VARIABLE MODEMACRO NUEVE.3. EL LENGUAJE DIESEL NUEVE.3.1. Catlogo de funciones DIESEL NUEVE.3.2. DIESEL para la lnea de estado NUEVE.3.3. Expresiones DIESEL en mens NUEVE.3.3.1. DIESEL entre corchetes NUEVE.3.3.2. DIESEL en la macro NUEVE.3.4. Expresiones DIESEL en botones NUEVE.3.5. Expresiones DIESEL en archivos de guin NUEVE.3.6. Variables USERn1 a USERn5 y MACROTRACE NUEVE.4. EJEMPLOS PRCTICOS EN DIESEL NUEVE.4.1. Lnea de estado 1 NUEVE.4.2. Lnea de estado 2 NUEVE.4.3. Lnea de estado 3 NUEVE.4.4. Visibilidad de objetos Proxy NUEVE.4.5. Orden de objetos NUEVE.4.6. Ventanas en mosaico y flotantes NUEVE.FIN. EJERCICIOS PROPUESTOS EJERCICIOS RESUELTOS DEL MDULO OCHO 141 142 143 143 147 149 149 150 151 151 151 152 152 152 152 152 152 153 153 153

MDULO DIEZ: Lenguaje DCL; personalizacin y creacin de cuadros de dilogoDIEZ.1. LENGUAJE DCL DIEZ.2. ESTRUCTURA JERARQUIZADA DE DISEO DIEZ.3. TCNICA DE DISEO DIEZ.4. LAS HERRAMIENTAS DIEZ.4.1. Los tiles o elementos DIEZ.4.2. Los atributos predefinidos DIEZ.4.2.1. Atributos de ttulo, clave y valor inicial DIEZ.4.2.2. Atributos de tamao DIEZ.4.2.3. Atributos de limitaciones de uso DIEZ.4.2.4. Atributos de funcionalidad DIEZ.4.3. Los tiles y sus atributos DIEZ.4.3.1. Grupos de componentes DIEZ.4.3.2. Componentes individuales de accin DIEZ.4.3.3. Componentes decorativos e informativos DIEZ.4.3.4. Botones de salida y componente de error DIEZ.4.4. Elementos predefinidos DIEZ.5. PROGRAMANDO CUADROS DCL DIEZ.5.1. Ejemplo sencillo: letrero informativo DIEZ.5.1.1. Cmo cargar y visualizar el cuadro DIEZ.5.2. Ejemplo con casillas de verificacin DIEZ.5.3. Letrero de control de variables de AutoCAD DIEZ.5.4. Parmetros de control de una curva DIEZ.FIN. EJERCICIOS PROPUESTOS EJERCICIOS RESUELTOS DEL MDULO NUEVE 155 155 156 157 158 159 159 161 162 163 164 164 166 168 169 170 171 171 173 174 176 179 181 183

v

Curso Prctico de Personalizacin y Programacin bajo AutoCAD ndice

PARTE TERCERAMDULO ONCE: Programacin en AutoLISPONCE.1. INTRODUCCIN ONCE.1.1. AutoLISP, ADS, ARX, VBA y Visual Lisp ONCE.1.1.1. Entorno AutoLISP ONCE.1.1.2. Entorno ADS ONCE.1.1.3. Entorno ARX ONCE.1.1.4. Entorno VBA ONCE.1.1.5. Entorno Visual Lisp ONCE.2. CARACTERSTICAS DE AutoLISP ONCE.2.1. Tipos de objetos y datos en AutoLISP ONCE.2.2. Procedimientos de evaluacin ONCE.2.3. Archivos fuente de programas ONCE.2.4. Variables predefinidas ONCE.3. PROGRAMANDO EN AutoLISP ONCE.3.1. Convenciones de sintaxis ONCE.4. OPERACIONES MATEMTICAS Y LGICAS ONCE.4.1. Aritmtica bsica ONCE.4.2. Matemtica avanzada ONCE.4.3. Operaciones relacionales ONCE.4.4. Operaciones lgicas ONCE.5. CREAR Y DECLARAR VARIABLES ONCE.5.1. A vueltas con e l apstrofo () ONCE.6. PROGRAMANDO EN UN ARCHIVO ASCII ONCE.7. CAPTURA Y MANEJO BSICO DE DATOS ONCE.7.1. Aceptacin de puntos ONCE.7.2. Captura de datos numricos ONCE.7.3. Distancias y ngulos ONCE.7.4. Solicitud de cadenas de texto ONCE.7.5. Establecer modos para funciones GET... ONCE.7.5.1. Palabras clave ONCE.8. ACCESO A VARIABLES DE AutoCAD ONCE.9. ESTRUCTURAS BSICAS DE PROGRAMACIN ONCE.10. MANEJO DE LISTAS ONCE.11. FUNCIONES DE CONVERSIN DE DATOS ONCE.11.1. Conversin de unidades ONCE.11.1.1. Personalizar el archivo ACAD.UNT ONCE.11.1.2. Ejemplos de CVUNIT ONCE.12. MANIPULACIN DE CADENAS DE TEXTO ONCE.13. NGULOS Y DISTANCIAS ONCE.14. RUTINAS DE CONTROL DE ERRORES ONCE.14.1. Definir una funcin de error ONCE.14.2. Otras caractersticas del control de errores ONCE.15. CARGA y DESCARGA DE APLICACIONES ONCE.15.1. ACADR14.LSP, ACAD.LSP y *.MNL ONCE.15.1.1. Configuraciones mltiples ONCE.15.1.2. Definir funcin como S::STARTUP ONCE.15.2. Aplicaciones ADS ONCE.15.3. Aplicaciones ARX ONCE.15.4. Acceso a comandos externos ONCE.15.4.1. Comandos programados en AutoLISP ONCE.15.4.2. Comandos de transformaciones 3D ONCE.15.4.3. Calculadora de geometras ONCE.15.4.4. Intercambios en formato PostScript ONCE.15.4.5. Proyeccin de slidos en ventanas ONCE.15.4.6. Comandos de Render ONCE.15.4.7. Intercambio con 3D Studio ONCE.15.4.8. Comandos de ASE ONCE.15.5. Inicio de aplicaciones Windows 185 185 185 186 186 186 187 187 188 189 191 192 193 193 193 193 197 203 206 209 212 213 216 216 221 222 224 224 227 230 232 242 246 249 250 252 252 260 263 264 268 270 273 274 274 275 276 276 277 278 278 279 279 279 289 290 290

vi

Curso Prctico de Personalizacin y Programacin bajo AutoCAD ndiceONCE.16. INTERACCIN CON LETREROS EN DCL ONCE.16.1. Carga, muestra, inicio, fin y descarga ONCE.16.2. Gestin de elementos del letrero ONCE.16.3. Gestin de componentes de imagen ONCE.16.4. Gestin de casillas de listas y listas desplegables ONCE.17. OTRAS FUNCIONES DE MANEJO DE LISTAS ONCE.18. MISCELNEA DE FUNCIONES TILES ONCE.18.1. Asegurndonos de ciertos datos ONCE.18.2. Acceso a pantalla grfica ONCE.18.3. Lectura de dispositivos de entrada ONCE.18.4. Atribuir expresin a smbolo literal ONCE.19. ACCESO A OTRAS CARACTERSTICAS ONCE.19.1. Modos de referencia ONCE.19.2. El redibujado ONCE.19.3. Transformacin entre Sistemas de Coordenadas ONCE.19.4. Ventanas y vistas ONCE.19.5. Calibracin de tablero digitalizador ONCE.16.6. Control de elementos de men ONCE.19.7. Letrero de seleccin de color ONCE.19.8. Funciones de manejo de ayuda ONCE.19.9. Expresiones DIESEL en programas AutoLISP ONCE.19.10. Macros AutoLISP en mens y botones ONCE.19.11. Macros AutoLISP en archivos de guin ONCE.19.12. Variables de entorno ONCE.20. ACCESO A LA BASE DE DATOS DE AutoCAD ONCE.20.1. Organizacin de la Base de Datos ONCE.20.1.1. Introduccin ONCE.20.1.2. Estructura para entidades simples ONCE.20.1.3. Estructura para entidades compuestas ONCE.20.1.3.1. Polilneas no optimizadas ONCE.20.1.3.2. Insercio9nes de bloque con atributos ONCE.20.1.4. Estructura para objetos no grficos ONCE.20.1.4.1. Capa ONCE.20.1.4.2. Estilo de texto ONCE.20.1.4.3. Tipo de lnea ONCE.20.1.4.4. Definicin de bloque ONCE.20.1.5. Cdigos de acceso a Base de Datos ONCE.20.2. Funciones de gestin de la Base de Datos ONCE.20.2.1. Crear un conjunto de seleccin ONCE.20.2.2. Obtener el nombre de una entidad ONCE.20.2.3. Extraer la lista de una entidad ONCE.20.2.4. Actualizar lista y Base de Datos ONCE.20.2.5. Nombre de entidad por punto ONCE.20.2.6. Aadir, eliminar y localizar entidades ONCE.20.2.7. Aplicar y determinar pinzamientos ONCE.20.2.8. Obtener nombre con modo de seleccin ONCE.20.2.9. Otras formas de obtener nombres ONCE.20.2.10. Borrar/recuperar entidades ONCE.20.2.11. Obtener rectngulo de texto ONCE.20.2.12. Construccin de una entidad ONCE.20.2.13. Manejo de tablas de smbolos ONCE.20.2.14. Funciones relativas a datos extendidos ONCE.21. ACCESO A ARCHIVOS ONCE.21.1. Fundamento terico somero sobre el acceso a archivos ONCE.21.2. Funciones para el manejo de archivos ONCE.22. FUNCIONES DE CHEQUEO ONCE.22.1. Rastreo ONCE.23. OPERACIONES BINARIAS LGICAS ONCE.24. GESTIN DE LA MEMORIA ONCE.25. CDIGOS Y MENSAJES DE ERROR ONCE.25.1. Cdigos de error ONCE.25.2. Mensajes de error ONCE.FIN. EJERCICIOS PROPUESTOS 290 291 294 303 315 321 329 330 331 333 334 335 336 338 339 340 341 341 342 342 344 346 346 346 347 347 347 347 350 350 352 354 355 355 356 356 356 377 377 382 382 384 386 388 389 389 391 393 394 394 395 399 415 415 416 425 429 430 432 435 435 437 441

vii

Curso Prctico de Personalizacin y Programacin bajo AutoCAD ndiceEJERCICIOS RESUELTOS DEL MDULO DIEZ 445

MDULO DOCE: Programacin en Visual Basic orientada a AutoCAD (VBA)DOCE.1. INTRODUCCIN DOCE.2. Visual Basic Y ActiveX Automation DOCE.2.1. La lnea de productos de Visual Basic DOCE.3. EL MDULO VBA DE AutoCAD DOCE.4. COMENZANDO CON VBA DOCE.4.1. La plantilla de objetos DOCE.4.2. Comenzar un programa DOCE.5. DIBUJO Y REPRESENTACIN DE ENTIDADES DOCE.5.1. Lneas DOCE.5.2. Crculos DOCE.5.3. Elipses DOCE.5.4. Arcos DOCE.5.5. Puntos DOCE.5.6. Texto en una lnea DOCE.5.7. Objetos d e polilnea DOCE.5.7.1. Polilneas de antigua definicin DOCE.5.7.2. Polilneas optimizadas DOCE.5.8. Polilneas 3D DOCE.5.9. Rayos DOCE.5.10. Lneas auxiliares DOCE.5.11. Trazos DOCE.5.12. Splines DOCE.5.13. Texto mltiple DOCE.5.14. Regiones DOCE.5.15. Slidos 3D DOCE.5.15.1. Prisma rectangular DOCE.5.15.2. Cono DOCE.5.15.3. Cilindro DOCE.5.15.4. Cono elptico DOCE.5.15.5. Cilindro elptico DOCE.5.15.6. Esfera DOCE.5.15.7. Toroide DOCE.5.15.8. Cua DOCE.5.15.9. Extrusin DOCE.5.15.10. Extrusin con camino DOCE.5.15.11. Revolucin DOCE.5.15.12. Propiedades y mtodos de los slidos 3D DOCE.5.16. Caras 3D DOCE.5.17. Mallas poligonales DOCE.5.18. Imgenes de trama DOCE.5.19. Slidos 2D DOCE.5.20. Formas DOCE.5.21. Acotacin, directrices y tolerancias DOCE.5.21.1. Cotas alineadas DOCE.5.21.2. Cotas angulares DOCE.5.21.3. Cotas diamtricas DOCE.5.21.4. Cotas por coordenadas DOCE.5.21.5. Cotas radiales DOCE.5.21.6. Cotas giradas DOCE.5.21.7. Directrices DOCE.5.21.8. Tolerancias DOCE.5.22. Sombreado DOCE.5.23. Referencias a bloques DOCE.5.24. Atributos de bloques DOCE.5.24.1. Referencias de atributos DOCE.5.24.2. Objeto de atributo DOCE.6. LA APLICACIN AutoCAD DOCE.7. EL DOCUMENTO ACTUAL ACTIVO DOCE.8. LAS COLECCIONES Y SUS OBJETOS 449 449 450 451 452 452 454 455 455 468 470 472 473 474 479 479 481 482 482 483 483 484 488 489 491 491 492 492 492 492 492 493 493 493 493 493 494 495 496 498 501 501 502 502 504 505 506 507 507 508 509 510 515 516 516 518 519 523 535

viii

Curso Prctico de Personalizacin y Programacin bajo AutoCAD ndiceDOCE.8.1. Coleccin de objetos de Espacio Modelo DOCE.8.2. Coleccin de objetos de Espacio Papel DOCE.8.3. Coleccin de bloques y el objeto bloque DOCE.8.4. Coleccin de diccionarios y el objeto diccionario DOCE.8.5. Coleccin de estilos de acotacin y el objeto estilo de acotacin DOCE.8.6. Coleccin de grupos y el objeto grupo DOCE.8.7. Coleccin de capas y el objeto capa DOCE.8.8. Coleccin de tipos de lnea y el objeto tipo de lnea DOCE.8.9. Coleccin de aplicaciones registradas y el objeto aplicacin registrada DOCE.8.10. Coleccin de conjuntos de seleccin y el objeto conjunto de seleccin DOCE.8.11. Coleccin de estilos de texto y el objeto estilo de texto DOCE.8.12. Coleccin de SCPs y el objeto SCP DOCE.8.13. Coleccin de vistas y el objeto vista DOCE.8.14. Coleccin de ventanas y el objeto ventana DOCE.8.14.1. Ventanas del Espacio Papel DOCE.9. UTILIDADES VARIAS (EL OBJETO Utility) DOCE.10. EL TRAZADO DOCE.11. EL OBJETO DE PREFERENCIAS DOCE.11.1. Preferencias de archivos DOCE.11.2. Preferencias de rendimiento DOCE.11.3. Preferencias de compatibilidad DOCE.11.4. Preferencias generales DOCE.11.5. Preferencias de visualizacin DOCE.11.6. Preferencia de dispositivo DOCE.11.7. Preferencia de perfil DOCE.11.8. Mtodos del objeto de preferencias DOCE.12. ALGUNOS TRUCOS ActiveX Automation PARA AutoCAD DOCE.12.1. Compilacin de programas con un compilador de Visual Basic externo DOCE.12.1. Compilacin de programas con un compilador de Visual Basic externo DOCE.12.1.1. Objeto de aplicacin en programas compilados DOCE.12.2. Ejecucin de programas VBA desde AutoLISP y en macros DOCE.12.3. Enviar cadenas a la lnea de comandos desde VBA DOCE.13. COMO APUNTE FINAL DOCE.FIN. EJERCICIOS PROPUESTOS EJERCICIOS RESUELTOS DEL MDULO ONCE 535 537 539 540 542 542 543 547 548 549 552 554 555 556 561 563 585 592 593 598 601 603 605 610 610 610 611 612 612 614 615 616 619 619 620

MDULO TRECE: Entorno de programacin Visual LispTRECE.1. Visual Lisp ES... TRECE.2. PROCESO DE CREACIN DE UN PROGRAMA TRECE.3. INSTALACIN E INICIACI N TRECE.3.1. Carga y ejecucin de programas TRECE.4. ESCRITURA DEL CDIGO FUENTE TRECE.4.1. Ventana de Consola TRECE.4.2. Editor de texto TRECE.4.2.1. La herramienta Apropos TRECE.4.2.2. Utilidades de gestin de texto TRECE.4.2.3. Formateo del cdigo fuente TRECE.4.2.4. Chequeo de errores de sintaxis TRECE.5. DEPURACIN DE PROGRAMAS TRECE.5.1. Modo de depuracin Break Loop TRECE.5.2. Modo de depuracin Trace TRECE.5.3. Ventana de seguimiento Watch TRECE.5.4. Cuadro de dilogo de servicio de smbolos Symbol Service TRECE.5.5. Ventana de inspeccin de objetos Inspect TRECE.6. CONSTRUCCIN Y GESTIN DE APLICACIONES TRECE.6.1. Compilacin de archivos de programa TRECE.6.2. Creacin de mdulos de aplicacin TRECE.6.3. Gestin de proyectos TRECE.7. UTILIZACIN DE OBJETOS ActiveX TRECE.7.1. Funciones Visual Lisp EJERCICIOS RESUELTOS DEL MDULO DOCE 685 685 685 686 687 687 688 689 691 694 695 696 698 699 700 701 701 702 703 704 704 705 705 710

ix

Curso Prctico de Personalizacin y Programacin bajo AutoCAD ndice

APNDICESAPNDICE A: Comandos y abreviaturas de AutoCADA.1. COMANDOS DE AutoCAD CON SU CORRESPONDENCIA EN INGLS 723

APNDICE B: Varibles de sistema y acotacinB.1. VARIABLES DE SISTEMA Y ACOTACIN 730

APNDICE C: Bibliotecas suministradasC.1. TIPOS DE LNEA ESTNDAR C.2. TIPOS DE LNEA COMPLEJOS C.3. PATRONES DE SOMBREADO C.4. PATRONES DE RELLENO PostScript C.5. TIPOS DE LETRA BASADOS EN DEFINICIN DE FORMAS C.6. FUENTES True Type C.7. SMBOLOS DE TOLERANCIAS GEOMTRICAS 756 756 756 758 758 759 760

x

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Personalizacin de mens

PARTE PRIMERAMDULO UNOPersonalizacin de mensUNO.1. INTRODUCCINUn men de AutoCAD es una secuencia de rdenes del programa agrupadas en un archivo de texto que podemos visualizar con cualquier editor ASCII. Los archivos de men, en principio, tienen la extensin .MNU, adems existen otros que ya se comentarn ms adelante. El archivo de mens que proporciona AutoCAD es el llamado ACAD.MNU, que se encuentra en el directorio \SUPPORT\ del programa. En l residen todas las definiciones necesarias para el funcionamiento de los mens desplegables de AutoCAD, de las barras de herramientas, el men de pantalla, los botones del ratn (o los del dispositivo sealador correspondiente), mens de imgenes, textos auxiliares de ayuda y algunas teclas rpidas. Este men es susceptible de ser editado y alterado al gusto, as como tambin tenemos la posibilidad de crear nuestros propios mens personalizados para AutoCAD. La mejor forma de aprender cmo funcionan estos mens es recurriendo al ya proporcionado por Autodesk es su programa estrella. Para ello, nicamente debemos abrir ACAD.MNU, como ya se ha dicho con cualquier editor ASCII. Recordemos que se encuentra en el directorio \SUPPORT\ de AutoCAD.

UNO.2. EL ARCHIVO ACAD.MNUComo podemos apreciar, lo primero que nos encontramos en este archivo de men, es una serie de lneas en las que Autodesk explica la forma de proveer este archivo y que es posible modificarlo a nuestro gusto. Generalmente, este texto estar escrito en ingls. Pero fijmonos en los dos primeros caracteres impresos en cada lnea (//). Estos dos caracteres de 0

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Personalizacin de mens barra seguidos indican que lo que viene a continuacin es un texto explicativo o una aclaracin que no debe ser procesada por AutoCAD. Todo lo que se escriba tras // ser ignorado por el programa. Adems, tambin podemos introducir lneas blancas completas para separar sin que AutoCAD interprete nada en ellas. Pero ojo, no deberemos abusar de ello ya que, en estas explicaciones entre secciones no significan nada, pero ms adelante, bajo cada seccin, pueden significar mucho. Es decir, abusar si se quiere, pero con control de dnde. Deberemos tener tambin en cuenta que un alto contenido de explicaciones o lneas blancas aumentar el tamao del fichero y, por lo tanto, el tiempo empleado por AutoCAD para procesarlo. La primera lnea que, podramos decir, tiene sentido para AutoCAD es la que dice ***MENUGROUP=ACAD. Los caracteres *** son indicativo de categora seccin. Un archivo .MNU de AutoCAD puede tener hasta 31 secciones distintas. Los 31 nombres que adoptan esta serie de secciones son normalizados y no pueden alterarse. Cada uno de ellos hace referencia a un dispositivo y debe ocupar una sola lnea en el archivo. Concretamente, este ***MENUGROUP= especifica el nombre de grupo de archivos de men, en este caso ACAD (nombre del archivo). Este nombre es una cadena de 32 caracteres como mximo y que no puede contener ni espacios ni signos de puntuacin. Su nombre no ha de coincidir obligatoriamente con el nombre del archivo que lo contiene, pero es conveniente para evitar fallos o equivocaciones por nuestra parte.

UNO.2.1. Las secciones ***BUTTONS y ***AUXLas cuatro secciones siguientes, desde ***BUTTONS1 hasta ***BUTTONS4, definen la actuacin de los pulsadores del dispositivo sealador de AutoCAD (ratn, lpiz ptico o digitalizador de tableta). Concretamente ***BUTTONS1 define el modo de actuar de todos los botones del dispositivo. Bajo esta seccin se escribe una lnea por cada botn configurado, adems de la accin que debe realizar al ser pulsado. Esto a partir del segundo pulsador, ya que el primero es reservado para la entrada de datos y eleccin de rdenes y es el pulsador principal por defecto del sistema. Esto nos lleva a pensar que, en el caso de un dispositivo tipo lpiz digitalizador, el cual slo posee un pulsador, todas las dems definiciones de botones sern ignoradas. Lo dems que encontramos bajo esta seccin son las referencias a submens o a alias necesarias para que los pulsadores funcionen. Estas referencias sern explicadas ms adelante. Por lo general, esta seccin de ***BUTTONS1 en concreto, y tambin las siguientes secciones ***BUTTONS, no han de ser modificadas por el usuario, ya que puede ser molesto tener que acostumbrarse a un nuevo juego con los pulsadores diferente al actual. ***BUTTONS2 a ***BUTTONS4, por su lado, especifican la accin combinada de ciertas teclas con los pulsadores del dispositivo. Concretamente sus definiciones son las siguientes: ***BUTTONS2 ***BUTTONS3 ***BUTTONS4 SHIFT + botn CTRL + botn CTRL + SHIFT + botn

Las secciones siguientes que nos encontramos en ACAD.MNU son las cuatro que van desde ***AUX1 hasta ***AUX4. El funcionamiento de ellas es exactamente el mismo que el de las secciones ***BUTTONS, pero con las particularidad de que estn orientadas a los dispositivos sealadores de entornos Macintosh y estaciones de trabajo.

UNO.2.2. Mens desplegables (secciones ***POP)1

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Personalizacin de mens A continuacin topamos con las secciones ***POP. Las secciones ***POP definen la apariencia de los mens desplegables y de cascada de AutoCAD, as como las rdenes que se ejecutarn al hacer clic en cada elemento. Las secciones ***POP1 a ***POP16 guardan las definiciones de los mens desplegables de la barra de mens de AutoCAD (Archivo, Edicin, Ver,... ,?). En el archivo ACAD.MNU estn definidas de la ***POP1 a la ***POP10, correspondindose con cada uno de los elementos que nos encontramos en dicha barra de mens. Podemos definir, entonces, hasta un mximo de ***POP16. Adems de esto, disponemos de otras dos secciones especiales: ***POP0, que define el men de cursor de referencia a objetos (el que aparece al pulsar el botn central del ratn o SHIFT + botn derecho o CTRL + botn derecho) y ***POP17, que define el men de cursor contextual de pinzamientos (el aparecido al pulsar botn derecho tras mostrar los puntos de pinzamiento). Despus del indicativo de seccin, podemos apreciar otro que comienza con dos asteriscos (**). El indicativo ** es categora de submen, pero en este caso, en la seccin ***POP, es lo que se denomina alias. Estos alias definen un nombre para el men desplegable segn su funcin (no son obligatorios). Despus, podremos referenciar dicho men desplegable por su identificador de seccin o por su alias (ya se ver ms adelante). Lo siguiente que vemos, la primera lnea tras el indicativo de seccin o tras el de seccin y alias si lo hubiera es el ttulo del men desplegable. Para este ttulo se permiten 14 caracteres como mximo, pero es conveniente limitar este nmero debido a la posterior alineacin en la barra de mens de AutoCAD. Si esta lnea en la que se indica el ttulo no existiera, el men no funcionara. Adems, ha de ser la inmediatamente posterior al indicativo de seccin o alias, esto es, no puede h aber un espacio en blanco. Decir tambin que, este ttulo, no puede contener comandos asignados, esto es, no se puede utilizar como una opcin lo que se explica a continuacin. Tras el ttulo del desplegable se describen las diferentes opciones que se desplegarn. Como vemos, el ttulo de cada una de ellas, lo que se ver en pantalla, va encerrado entre corchetes, aunque esto no es estrictamente necesario. La diferencia estriba en que la colocacin de corchetes permite la introduccin de un mximo de 78 caracteres para el primer men (el situado ms a la izquierda). Al desplegarse los nombres aparecen alineados por la izquierda. Si no se escribieran los corchetes, AutoCAD truncara todos los nombres a 8 caracteres. Por supuesto, la opcin ms larga determina el ancho de persiana desplegada. Los ttulos de opciones pueden contener una letra subrayada, la cual ser el acceso a la opcin por medio del teclado. As mismo, el nombre de ttulo puede contener tambin una letra subrayada para acceder a l mediante ALT + letra. Este carcter subrayado se consigue anteponiendo el smbolo & (ampersand) al carcter en cuestin. As: [&Archivo] [&Nuevo] [C&oordenada] [Al&tura] Archivo Nuevo Coordenada Altura

NOTA: Exista antiguamente otra forma de indicar el subrayado de una de las letras de la cadena, y era especificar cul de ellas iba a ser la subrayada, de la siguiente forma: [/AArchivo]. Cuidado, porque esto ya no funciona (o no debera). Debemos tener muy en cuenta no repetir dentro de un mismo men desplegable la misma letra subrayada para dos opciones diferentes, ya que, en el peor de los casos, slo funcionara la opcin que antes se encuentre, y eso no nos interesa. Lo mismo ha de comprobarse con los desplegable dentro de un mismo archivo de men, e incluso en diversos archivos de men parciales cargados al mismo tiempo. 2

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Personalizacin de mens La sintaxis de estas opciones no es complicada. Veamos un ejemplo: ID_Line [&Lnea]^C^C_line

Lo situado ms a la izquierda (ID_Line) es una simple etiqueta que despus utilizaremos para referenciar determinados textos de ayuda rpida que aparecen en la barra o lnea de estado (en la seccin ***HELPSTRING) y para referenciar teclas rpidas (en la seccin ***ACCELERATORS). No es necesario incluir esta etiqueta, pero puede servir como veremos. Tras ello, y luego de un espacio o tabulador (da igual el nmero de espacios, todos se interpretan como uno), aparece la definicin textual (entre corchetes) que ser la visualizada en pantalla ([&Lnea]). Como podemos apreciar, aparecer con el primer carcter subrayado. Por ltimo, se escribe la orden en cuestin de AutoCAD que ser ejecutada al pinchar con el cursor del dispositivo sealador en la opcin correspondiente. Adems, suelen incluirse dos caracteres CTRL+C seguidos (^C^C) para anular cualquier orden anterior en proceso no terminada (tecla ESC en Windows), excepto en comandos transparentes. La orden que se ejecutar podr indicarse en castellano si trabajamos con la edicin espaola de AutoCAD o con su equivalente inglesa antecedida por un guin de subrayado (_) tanto si trabajamos con la versin espaola como con la inglesa. Tngase en cuenta que lo que se indica tras el ltimo corchete de cierre es lo mismo que si se escribiera en la lnea de comandos de AutoCAD. As, las siguientes rdenes son anlogas: [&Crculo]^C^Ccirculo [&Crculo]^C^C_circle [&Crculo]^C^Ccircle (slo versin castellana) (versiones castellana e inglesa) (slo versin inglesa)

Existe la posibilidad de presentar alguna de estas opciones, en algn momento, con un tono apagado (gris claro), con el fin de indicar que, en ese momento, la opcin no est disponible. Para realizar esto deberemos escribir una tilde (~) antes del nombre propio de la opcin. Por ejemplo: [~A&tributos nuevos] Recordemos que el carcter tilde se corresponde con el cdigo ASCII 126 y se escribe manteniendo pulsada la tecla ALT y tecleando 126 en el teclado numrico. Este tipo de opciones apagadas han de ir envueltas bajo una condicin, es decir, la opcin estar apagada siempre y cuando se cumpla determinada condicin y si, por el contrario, no se cumple, se encender o viceversa. Este tipo de ordenes aprenderemos a realizarlas ms adelante. Tambin podemos introducir una lnea separadora entre grupos de comandos. Esta lnea podemos conseguirla aadiendo una opcin de men que sea exclusivamente dos guiones entre corchetes, esto es [--]. Una igual la podemos observar en ACAD.MNU, en la seccin ***POP1, entre la opcin [&Abrir] y [&Guardar]. Esta lnea, luego en pantalla, tendr una longitud igual a la opcin ms larga, siempre que sta no sobrepase los 39 caracteres. A veces, es conveniente indicar al lado del nombre de opcin, y con un espacio tabulado, la combinacin de teclas (si las hubiere) rpidas para acceder a dicha opcin de una forma acelerada. Esto se consigue con el mecanismo \t de la forma que vemos a continuacin como ejemplo del archivo que estamos estudiando: [&Nuevo...\tCtrl+N]^C^C_new

3

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Personalizacin de mens De esta manera (sin incluir ningn espacio) se indica que la combinacin CTRL+N tambin accede al cuadro de dilogo Nuevo. Esta combinacin de teclas rpidas puede ser definida en la ltima seccin de un archivo de mens, llamada ***ACCELERATORS (explicada ms adelante). NOTA: Aprciese que, en los mens desplegables, a las opciones que abren cuadros de dilogo se les suelen aadir tres puntos suspensivos detrs del nombre. Esto no es obligatorio, pero se ha convertido en un estndar de Windows para discriminar este tipo de opciones de las que se ejecutan nada ms seleccionarlas. En AutoCAD tampoco es as exactamente, ya la inmensa mayora de las rdenes no se ejecutan directamente y piden opciones en la lnea de comandos, pero la tcnica se utiliza de todos modos para las que abren cuadros de dilogo. En este archivo ACAD.MNU tambin podemos apreciar otro juego de caracteres propios de las secciones ***POP de los archivos de men de AutoCAD. Estos caracteres son: ->, que indica el principio de un men de cascada y Fi&ltros para puntos] [.X].X [.Y].Y [.Z].Z [--] [.XY].XY [.XZ].XZ [ (guin y mayor que) indican el ttulo de una opcin de men que se desplegar en men de cascada. Al representarse en los men de AutoCAD, aparecer una pequea flecha negra, indicando hacia la derecha, que muestra la presencia de un men de cascada posterior y que se despliega a partir de ah. Los dos caracteres de final de men de cascada L&impiar]^C^C_purge [&Todo]^C^C_purge _a [--] [&Capas]^C^C_purge _la [Tipos &lnea]^C^C_purge _lt [&Estilos de texto]^C^C_purge _st [Estilos de &acotacin]^C^C_purge _d [Estilos lnea &mltiple]^C^C_purge _m 4

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Personalizacin de mens [&Bloques]^C^C_purge _b [Tools>Command Alias Editor..., y el ejecutable (ALIAS.EXE) se puede encontrar en el directorio \BONUS\CADTOOLS\ de la carpeta donde se haya instalado AutoCAD. Esta utilidad propone una interfaz grfica para la creacin de alias o abreviaturas de comandos y de rdenes externas. Digna de tener en cuenta. NOTA: En el archivo ACAD.PGP da lo mismo definir antes las abreviaturas que los comandos externos, que al revs.

SIETE.4. REDEFINICIN DE COMANDOS DE AutoCADNOTA: Esta ltima parte de este MDULO no tiene nada que ver con el archivo ACAD.PGP, pero por similitud temtica con las definiciones que en l se encuentran (sobre creacin de comandos y abreviaturas, como hemos visto) se ha incluido aqu. Existe la posibilidad de redefinir cualquiera de la rdenes o comandos inherentes de AutoCAD, es decir, de proporcionar una definicin totalmente diferente a la actual a un comando y hacer que al escribir su nombre realice la nueva funcin. Esto es lo que se conoce como redefinicin de comandos. De esta forma, podramos decirle a AutoCAD que el comando LINEA ya no dibuje lneas como haca, sino que haga lo que a nosotros nos interese. Al escribir la orden en la lnea de comandos, o acceder a ella desde mens, macros o cualquier otro mtodo vlido, el efecto ser el nuevo aplicado. De la misma manera, podremos eliminar la definicin creada o, tambin, continuar accediendo a la definicin base del comando aunque est redefinido. La definicin nueva para un comando de AutoCAD ha de ser un programa AutoLISP o ADS. Es por ello que aqu explicaremos el mtodo, pero no podremos darle una aplicacin real hasta dominar, por ejemplo, la programacin en AutoLISP, cosa que se aprender en su momento (MDULO ONCE).

122

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Creacin de rdenes externas, redefinicin y abreviaturas a comandos El proceso de redefinicin de un comando pasa por la anulacin de la definicin actual base. Para ello se utiliza el comando ANULADEF de AutoCAD (UNDEFINE para las versiones sajonas). Al teclear este comando se nos solicitar el nombre del comando de AutoCAD que queremos redefinir. Una vez introducido dicho nombre, el comando en cuestin estar inoperativo. Antes o despus de anular una definicin deberemos cargar en memoria (mediante APPLOAD) el programa que sustituir a la definicin base. Este programa deber contener una funcin de usuario con el mismo nombre que el comando que redefiniremos. As por ejemplo, para anular la orden LINEA con una rutina AutoLISP, sta deber tener una funcin C:LINEA. De esta manera, al llamar a LINEA se ejecutar el programa implcito. A pesar de todo ello, siempre es posible acceder a la antigua y habitual definicin de un comando de AutoCAD redefinido. Para esto, nicamente deberemos escribir un punto ( .) delante del comando en cuestin a la hora de llamarlo (desde lnea de comandos, mens...), as por ejemplo: .LINEA NOTA: Esta forma de llamar a comandos, junto con el guin bajo que hace que se acepte en cualquier versin idiomtica del programa, es la tpica que ha de utilizarse en la creacin de macros, programas AutoLISP y dems. De esta forma, nos aseguramos la compatibilidad en cualquier ordenador del mundo; sea cual fuere la versin idiomtica de AutoCAD que se utilice y aunque los comandos en ella estn redefinidos. Por ejemplo: _.LINEA. Para volver a la definicin habitual de un comando redefinido, utilizaremos la orden REDEFINE (igual en ingls) de AutoCAD. A la pregunta del nombre de la orden, introduciremos el nombre de la anulada anteriormente mediante ANULADEF. A partir de este momento, la orden funciona de forma habitual y el programa que sustitua su accin queda sin efecto. NOTA: La manera de comportarse un programa AutoLISP, a la hora de abrir un dibujo nuevo o de rearrancar AutoCAD que redefine un comando es igual a la de las aplicaciones externas en general. Por ello, al cerrar AutoCAD la redefinicin se perder, as como puede perderse al abrir nuevos dibujos si un parmetro de configuracin del programa est establecido con un determinado valor. Todo ello y las maneras de evitarlo se estudiar oportunamente ms adelante.

SIETE.5. EJEMPLOS PRCTICOS DE COMANDOS EXTERNOS Y ABREVIATURAS SIETE.5.1. Comandos externos MS-DOSCREADIR, OCULTAR, DIRACAD, SMART, SETIME, MKDIR, ATTRIB +H, DIR "C:\AutoCAD R14", C:\DOS\STARTDRV, TIME, 1, 4, 0,, 4, 0, Unidad: , Hora: , 123 *Ruta y nombre: , Nombre del archivo: ,

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Creacin de rdenes externas, redefinicin y abreviaturas a comandos

SIETE.5.2. Comandos externos WindowsESPACIO, PAINT, IMAGEN, VB, C:, ACAD, START CLEANMGR, START PBRUSH, START C:\ACD\ACDSEE32, START C:\VB\VB5, START C:, 1,, 1, 1, 1, 1,, *Archivo de mapa de bits: , *Directorio: , *Archivo de proyecto: ,

START "C:\AutoCAD R14", 1,,

SIETE.FIN. EJERCICIOS PROPUESTOSI. Crear un comando externo MS-DOS que permita comparar todos los archivos .LSP del directorio de trabajo actual con otro dado por el usuario (comando FC de MS-DOS). Crear un comando externo MS-DOS que elimine todos los archivos actuales en la cola de impresin (comando PRINT de MS-DOS con su modificador /T). Crear un comando externo MS-DOS que cambie el dispositivo terminal actual para trabajar desde un terminal remoto (comando CTTY de MS-DOS con su parmetro AUX). Crear un comando externo MS-DOS que muestre la memoria libre del equipo (comando MEM de MS-DOS). Ofrecer la posibilidad de presentar la respuesta paginada (filtro |MORE de MS-DOS). Crear un comando externo MS- DOS que ejecute el archivo de proceso por lotes indicado por el usuario. Crear un comando externo MS- DOS que permita abrir la unidad de disco especificada por el usuario. Crear un comando externo Windows que ejecute Telnet con una conexin al sistema remoto indicado por el usuario (nombre de archivo TELNET.EXE). Crear un comando externo Windows que acceda a un sitio de la WWW indicado por el usuario mediante Microsoft Internet Explorer (nombre de archivo IEXPLORE.EXE). Crear un comando externo Windows que ejecute el programa Informacin del sistema de Microsoft (nombre de archivo MSINFO32.EXE). Disese un completo grupo de rdenes externas para ejecutar desde AutoCAD todo el juego de comandos de MS- DOS. Asimismo, crese una batera de comandos externos, en la forma preferida por el creador, para ejecutar los programas ms tpicos para Windows 95/98. Hgase tambin un nuevo conjunto de abreviaturas o alias que abarque todo el grupo de comandos de AutoCAD.

II. III.

IV.

V. VI. VII. VIII.

IX. X.

EJERCICIOS RESUELTOS DEL MDULO SEISNOTA: Se utilizan las mismas convenciones de sintaxis explicadas en el MDULO anterior: para las tabulaciones y para los INTRO; en el final de lnea sin este ltimo smbolo no se da un salto de lnea con retorno de carro. EJERCICIO I 124

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Creacin de rdenes externas, redefinicin y abreviaturas a comandos

\#rutinas \$Rutinas ExtraBonus \KRutinas ExtraBonus 2000;ExtraBonus;2000;ORBITA;GIRATR;DESPLAZATR;ANULASOL; CAMBIASOL Biblioteca de rutinas ExtraBonus 2000\ ------------------------------------- Las nuevas rutinas ExtraBonus 2000 aadidas han sido diseadas para realizarle ms fcil su trabajo diario en 3D con AutoCAD. En la biblioteca podemos encontrar cinco comandos nuevos aadidos, todos ellos formados por otros tantos programas en AutoLISP y Visual C++. El acceso a estos programas se realiza mediante los nuevos comandos diseados o mediante los mens nuevos desplegables y/o barras de herramientas. A continuacin se presenta una lista con las diferentes nuevas rutinas, indicando el nombre del nuevo comando asociado a la derecha: RUTINA COMANDO\ ---------------------- ORBITA.ARX ORBITA\ GIRA.ARX GIRATR\ DSPLZTR.ARX DESPLAZATR\ ANUSOL.LSP ANULASOL\ CHGSOL.LSP CAMBIASOL\ \E EJERCICIO II \#purge \$Limpieza del dibujo actual desde la lnea de comandos \KLimpia;Purge;Limpieza;Mscara;Filtro;Comodn Primer paso Escriba la orden "LIMPIA" o "_PURGE" en la lnea de comandos.\ Elija ahora lo que quiere limpiar: bloques, estilos de acotacin, tipos de lnea, etctera. Segundo paso Ahora debe elegir los nombres de elementos que desea limpiar\ Puede usar mscaras tipo comodines de MS-DOS, por ejemplo *, tr*, *capa00*, capa?, ta??1*, etc... Tercer paso Elija si desea confirmar cada elemento que se eliminar\ Tras esto, slo procede ir eliminando uno a uno o todos a la vez, dependiendo de lo elegido. \E

EJERCICIO III \#bloques \$Dilogo de insercin de bloques \KDilogo de insercin de bloques;Insercin;Bloque 1. Teclee el comando INSERBLOQ para arrancar el cuadro de dilogo "Insercin de bloques". Tambin puede utilizar su correspondencia en el men desplegable "Bloques", en el men de pantalla en la seccin "Bloques" o en la 125

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Creacin de rdenes externas, redefinicin y abreviaturas a comandos barra de herramientas "Bloques".\ 2. Para elegir un directorio con bloques pulse el botn "Examinar..." Busque y escoja el directorio en el cuadro de dilogo correspondiente.\ 3. Al volver al letrero elija el bloque que desea insertar de los iconos que ver en la zona derecha.\ 4. Pulse el botn "Designar donde n es un nmero que indica cuntos parntesis faltan por cerrar. Se pueden introducir por teclado esos parntesis y subsanar el error. Por ejemplo: Comando: (SETQ sx (SIN (* PI (/ x 180.0)) 2> )) 0.523599 Tercera: Tambin es posible evaluar directamente un smbolo (extraer por ejemplo el valor actual contenido en una variable), introduciendo por teclado el signo de cerrar admiracin seguido del nombre del smbolo. Esta evaluacin se puede producir incluso en mitad de un comando. Por ejemplo, para suministrar como ngulo para un arco el valor contenido en la variable x, se responde a la solicitud de AutoCAD con !x. Por ejemplo: Comando: !sx 0.523599 Cuarta: Los valores enteros, reales, cadenas de texto y descriptores de archivos, devuelven su propio valor como resultado. Los nombres de funciones inherentes o subrutinas de AutoLISP devuelven un nmero interno hexadecimal (suele cambiar de una sesin de dibujo a otra). Por ejemplo: !72.5 !"Inicio" !SETQ Quinta: Los smbolos de variables participan con el valor que contienen (que les est asociado) en el momento de la evaluacin. Por ejemplo: !x !sx devuelve devuelve 30 0.523599 190 devuelve devuelve devuelve 72.5 "Inicio"

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP Sexta: Determinadas funciones de AutoLISP pueden devolver un valor nulo, que se representa mediante la expresin nil. Por ejemplo: Comando: (PROMPT "Bienvenido a AutoLISP\n") Bienvenido a AutoLISP nil La funcin PROMPT escribe en la lnea de comando el mensaje especificado y devuelve nil. El cdigo \n equivale a INTRO.

ONCE.2.3. Archivos fuente de programasLas expresiones contenidas en un programa de AutoLISP pueden introducirse directamente desde el teclado durante la edicin de un dibujo de AutoCAD, escribirlas en un fichero de texto ASCII o ser suministradas por una variable del tipo cadena, como ya se ha dicho varias veces. Para una correcta evaluacin, las expresiones deben cumplir unos requisitos de sintaxis, que se pueden resumir en los siguientes puntos: Una expresin puede ser tan larga como se quiera. Puede ocupar varias lneas del archivo de texto. Los nombres de smbolos pueden utilizar todos los caracteres imprimibles (letras, nmeros, signos de puntuacin, etc.) salvo los prohibidos que son: ( ) . " ; Los nombres de smbolos no son sensibles a las maysculas. As, seno y SENO representan el mismo nombre. Los nombres pueden contener nmeros, pero no estar formados exclusivamente por nmeros. As, 1pt, pt-1, p12 son vlidos como nombres de variables, pero no 21, que ser interpretado como un valor numrico constante. Los caracteres que terminan un nombre de smbolo o un valor explcito (una constante numrica o de texto) son: parntesis de apertura y cierre, apstrofo, comillas, punto y coma, espacio en blanco o final de lnea en el archivo. Estos caracteres sirven de separacin entre elementos de una lista. Los espacios en blanco de separacin entre smbolos son interpretados como un solo espacio entre cada par de smbolos. Se recuerda que es necesario un espacio en blanco para separar un smbolo del siguiente, siempre que no haya parntesis, apstrofo, comillas o punto y coma. Debido a la longitud de las expresiones de AutoLISP y a la profusin de parntesis que dificultan su lectura, suele ser norma habitual realizar sangrados en las lneas del archivo de texto, para resaltar los parntesis interiores de los exteriores. Todos los espacios aadidos son interpretados como uno solo. Los valores explcitos (constantes) de nmeros pueden empezar con el carcter + o que es interpretado como el signo del nmero. Los valores de constantes de nmeros reales deben empezar con una cifra significativa. El carcter punto (.) se interpreta como el punto decimal. Tambin se admite + o - para el signo y e o E para notacin exponencial o cientfica. No es vlida la coma decimal, ni tampoco abreviar como en .6 (hay que escribir 0.6).

191

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP Los valores de constantes con cadenas de texto son caracteres que empiezan y terminan por comillas. Dentro de las cadenas se pueden incluir caracteres de control mediante la contrabarra (\). Los cdigos permitidos son: \\ \" \e \n \r \t \nnn \U+xxxx \M+nxxxx Carcter contrabarra (\). Carcter comillas ("). Carcter de escape. Nueva lnea o retorno de carro. INTRO Carcter de tabulador TAB Carcter cuyo cdigo octal (no ASCII, que es decimal) es nnn. Secuencia de caracteres de cdigo Unicode. Secuencia de caracteres multibyte.

Los cdigos deben ir en minsculas. Para incluir en una cadena un cdigo ASCII hay que calcular su valor octal. Por ejemplo, el carcter dlar $ es ASCII 36; su valor octal ser 44 y en la cadena habr que indicar el cdigo de control \44. El apstrofo () se puede utilizar como abreviatura del comando QUOTE. El comando QUOTE devuelve el literal del smbolo. Es decir, cuando en una expresin un smbolo aparece precedido por apstrofo o se le aplica la funcin de AutoLISP QUOTE, no se evala con el valor que contiene en ese momento sino que devuelve el propio nombre literal del smbolo. Se pueden incluir comentarios en un archivo de texto con programas y expresiones en AutoLISP, comenzando la lnea del archivo con un punto y coma (;). A partir de donde se encuentre un punto y coma hasta el final de la lnea, AutoLISP considera que son comentarios y no los tiene en cuenta. Tambin se pueden incluir comentarios en mitad de una lnea u ocupando varias de ellas, si se sitan entre los caracteres ;| y |;. Por ejemplo: ;Funcin de estado actual del dibujo. (DEFUN funcion_1 (x / pt1 pt2) (SETQ refnt0 ;| modos de referencia actualmente activados |; (GETVAR "osmode")) ... Los comentarios son tiles tanto para el autor del programa como para futuros usuarios que accedan al archivo con el fin de modificarlo. Suele ser habitual situar al principio del archivo el ttulo, autor y fecha de creacin. Posteriormente, una explicacin general del programa, explicaciones particulares de cada funcin intermedia, usos de variables, etc. Como muchas de las configuraciones de pantalla de texto disponen de un ancho de 80 columnas, conviene que las lneas del archivo de texto no sobrepasen los 80 caracteres.

ONCE.2.4. Variables predefinidasExisten unos valores de smbolos de AutoLISP predefinidos. Son los siguientes: PI. Es el valor del nmero real PI, es decir: 3,141592653589793. PAUSE. Es una cadena de texto que consta de un nico carcter contrabarra. Se utiliza para interrumpir un comando de AutoCAD despus de haberlo llamado mediante la funcin de AutoLISP COMMAND. Esto permite al usuario introducir algn dato. T. Es el smbolo de True, es decir, cierto o verdadero (valor 1 lgico). Se utiliza para establecer que determinadas condiciones se cumplen.

192

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP Por ltimo el valor de nada, vaco o falso (0 lgico) se representa en AutoLISP por nil. Este valor aparece siempre en minsculas y no es propiamente un smbolo, ya que no est permitido acceder a l.

ONCE.3. PROGRAMANDO EN AutoLISPA partir de ahora vamos a comenzar a ver poco a poco la manera de ir haciendo nuestros programas en AutoLISP. Vamos a seguir un orden lgico de menor a mayor dificultad, por lo que la estructura puede llegar a parecer un poco catica para alguien que conozca el lenguaje. Tampoco es objetivo de este curso profundizar en un mtodo complejo de programacin, sino proponer unas bases para comenzar a programar que, con imaginacin y horas de trabajo, podr convertirnos en programadores expertos de AutoLISP. Todo lo visto hasta ahora resulta la parte rida de la programacin; parece que no sirven de mucho esos conocimientos tericos mientras no pasemos a la prctica. De aqu en adelante podremos ir entendiendo las 2 primeras secciones de este MDULO y, si algo se qued en el tintero o algo hay que repetir de todo lo expuesto hasta aqu, se completar y se explicar o repetir. Comencemos, pues, con la programacin en AutoLISP para AutoCAD.

ONCE.3.1. Convenciones de sintaxisLas convenciones utilizadas para las sintaxis en este MDULO van a ser las siguientes: Sintaxis recuadrada para su fcil bsqueda y deteccin. Nombre del comando o funcin AutoLISP en maysculas. Argumentos en minscula itlica, representados por un nombre mnemotcnico. Argumentos opcionales encerrados entre corchetes itlicos (que no han de escribirse). Puntos suspensivos en itlica indican la posibilidad de indicar ms argumentos.

ONCE.4. OPERACIONES NUMRICAS Y LGICASExplicaremos aqu la manera en que se realizan en AutoLISP las operaciones matemticas, de comparacin y lgicas. El buen aprendizaje de ests tcnicas nos ser tremendamente til a la hora de lanzarnos a la programacin pura.

ONCE.4.1. Aritmtica bsicaPara realizar las cuatro operaciones aritmticas bsicas existen cuatro funciones AutoLISP que son +, -, * y /, estas se corresponden con la suma, resta, multiplicacin y divisin. La funcin de suma tiene la siguiente sintaxis: (+ [valor1 valor2 valor3...]) Esto es, primero se indica el nombre de la funcin, como siempre en AutoLISP, que en este c aso es + y luego los argumentos de la misma, es decir, aqu los valores de los distintos sumandos.

193

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP Esta funcin devuelve el resultado aditivo de todos los valores numricos especificados como argumentos de la funcin. Por ejemplo: (+ 14 10 20) devolvera el valor 44. Para hacer la prueba nicamente debemos escribir dicho rengln en la lnea de comandos de AutoCAD, pulsar INTRO y comprobar el resultado. NOTA: Al introducir el primer carcter de apertura de parntesis, AutoCAD reconoce que se est escribiendo una expresin en AutoLISP, por lo que nos permitir utilizar los espacios necesarios de la sintaxis sin que se produzca un INTRO cada vez, como es habitual. Recordemos que todos los elementos de una lista de AutoLISP han de ir separados por lo menos con un espacio blanco. Probemos diferentes sintaxis utilizando ms espacios, o tabuladores, y comprobemos que el resultado es el mismo; se interpretan los espacios o tabuladores como un nico carcter de espacio en blanco. NOTA: Hagamos la prueba de no i troducir el parntesis final de la lista indicada. n Comprobaremos lo explicado en la segunda regla de la seccin ONCE.2.2. Con la funcin + podemos indicar valores enteros o reales. Si todos los valores son enteros el resultado ser entero, pero si uno o varios de ellos son reales o todos ellos, el resultado ser real. Esto significa que nicamente es necesario introducir un valor real para recibir una respuesta real. Por ejemplo, si introducimos la siguiente lnea en la lnea de comandos en AutoCAD: (+ 14 10 20.0) el resultado ser: 44.0 o sea, un nmero real. Esto aqu parece irrelevante, pero comprenderemos su utilidad al hablar, por ejemplo, de la divisin. Si indicamos un solo sumando con esta funcin, el resultado es el valor del propio sumando. Por ejemplo: (+ 23) devuelve: 23 Y si se escribe la funcin sin argumentos, el resultado es 0 (funcin sin argumentos: (+)). Los valores indicados en la funcin de suma pueden ser directamente valores numricos o nombres de variables numricas declaradas anteriormente, por ejemplo: (+ 10.0 x total) En esta funcin, 10.0 es un valor constante real y x y total son dos nombres de variables que han debido ser anteriormente declaradas; ya aprenderemos a declarar variables. Si la variable no existiera se producira un error bad argument type de AutoLISP. Otros ejemplos con nmeros negativos: 194

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP (+ 10 23) (+ -10 10) devuelve 13 devuelve -20

NOTA: Si se produce algn error de sintaxis u otro, podemos acudir al final de este MDULO para ver una relacin de los mensajes de error de AutoLISP. La funcin de resta, por su lado, tiene la siguiente sintaxis: (- [valor1 valor2 valor3...]) Esta funcin devuelve la diferencia del primer valor con todos los dems indicados. As por ejemplo: (- 10 5) da como resultado 5 y la siguiente expresin: (- 10 5 2) da como resultado 3. Esto es producto de restar 10 5 = 5 y, luego, 5 2 = 3; o lo que es lo mismo 10 (5 + 2) = 3. Al igual que en la suma, si se indican valores enteros el resultado ser entero, si se indica uno real (con uno es suficiente) el resultado es real, si se indica un solo valor se devuelve el mismo valor y si se escribe la funcin sin argumentos se devuelve 0. As pues, si queremos un resultado real efectuado con nmeros enteros para posteriores operaciones, deberemos indicar uno de los valores entero; de la siguiente manera, por ejemplo: (- 10 5.0 2) o cualquier otra combinacin posible de uno o ms nmeros enteros. Como se ha explicado para la suma, los valores de los argumentos para la resta pueden ser constantes, eso s, siempre numricas, o variables: (- tot num1 num2) Llegados a este punto, podemos suponer ya las diferentes combinaciones que podremos realizar con las distintas funciones aritmticas. Por ejemplo, es factible la evaluacin de la siguiente expresin: (+ 12 (- 2 -3)) cuyo resultado es 11. O sea, y como hemos explicado, se realizarn las operaciones de dentro a fuera. En este ejemplo, se suma la cantidad de 12 a la diferencia 2 3, esto es, 12 + (2 3) = 11. Como vemos, existen dos listas, una interior anidada a la otra que es, a la vez, argumento de la lista exterior. Ocurre lo mismo con nombres de variables: (- fer1 (+ -sum1 sum2) 23.44) Con respecto al producto su sintaxis es la siguiente: (* [valor1 valor2 valor3...]) Se evala el producto de todos los valores numricos indicados como argumentos. Como anteriormente, si un valor es real el resultado es real. Un solo valor como argumento devuelve el mismo valor. Ningn valor devuelve 0. Veamos un ejemplo: 195

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP (* 12 3 4 -1) El resultado es -144. Veamos otros ejemplos: (* (* ((+ 2 3) val (- vax vad)) (* 12 2) 24) (- -10 -5) (* 3 total 23))

NOTA: Si escribimos ms parntesis de los necesarios por la derecha se nos mostrar un mensaje de error. Recordar que si no los escribimos nos da la opcin de escribirlos despus, as como el nmero de ellos que faltan. De todas forma, consltese el final del MDULO para la explicacin de los mensajes de error. La sintaxis de la divisin es la que sigue: (/ [valor1 valor2 valor3...]) La funcin / realiza el cociente del primer valor numrico por todos los dems, es decir, divide el primer nmero por el producto de los dems. Por ejemplo: (/ 10 2) da como resultado 5. Y el ejemplo siguiente: (/ 100 5 5) da como resultado 4, es decir, 100 / 5 = 20 y, luego, 20 / 5 = 4; o lo que es lo mismo, 100 / (5 * 5) = 4. Otros dos ejemplos: (/ 24 (* (+ 10.0 2) 12)) (/ 12 2 1) Con respecto al cociente debemos realizar las mismas observaciones anteriores, esto es, si se indica un solo valor se devuelve el mismo valor, si se indica la funcin sin argumentos se devuelve 0 y si se indican valores enteros slo se devuelven valores enteros. Esto ltimo cobra especial sentido en el caso de las divisiones, ya que el cociente entre dos nmeros enteros puede ser un nmero real. Veamos el siguiente ejemplo: (/ 15 7) Si introducimos esta lnea el resultado ser 2. El motivo es que, como hemos especificado valores enteros, el resultado se muestra en forma de nmero entero, con la parte decimal o mantisa truncada. Para asegurarnos de recibir una respuesta correcta (con decimales significativos), deberemos introducir uno de los valores o todos ellos, pero con uno es suficiente como valor real, de la siguiente forma: (/ 15 7.0) Ahora el resultado ser 2.14286. El nmero entero podra haber sido el otro: (/ 15.0 7) Esto debemos tenerlo muy en cuenta a la hora de realizar operaciones cuyo resultado vaya a ser parte integrante de otra operacin o no que puede devolver decimales. 196

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP Vemos otros ejemplos de divisiones: (/ -12.0 7.8 210) (/ (+ (- 23.3 32) 12.03) (/ (* (+ 1.01 2.01) 100))) (+ datos (/ grupo (* 100 2))) NOTA: Evidentemente, la divisin por 0 produce un error de AutoLISP: divide by zero.

1 fase intermedia de ejercicios Realizar mediante AutoLISP las siguientes operaciones aritmticas (estn expresadas en notacin informtica sencilla de una lnea): (50 + 5) / 2 (200 * 5 3) / (4 / 2) (10.23 (12.03 / 3)) * (12 + (2 * -2) ((12.5 / 2) * 2.65)) (19 + 23) / (10 + (23 / (23 / 19))) ((-20 / 5) 1) / (15.5 * ((15.5 1) / 12))

ONCE.4.2. Matemtica avanzadaFuera aparte de las funciones aritmticas de nivel bsico, programando en AutoLISP podemos realizar operaciones matemticas complejas como races cuadradas o senos. Vamos a explicar aqu las funciones que controlan estas operaciones. Las dos primeras que veremos son sencillas de entender y utilizar. Ambas se refieren al incremento, positivo o negativo, de una unidad a un valor numrico. (1+ valor) Esta sintaxis corresponde a la funcin de incremento positivo de una unidad al valor indicado. As, si queremos incrementar en 1 el valor 576, haremos: (1+ 576) Esto equivale a (+ 576 1) pero es de una forma ms cmoda; el resultado es 577. NOTA: La funcin se denomina 1+ en s, por lo que no existe espacio entre 1 y +. Podemos realizar estos incrementos con nombres de variable: (1+ n) lo que incrementar en una unidad el valor de n. Esto puede ser especialmente necesario para controlar los llamados contadores-suma en programacin, del tipo: (SETQ sum (1+ sum)) Esto ya lo veremos a la hora de declarar variables. La siguiente funcin resta (incremento negativo) una unidad al valor numrico indicado. Equivale a (- valor 1), pero de una forma ms cmoda. 197

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP (1- valor) Por ejemplo: (1- 32) suyo resultado es 31. Otros ejemplos de estas dos funciones: (1(1(1(1+ (1+ (1(1n) 67.90) -23) -34.0) (+ tuttot 1) (* 2 2)) (* (/ 32 2) (+ 10 1.0)))

(ABS valor) Esta funcin ABS devuelve el valor absoluto del nmero indicado o expresin indicada. De esta forma, la siguiente expresin: (ABS 23) devuelve 23. Las siguientes expresiones tienen el siguiente efecto indicado: (ABS (ABS (ABS (ABS (ABS (ABS 25.78) 45) 0) 13) (/ 2 3.0)) (/ 2 -3.0)) devuelve devuelve devuelve devuelve devuelve devuelve 25.78 45 0 13 0.666667 0.666667

(FIX valor) FIX trunca un valor a su parte entera (positiva o negativa), es decir, de un nmero real con decimales devuelve nicamente su parte entera. Pero, cuidado, no se produce redondeo, slo un truncamiento. Ejemplos: (FIX (FIX (FIX (FIX 32.79) 12.45) (/ 10 3.0)) (/ 10 3.0)) devuelve devuelve devuelve devuelve 32 12 3 3

(REM valor1 valor2 [valor3...]) Esta funcin AutoLISP devuelve el resto del cociente (mdulo) de los dos valores introducidos en principio. Por ejemplo, la siguiente expresin devuelve 6 como resultado: (REM 20 7) 198

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP Dicho 6 es el resto que resulta de dividir 20 / 7. Si aplicamos la regla de la divisin (dividendo es igual a divisor por cociente ms resto): 20 = 7 * 2 + 6, vemos que se cumple correctamente. Si se especifican ms de dos valores, el resto anterior es dividido entre el actual, devolviendo el nuevo resto de la nueva divisin. Por ejemplo: (REM 20 7 4) da como resultado 2. El primer resto 6 se calcula de la forma explicada en el ejemplo anterior y, el resultado final 2, se produce al dividir dicho primer resto entre el tercer valor 4. Al dividir 6 / 4, nos da un resultado (que es igual a 1) y un resto 2 (valor final obtenido). Y as sucesivamente. Otros ejemplos: (REM (REM (REM (REM 1 2) 0 23) (* 23 2) (- (+ 1 1) 45.5)) 54 (* 3 -4))

Pasemos ahora a ver las funciones trigonomtricas, esto es, cmo calcularlas mediante AutoLISP. La primera sintaxis se refiere al seno de un ngulo y es la siguiente: (SIN ngulo) La funcin SIN devuelve el seno de un ngulo expresado en radianes. Ejemplos: (SIN 1) (SIN (/ PI 2)) devuelve 0.841471 devuelve 1.0

NOTA: Como sabemos PI es un constante de A utoLISP, por lo que no hace falta declararla como variable; ya tiene valor propio y es 3.14159. An as, se puede calcular su valor exacto mediante la expresin: PI = 4 * arctag 1. (COS ngulo) COS devuelve el coseno de un ngulo expresado en radianes. Ejemplos: (COS PI) (COS (* 3 4)) devuelve 1.0 devuelve 0.843854

NOTA: Ntese que PI es un valor real, por lo que el resultado ser real. (ATAN valor1 [valor2]) Esta funcin ATAN devuelve el arco cuya tangente es valor1 expresada en radianes, es decir, realiza el arco-tangente de dicho valor. Por ejemplo: (ATAN 1.5) devuelve 0.98

Si se indica un segundo valor ( valor2), ATAN devuelve el arco-tangente de valor1 dividido por valor2. Esto permite indicar la razn entre los lados de un tringulo recto, es decir, escribir la tangente directamente como cociente del seno entre el coseno. Si valor2 es 0, el valor devuelto ser igual a PI / 2 o a PI / 2 radianes, dependiendo del signo de valor1. 199

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP Ejemplos: (ATAN 1 1) (ATAN 1 (* 2 -4.5)) Estas son las tres funciones trigonomtricas de AutoLISP. En este punto se nos plantean un par de problemas: cmo calculo las restantes funciones trigonomtricas? y cmo convierto grados sexagesimales en radianes y viceversa? La segunda cuestin es sencilla, ya que basta aplicar al frmula rad = grados * PI / 180 para convertir grados en radianes. La operacin inversa en fcilmente deducible. La primera pregunta tiene una respuesta no menos sencilla, y es que en la mayora por no decir todos de los lenguajes de programacin nicamente nos proporcionan estas funciones trigonomtricas bsicas y, a partir de ellas, podemos calcular las funciones trigonomtricas derivadas inherentes. La manera se explica a continuacin mediante notacin sencilla de una lnea: Funcin derivada Secante (sec x) Cosecante (cosec x) Arco-seno (arcsen x) Arco-coseno (arccos x) Arco-secante (arcsec x) Arco-cosecante (arccos x) Arco-cotang. (arccotag x) Notacin 1 / cos (x) 1 / sen (x) arctag (x / (1 x ^ 2)) 1.5707633 arctag (x / (1 x ^ 2)) arctag ( (x ^ 2 1)) + signo (x) 1) * 1.5707633 arctag (1/ (x ^ 2 1)) + signo (x) 1) * 1.5707633 1.5707633 arctag (x)

NOTA: El smbolo ^ significa exponenciacin. es raz cuadrada. signo (x) se refiere al signo del valor; si ste es positivo signo (x) valdr 1, si es negativo valdr 1 y si es cero valdr 0. No debemos preocuparnos ahora por esto, ya que aprenderemos en breve o ms adelante con mayor soltura a realizar exponenciaciones, races cuadradas y operaciones con signos. Sigamos, pues, ahora con otras diferentes funciones que nos ofrece AutoLISP a la hora de realizar operaciones matemticas. La siguiente dice referencia a las races cuadradas; su sintaxis es: (SQRT valor) Esta funcin devuelve el resultado de la raz cuadrada del valor indicado, ya sea un guarismo simple o una expresin matemtica, como siempre. As por ejemplo, veamos unas expresiones con sus correspondientes evaluaciones: (SQRT 4) (SQRT 2) (SQRT (* 2 6)) devuelve 2.00 devuelve 1.4142 devuelve 3.4641

La intencin de extraer una raz cuadrada de un nmero negativo produce el error function undefined for argument de AutoLISP. Por otro lado, la sintaxis para la funcin exponencial es la siguiente: (EXPT base exponente) EXPT devuelve el valor de base elevado a exponente. De esta forma, para elevar 5 al cubo (igual a 125), por ejemplo, escribiremos: 200

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP (EXPT 5 3) Otro ejemplo: (EXPT 2.3 7.23) De esta forma, como sabemos, podemos resolver el resto de races (cbicas, cuartas, quintas...) existentes. Ya que raz cbica de 32 es lo mismo que 32 elevado a 1 / 3, podemos escribir la siguiente expresin: (EXPT 32 (/ 1 3)) As tambin: (EXPT 20 (/ 1 5)) (EXPT 10 (/ (+ 2 4) (- v23 rt sw2)) (EXPT 3 (/ 1 2)) NOTA: El intento de extraer ra ces negativas de cualquier ndice producir el mismo error explicado en SQRT. (EXP exponente) Esta funcin devuelve la constante (nmero) e elevada al exponente indicado. Se corresponde con el antilogaritmo natural. Por ejemplo: (EXP 1) (LOG valor) LOG devuelve el logaritmo neperiano o natural (en base e) del valor indicado. Por ejemplo: (LOG 4.5) devuelve 125.0000 devuelve 2.71828

(GCD valor_entero1 valor_entero2) Esta sintaxis se corresponde con la funcin de AutoLISP GCD, que devuelve el mximo comn denominador de los dos valores indicados. Estos valores han de ser obligatoriamente enteros, de no ser as, AutoLISP devuelve bad argument type como mensaje de error. Veamos unos ejemplos: (GCD 45 80) (GCD 80 70) (GCD (* 10 10) (/ 70 2)) devuelve 5 devuelve 10 devuelve 5

Si se indica un entero negativo el mensaje de error de AutoLISP es improper argument. Las dos ltimas funciones matemticas que veremos pueden sernos de gran ayuda a la hora de programar. Una de ellas (MAX) devuelve el mayor de todos los nmeros indicados en la lista. Su sintaxis es: (MAX valor1 valor2...)

201

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP Los valores pueden ser nmeros enteros o reales, y tambin expresiones matemticoaritmticas. As por ejemplo: (MAX 78.34 12 789 7) devolver 789.0, ya que es el nmero mayor. Lo devuelve como real por la aparicin de decimales en el elemento 78.34. Como sabemos, con la sola aparicin de un valor real en una lista, el resultado es real. Si el elemento mayor de la lista es un expresin matemtica, se devolver su resultado, no la expresin en s, por ejemplo: (MAX (* 10 10) 5) devolver 100 como resultado (10 * 10). Otro ejemplo: (MAX 5 7 9) devolver 5. (MIN valor1 valor2...) La funcin MIN, por su lado, devuelve el menor de todos los valores indicados en lista. Las dems consideraciones son anlogas a la funcin anterior. Ejemplos: (MIN 1 2 3 4 7) (MIN 23.3 7 0) (MIN (/ 7 3) 0.56) devuelve 1 devuelve 0.0 devuelve 0.56

Ejemplos de MAX y MIN con variables: (MIN x y z) (MIN (+ x1 x2) (+ y1 y2) (+ w1 w2) (+ z1 z2)) Y hasta aqu todas las funciones que tienen que ver con operaciones matemticas. Pasaremos, tras unos ejercicios propuestos, a ver las operaciones de comparacin, muy interesantes y sencillas de comprender.

2 fase intermedia de ejercicios Realizar mediante AutoLISP las siguientes expresadas en notacin sencilla de una lnea): operaciones matemticas (estn

((20 3) * (8 2)) 1 + 78.8 + ((78.8 ^ 2) / 2) + ((78.8 ^ 3) / 3) (sen ( (80 * 28.002) cos (PI / 2))) / (PI (1 / 2)) arccos (100 / 2) (124.6589 * (e ^ 2.3)) / (7 * 2) ln (45 * (7 / 2)) (23.009 / 78.743) ^ (56.00123 1)

Realcense ejercicios de clculo de valores mayores y menores de listas, as como de mximos comunes denominadores. 202

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP Realizar un par de ejercicios de incremento y decremento de una unidad a valores. NOTA: Las operaciones en general siguen en AutoLISP la jerarqua de las operaciones matemticas: parntesis internos, parntesis externos, operadores unitarios (signos), potenciacin, mu ltiplicacin y divisin, suma y resta, operadores relacionales (mayor que, menor que...) y operadores lgicos (lgebra de Boole). Y cuando existen varios operadores en el mismo nivel, se ejecutan de izquierda a derecha. Ahora mismo veremos operadores relacionales o de comparacin y, luego, el lgebra de Boole en AutoLISP.

ONCE.4.3. Operaciones relacionalesLas funciones que veremos a continuacin se denominan relacionales o de comparacin, y es que comparan valores, ya sean numricos o textuales (cadenas) emitiendo un resultado verdadero o falso, segn la comparacin. Estas funciones son conocidas por todos (igual, mayor que, menor o igual que...), slo queda determinar cmo se utilizan y cul es su sintaxis en AutoLISP. Como hemos dicho el resultado de la evaluacin solo puede ser uno de dos: T (True) que representa el verdadero o cierto, o nil que representa el falso o nulo. NOTA: Con la devolucin nil por parte de AutoLISP nos empezamos a familiarizar ahora y la veremos muchas veces. Comencemos por el igual o igual que, cuya sintaxis es la siguiente: (= valor1 [valor2...]) La funcin = compara todos los valores especificados uno como mnimo, devolviendo T si son todos iguales o nil si encuentra alguno diferente. Los valores pueden ser nmeros, cadenas o variables (numricas o alfanumricas). As por ejemplo: (= (= (= (= (= 5 5) 65 65.0) 7 54) 87.6 87.6 87.6) 34 34 34 34) devuelve devuelve devuelve devuelve devuelve T T nil T nil

Veamos ahora algn ejemplo con cadenas: (= (= (= (= "hola" "hola") "casa" "cAsa") "H" "H" "H" "H") "hola ahora" "hola devuelve devuelve devuelve devuelve T nil T nil

ahora")

NOTA: Ntese, como adelanto, que las cadenas literales han de ir encerradas entre comillas, como en casi todos los lenguajes de programacin. Con variables declaradas, que ya veremos, sera de la misma forma. Si slo se indica un valor en la lista, AutoLISP devuelve T. NOTA: Hay que tener en cuenta que esta funcin slo compara valores y no listas o expresiones. Si, por ejemplo, se tienen dos variables pt1 y pt2 con dos puntos que son listas de tres elementos (una coordenada X, una coordenada Y y una coordenada Z), para comparar 203

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP la igualdad de ambos habra que recurrir a una funcin lgica como EQUAL, que veremos un poco ms adelante. (/= valor1 [valor2...]) Esta funcin /= (distinto o desigual que) devuelve T si alguno o algunos de los valores comparados de la lista son diferentes o distintos de los dems, por ejemplo en los siguientes casos: (/= 2 3) (/= "texto" "textos") (/= (* 2 2) (* 2 4) (* 2 3) Devuelve nil si todos los valores son iguales, por ejemplo: (/= (/= (/= (/= "casa" "casa" "casa") "1 2 3" "1 2 3" "1 2 3" "1 2 3" "1 2 3") 32 32 32 32) (* 10 10) (* 25 4))

Si nicamente se indica un valor, AutoLISP devuelve T. (< valor1 [valor2...]) Esta sintaxis se corresponde con la comparacin menor que. Es una funcin AutoLISP que devuelve T si efectivamente el primer valor comparado es menor que el segundo. Si existen diversos valores, cada uno ha de ser menor que el siguiente para que AutoLISP devuelva T. Si no se devuelve nil. Veamos algunos ejemplos: (< (< (< (< 2 3) 3 4 5 89 100) 3 4 5 6) (* 2 2) (/ 5 3)) devuelve devuelve devuelve devuelve T T nil nil

En el caso de cadenas o variables alfanumricas (las que contienen cadenas), la comparacin se efecta segn el valor de los cdigos ASCII. Por lo tanto, ser el orden alfabtico ascendente (de la A a la Z) la manera de considerar de menor a mayor los caracteres, teniendo en cuenta que el espacio blanco es el carcter de menor valor y que las letras maysculas son de menor valor que las minsculas. Ejemplos: (< (< (< (< "a" "z" "A" "f" "b") "h") "a" "b") "S") devuelve devuelve devuelve devuelve T nil T nil

Si las cadenas tienen ms caracteres se comparan de la misma forma: (< "abc" "abd") (< "abc" "ab") devuelve T devuelve nil

No es posible comparar cadenas literales con nmeros; AutoLISP devuelve un mensaje de error que dice bad argument type. Con variables que contienen valores numricos o literales se realizara de la misma manera: (< valor1 valor2 total) (< -12 7 km hrs) 204

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP (< autor1 autor2 autor3 auto4 autor5) ( 23 45) devuelve nil Otros ejemplos: (> saldo divid) (> pplanta ppiso pcubierta) (>= valor1 [valor2...]) Similar a los anteriores, establece la comparacin mayor o igual que. Se devolver T si y slo si cada valor es mayor o igual que el que le sucede, si no, nil. Las dems consideraciones son idnticas a las otras funciones similares explicadas. Ejemplos: (>= 33 23 23 12 12 54) (>= 24 24 24 23 23 0.01 3) devuelve nil devuelve T

3 fase intermedia de ejercicios Indicar el resultado de AutoLISP (T o nil) ante las siguientes proposiciones: (= 23 23.0) (= 48.0 (* 6 8)) (= "AutoLISP" "autolisp" "aUtOlIsP") (/= (/ 7 2) (/ 2 7)) (/= "libro" "libro ") (< 3 5 6 (+ 5 67)) ( "coche" "mesa") (>= "coche" "cochecito") (>= "cochu" "coche" "coche" "cocha") (>= "" "" "a") 205

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP

ONCE.4.4. Operaciones lgicasAdems de lo estudiado hasta ahora, existen cuatro operaciones lgicas referidas al lgebra de Boole. Estas operaciones son el Y lgico, el O lgico, la identidad y el NO lgico. Adems, existe una quinta funcin que veremos al final denominada de identidad de expresiones y que es un poco especial. Las cuatro funciones que vamos a ver actan como operadores lgicos y devuelven, al igual que las anteriores, nicamente los resultados T (cierto) o nil (falso). (AND expresin1 [expresin2...]) Esta funcin realiza el Y lgico de una serie de expresiones indicadas que representan otras tantas condiciones. Esto significa que evala todas las expresiones y devuelve T si ninguna de ellas es nil. En el momento en que alguna es nil, abandona la evaluacin de las dems y devuelve nil. Es decir, se deben cumplir todas y cada una de las condiciones. Veamos un ejemplo: (AND (= 10 10)) devuelve T

Esto significa que, si se cumple la condicin de la primera lista (= 10 10) devolver T. Como esto es as, devuelve T. De otra forma, si una de las condiciones no se cumple, devuelve nil, por ejemplo en el siguiente caso: (AND (= 10 10) (> 10 10)) La primera condicin en verdadera (10 es igual a 10), pero la segunda es falsa (10 no es mayor que 10). Como una ya no se cumple se devuelve nil. Han de cumplirse todas las condiciones para que sea el resultado verdadero. Veamos otros dos ejemplos: (AND (= 10 10) (> 23 22.9) (/= "camin" "camioneta")) (AND ( 20 2))

206

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP O sea, si es menor 20 que 2 que no lo es o si es mayor 20 que dos que s lo es, devuelve T. El cumplirse una de las dos condiciones es condicin suficiente para que devuelva T. Veamos otro ejemplo: (OR (= 20 2) (> 2 20)) devuelve nil

En este caso ninguna de las dos condiciones se cumplen (ambas son nil), as que el resultado final ser nil. Como en el caso de la funcin AND, no tiene sentido utilizar una sola expresin, ya que el resultado sera el mismo que al escribirla sola. Veamos otros ejemplos: (OR (>= 30 30 20 5) ( 300 200 500)) (AND (>= "a" "a") (>="z" "a") (>= " " " ") (>= "" "")) (AND (OR (= 2 2) (> 3 6)) (OR (= 7 5) (= 0 0))) (EQUAL (AND (= 1 10) (= 1 1)) (OR (>= 3 2 1 0) (= SQRT nil) Y si lo escribimos as (con 1 para formato): (ATOMS-FAMILY 1 ("tot" "setq" "w" ">=" "sqrt" "suma")) AutoLISP devolver: (nil "SETQ" nil ">=" "SQRT" nil)

ONCE.5.1. A vueltas con el apstrofo ()Ya hemos utilizado un par de veces este smbolo y, tambin, hemos explicado por encima su funcin. Vamos ahora a ampliar esa informacin. El smbolo de apstrofo () no es otra cosa, como ya se coment, que una abreviatura de la funcin QUOTE de AutoLISP. Dicha funcin tiene la siguiente sintaxis de programacin: (QUOTE expresin) o tambin: (expresin)

212

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP NOTA: Ntese que tras QUOTE hay un espacio pero, si se utiliza el apstrofo no hay que introducirlo. Esta funcin se puede utilizar con cualquier expresin de AutoLISP. Lo que hace es evitar que se evalen los smbolos y los toma como literales. Devuelve siempre el literal de la expresin indicada, sin evaluar. Por ejemplo: (QUOTE (SETQ x 22.5)) (QUOTE hola) (QUOTE (+ 3 3 3)) devuelve (SETQ x 22.5) devuelve HOLA devuelve (+ 3 3 3)

Hay que tener cuidado al utilizar el apstrofo de abreviatura de QUOTE, ya que desde la lnea de comandos no lo vamos a poder utilizar. Recordemos que AutoCAD slo reconoce que estamos escribiendo algo en AutoLISP en la lnea de comandos cuando comenzamos por el parntesis de apertura (, o a lo sumo por la exclamacin final !, para evaluar variables directamente. Expresiones como las siguientes: (DEFUN diblin () "Nada") a var12 slo podremos introducirlas desde un archivo ASCII (como veremos en seguida). Pues este comando es muy utilizado a la hora de introducir directamente, por ejemplo, las coordenadas de un punto, ya que estas coordenadas son en el fondo una lista y que no ha de ser evaluada. Por ejemplo (50 50). Lo mismo nos ha ocurrido con la lista de ATOMS-FAMILY. sta no ha de evaluarse (no tiene otras funciones aadidas, es simplemente un grupo de cadenas), por lo que ha de introducirse como literal. Una lista que no tiene funcin aadida, por ejemplo (50 50 23) produce un error de bad function en AutoLISP, a no ser que se introduzca como literal: (QUOTE (50 50 23)) devuelve (50 50 23)

NOTA: En la mayora de las funciones de AutoLISP, al introducir un literal de expresin la haremos con el apstrofo directamente, ya que con QUOTE no funcionar. QUOTE slo tendr validez cuando se utilice solo, sin ms funciones.

ONCE.6. PROGRAMANDO EN UN ARCHIVO ASCIIHasta ahora hemos visto muchos ejemplos de funciones en AutoLISP, pero todos ellos los hemos tecleado desde la lnea de comandos de AutoCAD. Esto resulta un poco engorroso, ya que si quisiramos volver a teclearlos tendramos que escribirlos de nuevo. Sabemos que existe la posibilidad de copiar y pegar en lnea de comandos, an as es pesado tener que volver a copiar y pegar cada una de las lneas introducidas. Existe la posibilidad de crear archivos ASCII con una serie de funciones AutoLISP (programa) que se vayan ejecutando una detrs de otra al ser cargado, el programa, en AutoCAD. sta es la verdadera forma de trabajar con AutoLISP. La escritura en lnea de comandos est relegada a pruebas de funcionamiento de funciones. Con este mtodo, no slo tenemos la posibilidad de editar unas lnea y correrlas (ejecutarlas) bajo AutoCAD, sino que adems podremos elaborar programas extensos que 213

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP tendremos la posibilidad de cargar desde disco en cualquier sesin de dibujo, en cualquier momento. Incluso, como veremos, es factible la creacin de rdenes o comandos para AutoCAD que, siendo no otra cosa que programas en AutoLISP, podremos ejecutar con slo teclear su nombre. Estos programas manejarn la Base de Datos de AutoCAD, operarn con objetos de dibujo, utilizarn cuadros de dilogo o no como interfaz, y un largusimo etctera. La programacin en AutoLISP, unida a estructuras de mens, tipos de lnea, patrones de sombreado y dems estudiado en este curso, nos permitir llegar a crear verdaderas aplicaciones verticales para AutoCAD. Pero para desarrollar un programa en un archivo ASCII y luego poder cargarlo en AutoCAD, no debemos simplemente escribir las expresiones que ya hemos aprendido y punto. Hay que seguir una lgica y hay que indicarle a AutoCAD, al principio del programa, que estamos escribiendo un programa en AutoLISP, precisamente. Un archivo ASCII puede contener varios programas o funciones de usuario en AutoLISP. Se suelen escribir procurando no sobrepasar los 80 caracteres por lnea para su edicin ms cmoda y, adems, se suelen sangrar en mayor o menor m edida las entradas de algunas lneas, dependiendo de la funcin ya nos iremos familiarizando con esto para dar claridad al programa. Un programa de AutoLISP se compone de una serie de funciones AutoLISP que se ejecutan una detrs de la otra produciendo diferentes resultados. El caso sera el mismo que ir introduciendo rengln a rengln en la lnea de comandos. Pero en un archivo ASCII hay que introducir todas las funciones dentro de la lista de argumentos de otra que las engloba. Esta funcin es DEFUN y su sintaxis es: (DEFUN nombre_funcin lista_argumentos expresin1 [expresin2...]) DEFUN define una funcin de usuario. Su parntesis de apertura es lo primero que debe aparecer en un programa AutoLISP y su parntesis de cierre lo ltimo tras todas las funciones intermedias (despus puede haber otros DEFUN). nombre_funcin es el nombre que le vamos a dar a nuestra funcin y lista_argumentos es una lista de argumentos globales o locales para la funcin. Los argumentos o variables globales son aquellos que se almacenan en memoria y permanecen en ella; son todas las variables que hemos definiendo hasta ahora. Estas variables pueden ser utilizadas por otros programas AutoLISP o ser evaluadas directamente en lnea de comandos mediante el carcter !. Los smbolos locales son variables temporales. Estas se almacenan en memoria slo de manera temporal, hasta que se termina la funcin en curso. Una vez ocurrido esto desaparecen y no pueden ser utilizados por otros programas ni evaluados en lnea de comandos. Estos smbolos locales han de estar indicados en la lista despus de una barra (/). Esta barra tiene que estar separada del primer smbolo local por un espacio en blanco y del ltimo smbolo global si lo hubiera por un espacio blanco tambin. Veamos unos ejemplos: (DEFUN (DEFUN (DEFUN (DEFUN func func func func (x)... (x y)... (x / u z)... (/ x s)... variable global: x variables globales: x y variable global: x variables locales: u z variables locales: x s

Si el smbolo local se encontrara ya creado antes de ser utilizado en la funcin definida, recupera el valor que tena al principio una vez terminada la funcin. Si no se especifican 214

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP como locales al definir una funcin, todos los smbolos declarados con SETQ dentro de ella son globales. NOTA: De momento vamos a olvidarnos de variables globales y locales, ya que todas las funciones que definamos por ahora tendrn una lista de argumentos vaca. Ms adelante se profundizar en este tema. Despus de esto, aparecern todas las expresiones del pro grama, o sea, las funciones de AutoLISP o de usuario ya definidas que formen el conjunto del programa. Al final, deber cerrarse el parntesis de DEFUN. As pues, ya podemos crear nuestro primer programa en AutoLISP. Este programa calcular la raz cuadrada de un nmero, definidos anteriormente en una variables. Veamos cmo es el pequeo programa: (DEFUN () Raiz (SETQ X 25) (SQRT X) ) Vamos a comentarlo un poco. Definimos, lo primero, la funcin llamada Raiz con una lista de argumento vaca. A continuacin, asignamos con SETQ el valor 25 a la variable X y calculamos su raz cuadrada. Al final, cerramos el parntesis de DEFUN. Simple. NOTA: La razn para sangrar las lneas se debe a la comodidad de ver qu parntesis cierran a qu otros. De un golpe de vista se aprecia perfectamente. NOTA: Es irrelevante la utilizacin de maysculas o minsculas en la programacin en AutoLISP (excepto en cadenas literales, lgicamente). Podamos haber hecho el programa sin variable, simplemente poniendo el valor tras la funcin de la raz cuadrada, pero es otro modo de recordar y practicar. Escribmoslo y guardmoslo con extensin .LSP. Como nombre es recomendable darle el mismo que a la funcin, es decir, que el nombre del archivo quedara as: RAIZ.LSP. Esto no tiene por qu sentar ctedra. Vamos ahora a cargar nuestra nueva funcin en AutoCAD. El procedimiento es sencillo y siempre el mismo. Desde Herr.>Cargar aplicacin... accedemos al cuadro Cargar archivos AutoLISP, ADS y ARX. En este cuadro, pinchando en Archivo... se nos abre un nuevo cuadro para buscar y seleccionar el archivo. Tras seleccionarlo (y pulsar Abrir) volveremos al cuadro anterior donde pulsaremos el botn Cargar. De esta forma cargamos el archivo para poder ser utilizado. NOTA: Si en este cuadro comentado activamos la casilla Guardar lista, tendremos accesibles en la lista Archivos a cargar todos los archivos cargados desde la activacin de la casilla. De esta forma podremos modificar un archivo .LSP y, rpidamente, volver a cargarlo escogindolo de esta lista y pulsando Cargar. Realmente la lista se guarda en un archivo llamado APPLOAD.DFS y que estar guardado en el directorio al que haga referencia el acceso directo que arranca AutoCAD en su casilla Iniciar en:. El botn Descargar desc arga de memoria la aplicacin designada y, el botn Suprimir, elimina una entrada de la lista. NOTA: Este cuadro de dilogo aparece tambin con el comando APPLOAD de AutoCAD. Una vez cargada la funcin slo queda ejecutarla. Para ello deberemos indicarla entre parntesis, esto es (en la lnea de comandos): 215

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP

(RAIZ) y AutoCAD devuelve: 2.23607 La razn de que haya que ejecutarlas entre parntesis es porque es una funcin AutoLISP; es una funcin definida por el usuario, pero no deja de ser AutoLISP. Pero existe una forma de no tener que escribir los parntesis para ejecutar una nueva orden de usuario. Esta forma consiste en colocar justo delante del nombre de la nueva funcin los caracteres C: (una c y dos puntos). De la siguiente manera quedara con el ejemplo anterior: (DEFUN () C:Raiz (SETQ X 25) (SQRT X) ) As, nicamente habramos de escribir en la lnea de comandos: RAIZ para que devuelva el mismo resultado. De esta forma, RAIZ es un nuevo comando totalmente integrado en AutoCAD, el cual podramos ejecutar desde la lnea de comandos o hacer una llamada a l desde un botn de una barra de herramientas, o desde una opcin de men, etctera. NOTA: Las funciones definidas mediante este mtodo no admiten variables globales, slo locales. NOTA: Las maysculas o minsculas son tambin irrelevantes a la hora de llamar a un funcin de usuario, al igual que ocurre con los comandos de AutoCAD.

5 fase intermedia de ejercicios Realizar un programa AutoLISP que calcule la suma de los diez primeros nmeros. Realizar un programa que compare valores mayores. Realizar un programa que asigne valores a 3 variables y luego las multiplique todas entre s.

ONCE.7. CAPTURA Y MANEJO BSICO DE DATOS ONCE.7.1. Aceptacin de puntosTras lo estudiado parece ser que vamos entrando poco a poco y de lleno en el mundo de la programacin en AutoLISP. Sin embargo, an puede parecernos algo ilgico el poder realizar un programa que calcule una serie operaciones con cantidades fijas, sin poder variar de nmeros cada vez que se ejecute el programa, por ejemplo. En esta seccin ONCE.7. vamos a aprender la forma que tenemos de pedirle datos al usuario para luego operar con ellos. Comenzaremos por los puntos. Todo lo que se refiere a captura de datos, tiene en AutoLISP un nombre propio que es GET.... Si nos damos cuenta, se ha indicado con punto suspensivos porque GET como tal no 216

Curso Prctico de Personalizacin y Programacin bajo AutoCAD Programacin en AutoLISP existe como funcin, sino una serie de ellas que comienzan con esas letras. Pues bien