Вы находитесь на странице: 1из 22

Índice General 1

VisualLISP
Curso de programación
para AutoCAD

Nicolás da Silva
2 VisualLISP Curso de programación para AutoCAD

VisualLISP Curso de programación para AutoCAD

© Nicolás da Silva Santamaría


© De la edición: INFORBOOK'S, S.L.

Se ha puesto el máximo interés en ofrecer al lector una información completa y precisa.


Sin embargo, INFORBOOK'S, S.L. no asume ninguna responsabilidad derivada de uso,
ni tampoco por cualquier violación de patentes y otros derechos de terceras partes que
pudieran ocurrir estando este libro destinado a la utilización de aficionados o a la ense-
ñanza. Las marcas o nombres mencionados lo son únicamente a título informativo, siendo
propiedad de sus legales registradores.

Reservados todos los derechos.

Ninguna parte de este libro puede ser reproducida, grabada en sistema de almacena-
miento o transmitida en forma alguna ni por cualquier procedimiento, ya sea electrónico,
mecánico, reprográfico, magnético o cualquier otro. Asimismo queda prohibida la distri-
bución, alquiler, traducción o exportación sin la autorización previa y por escrito de
INFORBOOK'S, S.L.

Editado por: INFORBOOK'S, S.L.


c/ Muntaner, 181
08036 BARCELONA
934 391 575
e-mail: info@inforbooks.com
web: http://www.inforbooks.com

ISBN: 84-96097-78-1
Depósito legal: B-49766-2006
Diseño cubierta: ABISA
Maquetación: ABISA

IMPRESO EN ESPAÑA - PRINTED IN SPAIN


Índice General 3

Las diferencias entre las personas


son infinitamente pequeñas. A con-
secuencia de éstas, parecemos to-
talmente distintos.

El día de las Revelaciones, 6:66


4 VisualLISP Curso de programación para AutoCAD
Índice General 5

Índice General

Prólogo ................................................................... 23
A quién va dirigido este libro ........................................................................................ 24
Por qué se escribió este libro ...................................................................................... 24
Notas Aclaratorias ........................................................................................................ 25
Agradecimientos .......................................................................................................... 25

Preliminares ............................................................ 27
Por qué LISP ............................................................................................................... 27
Otras formas de personalizar AutoCAD ...................................................................... 28
Ejemplos en los que es útil VisualLISP ....................................................................... 29
Conclusión ................................................................................................................... 30
Código fuente del libro, erratas e imágenes ................................................................ 30

Fundamentos de la Informática Gráfica ................... 31


Repaso de operaciones con matrices ......................................................................... 32
Coordenadas homogéneas de un punto ..................................................................... 34
Matriz asociada a la traslación .................................................................................... 34
Matriz asociada al escalado ........................................................................................ 35
Matríz asociada a la rotación ....................................................................................... 35
Convenciones de signo para las rotaciones ................................................................ 36
Ejemplos de transformaciones lineales ....................................................................... 36
Matrices de transformación VisualLISP ....................................................................... 40
Ejercicios ..................................................................................................................... 41

Fundamentos de programación ............................... 43


¿Qué es un ordenador? .............................................................................................. 43
6 VisualLISP Curso de programación para AutoCAD

¿Qué es un algoritmo? ................................................................................................ 44


¿Qué es un programa? ............................................................................................... 44
El paradigma de la programación estructurada .......................................................... 45
Otros paradigmas de programación ............................................................................ 45
Análisis, diseño e implementación .............................................................................. 46
¿Qué es interpretar y compilar un programa? ............................................................. 46
Algoritmia y programación. Ingenio y algoritmia. Ingenio y programación .................. 47
¿Qué es la lógica? ....................................................................................................... 47
¿Qué es una función lógica? ....................................................................................... 48
Expresar formalmente un algoritmo ............................................................................ 48
Sistemas de representación ........................................................................................ 49
Conversiones ............................................................................................................... 50
Capacidad de representación ...................................................................................... 52
Programación modular. Cohesión y Acoplamiento ...................................................... 53
Comunicación entre módulos (Parte I) ........................................................................ 55
Comunicación entre móculos (Parte II) ....................................................................... 57
¿Qué es la recursividad? ............................................................................................. 58
¿Qué es flujo de control? ............................................................................................ 60
¿Qué son estructuras de Control de Flujo? ................................................................ 61
Álgebra de Boole ......................................................................................................... 62
Simplificación de funciones lógicas ............................................................................. 63
Operaciones a nivel de bits ......................................................................................... 67
Suma de números en binario ...................................................................................... 68
Complemento a 1 ........................................................................................................ 69
Complemento a 2 ........................................................................................................ 69
Resta de números binarios .......................................................................................... 70
¿Qué son variables de usuario? .................................................................................. 71
Variables locales, variables globales ........................................................................... 73
Tipos simples de las variables de usuario ................................................................... 73
Estructuras de datos .................................................................................................... 76
Expresiones regulares ................................................................................................. 79
Direccionamiento de ficheros y directorios .................................................................. 79
Direccionamiento absoluto y relativo ........................................................................... 80
Acceso al contenido de ficheros .................................................................................. 81
Secuencias de escape ................................................................................................ 82
Orden de ejecución de un algoritmo ............................................................................ 84
Características de los algoritmos ................................................................................ 85
¿Qué es la API de un lenguaje de programación? ...................................................... 86
Ejercicios ..................................................................................................................... 88
Índice General 7

Toma de contacto con VisualLISP ........................... 91


Consideraciones sobre VisualLISP ............................................................................. 93
Accediendo al IDE de VisualLISP ............................................................................... 97
Estructura de las funciones de usuario ....................................................................... 98
Crear y guardar código LISP ..................................................................................... 101

IDE de VisualLISP .................................................. 105


Descripción general del IDE ...................................................................................... 105
Mostrar barras de herramientas ................................................................................ 106
Mostrar ventanas Rastreo y Consola ........................................................................ 107
Barra de herramientas "Estándar" ............................................................................. 107
Barra de herramientas "Buscar" ................................................................................ 109
Barra de herramientas "Ver" ....................................................................................... 111
Barra de herramientas "Herramientas" ....................................................................... 115
Barra de herramientas "Depurar" ............................................................................... 116
Empaquetar archivos desde el IDE ............................................................................ 117
Crear un paquete FAS ................................................................................................ 118
Crear un paquete VLX ............................................................................................... 121
Carga de paquetes FAS y LSP .................................................................................. 123
Otras consideraciones del entorno ............................................................................ 124

Introducción a las funciones ................................. 125

Funciones.............................................................. 129
Definición de funciones ............................................................................................. 129
Función DEFUN ................................................................................................... 129
Función LAMBDA ................................................................................................. 132
Estructuras de control de flujo (decisión) .................................................................. 136
Función IF ............................................................................................................. 136
Función COND ..................................................................................................... 142
Estructuras de control de flujo (iteración) ............................................................. 144
Función WHILE .................................................................................................... 144
Función REPEAT .................................................................................................. 145
Función FOREACH .............................................................................................. 146
Estructuras de control de flujo (fin ejecución) ............................................................ 148
Función EXIT ........................................................................................................ 148
Función QUIT ....................................................................................................... 148
Función VL-EXIT-WITH-ERROR ......................................................................... 149
Función VL-EXIT-WITH-VALUE ........................................................................... 150
8 VisualLISP Curso de programación para AutoCAD

Operadores Aritméticos ............................................................................................. 152


Función + .............................................................................................................. 152
Función - ............................................................................................................... 153
Función * ............................................................................................................... 153
Función / ............................................................................................................... 153
Función 1+ ............................................................................................................ 154
Función 1- ............................................................................................................. 154
Funciones Matemáticas ............................................................................................. 155
Función ABS ......................................................................................................... 155
Función ATAN ....................................................................................................... 156
Función COS ........................................................................................................ 157
Función SIN .......................................................................................................... 157
Función EXP ......................................................................................................... 158
Función EXPT ...................................................................................................... 158
Función LOG ........................................................................................................ 159
Función SQRT ...................................................................................................... 160
Función FIX .......................................................................................................... 160
Función GCD ........................................................................................................ 161
Función MAX ........................................................................................................ 161
Función MIN ......................................................................................................... 162
Función REM ........................................................................................................ 162
Función ANGLE .................................................................................................... 163
Operadores Lógicos .................................................................................................. 165
Función AND ........................................................................................................ 165
Función OR .......................................................................................................... 166
Función NOT ........................................................................................................ 167
Función < .............................................................................................................. 167
Función <= ............................................................................................................ 168
Función > .............................................................................................................. 169
Función >= ............................................................................................................ 169
Función = .............................................................................................................. 170
Función EQUAL .................................................................................................... 171
Función /= ............................................................................................................. 172
Operadores a Nivel de Bits ........................................................................................ 172
Función BOOLE ................................................................................................... 172
Función LOGAND ................................................................................................. 174
Función LOGIOR .................................................................................................. 174
Función ~ .............................................................................................................. 175
Función LSH ......................................................................................................... 175
Manejo de Cadenas de Caracteres ........................................................................... 177
Función STRCASE ............................................................................................... 177
Índice General 9

Función STRCAT .................................................................................................. 178


Función STRLEN .................................................................................................. 179
Función SUBSTR ................................................................................................. 179
Función VL-STRING-LEFT-TRIM ......................................................................... 181
Función VL-STRING-RIGHT-TRIM ...................................................................... 182
Función VL-STRING-TRIM .................................................................................. 182
Función VL-STRING-MISMATCH ........................................................................ 183
Función VL-STRING-POSITION .......................................................................... 184
Función VL-STRING-SEARCH ............................................................................ 187
Función VL-STRING-ELT ..................................................................................... 188
Función VL-STRING-SUBST ............................................................................... 189
Función VL-STRING-TRANSLATE ...................................................................... 190
Función WCMATCH ............................................................................................. 191
Entrada/Salida (E/S) .................................................................................................. 194
Función ALERT .................................................................................................... 194
Función PROMPT ................................................................................................ 195
Función GETINT ................................................................................................... 195
Función GETREAL ............................................................................................... 196
Función GETSTRING ........................................................................................... 197
Función GETPOINT ............................................................................................. 198
Función GETDIST ................................................................................................ 200
Función GETCORNER ......................................................................................... 202
Función GETANGLE ............................................................................................ 203
Función GETORIENT ........................................................................................... 205
Función GETFILED .............................................................................................. 206
Función INITGET .................................................................................................. 209
Función GETKWORD .......................................................................................... 213
Función OPEN ...................................................................................................... 214
Función CLOSE .................................................................................................... 216
Función PRIN1 ..................................................................................................... 217
Función PRINC ..................................................................................................... 219
Función PRINT ..................................................................................................... 221
Función TERPRI ................................................................................................... 223
Función READ-CHAR .......................................................................................... 224
Función READ-LINE ............................................................................................ 228
Función WRITE-CHAR ......................................................................................... 230
Función WRITE-LINE ........................................................................................... 231
Ayudas al dibujo ........................................................................................................ 232
Función DISTANCE .............................................................................................. 232
Función INTERS ................................................................................................... 233
Función OSNAP ................................................................................................... 235
10 VisualLISP Curso de programación para AutoCAD

Función TEXTBOX ............................................................................................... 237


Función TRANS .................................................................................................... 240
Función GRDRAW ............................................................................................... 245
Función GRVECS ................................................................................................. 247
Función REDRAW ................................................................................................ 249
Función REGAPP ................................................................................................. 250
Función VPORTS ................................................................................................. 250
Ayudas al Entorno ..................................................................................................... 251
Función SETCFG ................................................................................................. 252
Función GETCFG ................................................................................................. 252
Función SETENV ................................................................................................. 253
Función GETENV ................................................................................................. 255
Función SETVAR .................................................................................................. 256
Función GETVAR ................................................................................................. 257
Función GRAPHSCR ........................................................................................... 258
Función TEXTPAGE ............................................................................................. 259
Función TEXTSCR ............................................................................................... 259
Función GETCNAME ........................................................................................... 260
Función HELP ...................................................................................................... 260
Función SETFUNHELP ........................................................................................ 263
Función MENUGROUP ........................................................................................ 264
Función SNVALID ................................................................................................. 265
Función VER ........................................................................................................ 266
Función VLAX-PRODUCT-KEY ........................................................................... 266
Manejo de Expresiones ............................................................................................. 267
Función EVAL ....................................................................................................... 267
Función PROGN ................................................................................................... 267
Función QUOTE ................................................................................................... 268
Manejo de Listas ........................................................................................................ 269
Función LIST ........................................................................................................ 269
Función CONS ..................................................................................................... 271
Función VL-LIST* ................................................................................................. 271
Función APPEND ................................................................................................. 272
Función ASSOC ................................................................................................... 274
Función CAR ........................................................................................................ 275
Función CDR ........................................................................................................ 275
Función CADR ...................................................................................................... 276
Función CADDR ................................................................................................... 276
Función NTH ........................................................................................................ 277
Función LAST ....................................................................................................... 278
Función MEMBER ................................................................................................ 279
Índice General 11

Función REVERSE .............................................................................................. 279


Función SUBST .................................................................................................... 280
Función VL-EVERY .............................................................................................. 281
Función VL-SOME ................................................................................................ 282
Función VL-MEMBER-IF ...................................................................................... 283
Función VL-MEMBER-IF-NOT ............................................................................. 284
Función VL-POSITION ......................................................................................... 285
Función VL-REMOVE .......................................................................................... 286
Función VL-REMOVE-IF ...................................................................................... 287
Función VL-REMOVE-IF-NOT ............................................................................. 288
Función VL-SORT ................................................................................................ 288
Función VL-SORT-I .............................................................................................. 290
Función LENGTH ................................................................................................. 290
Función VL-LIST-LENGTH ................................................................................... 291
Conversión de Tipos .................................................................................................. 292
Función ATOI ........................................................................................................ 292
Función ITOA ....................................................................................................... 293
Función ATOF ....................................................................................................... 293
Función DISTOF ................................................................................................... 294
Función RTOS ...................................................................................................... 295
Función FLOAT .................................................................................................... 298
Función ASCII ....................................................................................................... 299
Función CHR ........................................................................................................ 299
Función ANGTOS ................................................................................................. 300
Función ANGTOF ................................................................................................. 303
Función VL-STRING->LIST ................................................................................. 305
Función VL-LIST->STRING .................................................................................. 306
Función VLAX-SAFEARRAY->LIST ..................................................................... 306
Función VLAX-ENAME->VLA-OBJECT ............................................................... 307
Función VLAX-VLA-OBJECT->ENAME ............................................................... 308
Función READ ...................................................................................................... 309
Función VL-PRIN1-TO-STRING .......................................................................... 310
Función VL-PRINC-TO-STRING ........................................................................... 311
Función VLAX-3D-POINT .................................................................................... 312
Función VLAX-TMATRIX ...................................................................................... 313
Verificación de Tipos .................................................................................................. 314
Función LISTP ...................................................................................................... 314
Función VL-CONSP ............................................................................................. 315
Función ATOM ...................................................................................................... 316
Función NULL ....................................................................................................... 317
Función NUMBERP .............................................................................................. 318
12 VisualLISP Curso de programación para AutoCAD

Función MINUSP .................................................................................................. 319


Función ZEROP ................................................................................................... 320
Función TYPE ...................................................................................................... 320
Función VL-SYMBOLP ......................................................................................... 321
Conversión de Unidades ........................................................................................... 322
Función CVUNIT .................................................................................................. 322
Función POLAR .................................................................................................... 324
Manejo de Archivos y Directorios .............................................................................. 325
Función FINDFILE ................................................................................................ 325
Función VL-FILENAME-MKTEMP ....................................................................... 326
Función VL-FILE-RENAME .................................................................................. 327
Función VL-FILE-COPY ....................................................................................... 328
Función VL-FILE-DELETE ................................................................................... 328
Función VL-FILE-SIZE ......................................................................................... 329
Función VL-FILE-SYSTIME ................................................................................. 330
Función VL-FILENAME-BASE ............................................................................. 330
Función VL-FILENAME-EXTENSION .................................................................. 331
Función VL-MKDIR ............................................................................................... 332
Función VL-DIRECTORY-FILES .......................................................................... 332
Función VL-FILE-DIRECTORY-P ......................................................................... 333
Función VL-FILENAME-DIRECTORY.................................................................. 333
Invocación Indirecta de Funciones Lisp .................................................................... 334
Función APPLY ..................................................................................................... 334
Función MAPCAR ................................................................................................ 337
Invocación Indirecta de Comandos de AutoCAD ...................................................... 339
Función COMMAND ............................................................................................. 339
Función VL-CMDF ................................................................................................ 341
Manejo de Entidades ACAD ...................................................................................... 341
Función ENTSEL .................................................................................................. 342
Función NENTSEL ............................................................................................... 343
Función NENTSELP ............................................................................................. 345
Función ENTNEXT ............................................................................................... 347
Función ENTLAST ................................................................................................ 349
Función ENTGET ................................................................................................. 350
Función ENTDEL .................................................................................................. 351
Función ENTMAKE .............................................................................................. 351
Función ENTMAKEX ............................................................................................ 352
Función ENTMOD ................................................................................................ 353
Función ENTUPD ................................................................................................. 354
Función HANDENT .............................................................................................. 355
Función VLAX-OBJECT-RELEASED-P ............................................................... 356
Índice General 13

Manejo de Conjuntos de Selección ........................................................................... 356


Función SSGET .................................................................................................... 357
Función SSADD ................................................................................................... 364
Función SSDEL .................................................................................................... 366
Función SSMEMB ................................................................................................ 366
Función SSNAME ................................................................................................ 367
Función SSNAMEX .............................................................................................. 369
Función SSSETFIRST ......................................................................................... 376
Función SSGETFIRST ......................................................................................... 378
Función SSLENGTH ............................................................................................ 378
Manejo de Aplicaciones ............................................................................................. 379
Función ARX ......................................................................................................... 379
Función ARXLOAD ............................................................................................... 380
Función ARXUNLOAD ......................................................................................... 381
Función AUTOARXLOAD ..................................................................................... 382
Función AUTOLOAD ............................................................................................ 383
Función LOAD ...................................................................................................... 384
Función VL-ARX-IMPORT ................................................................................... 387
Función VL-LOAD-COM ....................................................................................... 389
Función VL-LOAD-REACTORS ........................................................................... 389
Función VL-LOAD-ALL ......................................................................................... 390
Función VL-UNLOAD-VLX ................................................................................... 390
Función VL-LIST-LOADED-VLX .......................................................................... 391
Función VL-VLX-LOADED-P ................................................................................ 392
Función VL-ACAD-DEFUN .................................................................................. 392
Función VL-ACAD-UNDEFUN ............................................................................. 393
Función VLAX-ADD-CMD .................................................................................... 393
Función VLAX-REMOVE-CMD ............................................................................ 395
Función VL-DOC-EXPORT .................................................................................. 396
Función VL-DOC-IMPORT ................................................................................... 397
Función VL-LIST-EXPORTED-FUNCTIONS ....................................................... 398
Función VL-VBALOAD ......................................................................................... 399
Función VL-VBRAUN ........................................................................................... 400
Función VL-GET-RESOURCE ............................................................................. 400
Manejo de Nodos ....................................................................................................... 401
Función SETQ ...................................................................................................... 401
Función SET ......................................................................................................... 402
Función ATOMS-FAMILY ...................................................................................... 403
Función BOUNDP ................................................................................................ 405
Función EQ ........................................................................................................... 405
Función VL-SYMBOL-NAME ............................................................................... 407
14 VisualLISP Curso de programación para AutoCAD

Función VL-SYMBOL-VALUE .............................................................................. 407


Gestión de Memoria .................................................................................................. 408
Función ALLOC .................................................................................................... 408
Función EXPAND ................................................................................................. 408
Función GC .......................................................................................................... 409
Función MEM ....................................................................................................... 409
Manejo de Espacios de Nombres ............................................................................... 411
Función VL-BB-REF ............................................................................................. 413
Función VL-BB-SET ............................................................................................. 414
Función VL-DOC-REF .......................................................................................... 414
Función VL-DOC-SET .......................................................................................... 415
Función VL-PROPAGATE .................................................................................... 416
Manejo de Diccionarios ............................................................................................. 417
Función VLAX-LDATA-PUT .................................................................................. 418
Función VLAX-LDATA-GET ................................................................................. 420
Función VLAX-LDATA-DELETE ........................................................................... 422
Función VLAX-LDATA-LIST ................................................................................. 423
Función VLAX-LDATA-TEST ................................................................................ 425
Función NAMEDOBJDICT ................................................................................... 425
Función DICTADD ................................................................................................ 426
Función DICTREMOVE ........................................................................................ 427
Función DICTRENAME ........................................................................................ 427
Función DICTNEXT .............................................................................................. 428
Función DICTSEARCH ........................................................................................ 429
Función XDROOM ............................................................................................... 430
Función XDSIZE ................................................................................................... 431
Manejo de Tablas de Símbolos ................................................................................. 431
Función TBLNEXT ................................................................................................ 432
Función TBLSEARCH .......................................................................................... 433
Función TBLOBJNAME ........................................................................................ 434
Función SETVIEW ................................................................................................ 435
Manejo de Registro de Windows ............................................................................... 438
Función VL-REGISTRY-READ ............................................................................. 439
Función VL-REGISTRY-WRITE ........................................................................... 440
Función VL-REGISTRY-DELETE ......................................................................... 441
Función VL-REGISTRY-DESCENDENTS ........................................................... 442
Manejo de Objetos ..................................................................................................... 443
Función VLAX-GET-ACAD-OBJECT ................................................................... 444
Función VLAX-CREATE-OBJECT ....................................................................... 445
Función VLAX-GET-OR-CREATE-OBJECT ........................................................ 446
Función VLAX-GET-OBJECT ............................................................................... 447
Índice General 15

Función VLAX-DUMP-OBJECT ........................................................................... 447


Función VLAX-METHOD-APPLICABLE-P .......................................................... 449
Función VLAX-INVOKE-METHOD ....................................................................... 449
Función VLAX-PROPERTY-AVAILABLE-P .......................................................... 451
Función VLAX-GET-PROPERTY ......................................................................... 451
Función VLAX-PUT-PROPERTY ......................................................................... 452
Función VLAX-RELEASE-OBJECT ..................................................................... 453
Función VLAX-ERASED-P ................................................................................... 454
Función VLAX-READ-ENABLED-P ..................................................................... 455
Función VLAX-WRITE-ENABLED-P .................................................................... 456
Función VLAX-IMPORT-TYPE-LIBRARY ............................................................ 457
Función VLAX-TYPEINFO-AVAILABLE-P ........................................................... 459
Manejo de Entidades Lineales (Curvas) ................................................................... 459
Función VLAX-CURVE-ISCLOSED ..................................................................... 465
Función VLAX-CURVE-ISPERIODIC .................................................................. 466
Función VLAX-CURVE-ISPLANAR ..................................................................... 468
Función VLAX-CURVE-GETAREA ...................................................................... 469
Función VLAX-CURVE-GETFIRSTDERIV .......................................................... 470
Función VLAX-CURVE-GETSECONDDERIV ..................................................... 472
Función VLAX-CURVE-GETCLOSESTPOINTTO ............................................... 475
Función VLAX-CURVE-GETCLOSESTPOINTTOPROJECTION ....................... 477
Función VLAX-CURVE-GETPOINTATDIST ........................................................ 481
Función VLAX-CURVE-GETDISTATPOINT ........................................................ 482
Función VLAX-CURVE-GETDISTATPARAM ....................................................... 483
Función VLAX-CURVE-GETPARAMATDIST ....................................................... 485
Función VLAX-CURVE-GETPARAMATPOINT .................................................... 486
Función VLAX-CURVE-GETPOINTATPARAM .................................................... 487
Función VLAX-CURVE-GETSTARTPOINT ......................................................... 489
Función VLAX-CURVE-GETENDPOINT ............................................................. 489
Función VLAX-CURVE-GETSTARTPARAM ........................................................ 490
Función VLAX-CURVE-GETENDPARAM ............................................................ 491
Manejo de SafeArray ................................................................................................. 491
Función VLAX-MAKE-SAFEARRAY .................................................................... 492
Función VLAX-SAFEARRAY-FILL ....................................................................... 494
Función VLAX-SAFEARRAY-GET-ELEMENT ..................................................... 496
Función VLAX-SAFEARRAY-PUT-ELEMENT ..................................................... 497
Función VLAX-SAFEARRAY-GET-DIM ................................................................ 498
Función VLAX-SAFEARRAY-GET-L-BOUND ...................................................... 499
Función VLAX-SAFEARRAY-GET-U-BOUND ..................................................... 499
Función VLAX-SAFEARRAY-TYPE ..................................................................... 500
Manejo de Variant ...................................................................................................... 501
16 VisualLISP Curso de programación para AutoCAD

Función VLAX-MAKE-VARIANT .......................................................................... 501


Función VLAX-VARIANT-TYPE ........................................................................... 503
Función VLAX-VARIANT-VALUE ......................................................................... 505
Función VLAX-VARIANT-CHANGE-TYPE ........................................................... 506
Manejo de Colecciones ............................................................................................. 507
Función VLAX-FOR .............................................................................................. 507
Función VLAX-MAP-COLLECTION ..................................................................... 508
Manejo de Reactores ................................................................................................ 509
Los Eventos de AutoCAD .......................................................................................... 513
Parámetro FEED en las funciones respuesta ........................................................... 519
Ejemplo ................................................................................................................. 524
Función VLR-ADD ................................................................................................ 525
Función VLR-ADDED-P ....................................................................................... 525
Función VLR-REMOVE ........................................................................................ 526
Función VLR-REMOVE-ALL ................................................................................ 527
Función VLR-DATA .............................................................................................. 528
Función VLR-DATA-SET ...................................................................................... 528
Función VLR-REACTION-SET ............................................................................ 529
Función VLR-OWNER-ADD ................................................................................. 530
Función VLR-OWNER-REMOVE ......................................................................... 531
Función VLR-OWNERS ....................................................................................... 531
Función VLR-PERS .............................................................................................. 532
Función VLR-PERS-LIST ..................................................................................... 533
Función VLR-PERS-P .......................................................................................... 533
Función VLR-PERS-RELEASE ............................................................................ 534
Función VLR-CURRENT-REACTION-NAME ...................................................... 535
Función VLR-TYPE .............................................................................................. 535
Función VLR-TYPES ............................................................................................ 536
Función VLR-REACTIONS .................................................................................. 536
Función VLR-REACTORS ................................................................................... 537
Función VLR-REACTION-NAMES ....................................................................... 538
Función VLR-NOTIFICATION .............................................................................. 538
Función VLR-SET-NOTIFICATION ...................................................................... 539
Funciones de Respuesta Predefinidas ...................................................................... 540
Función VLR-TRACE-REACTION ....................................................................... 540
Función VLR-BEEP-REACTION .......................................................................... 541
Manejo de Dispositivos Externos .............................................................................. 542
Función TABLET .................................................................................................. 542
Manejo de Errores ..................................................................................................... 543
Función *ERROR* ................................................................................................ 543
Función VL-CATCH-ALL-APPLY .......................................................................... 544
Índice General 17

Función VL-CATCH-AL-ERROR-MESSAGE ....................................................... 547


Función VL-CATCH-ALL-ERROR-P .................................................................... 548
Funciones de Depuración .......................................................................................... 548
Función TRACE .................................................................................................... 548
Función UNTRACE .............................................................................................. 550

Ejercicios .............................................................. 553


Estructuras de control de flujo (decisión) .................................................................. 553
Estructuras de control de flujo (iteración) .................................................................. 553
Operadores aritméticos ............................................................................................. 553
Matemáticas .............................................................................................................. 554
Operaciones a nivel de bits ....................................................................................... 554
Conversión de tipos ................................................................................................... 555
Manejo de cadenas de caracteres ............................................................................ 555
Entrada/Salida ........................................................................................................... 556
Ayudas al entorno ...................................................................................................... 556
Manejo de listas ......................................................................................................... 557
Manejo de conjuntos de selección ............................................................................ 557
Manejo de entidades de ACAD ................................................................................. 557
Manejo de Archivos y Directorios .............................................................................. 558
Invocación indirecta de comandos de AutoCAD ....................................................... 558
Invocación indirecta de funciones LISP ..................................................................... 559
Manejo de entidades lineales (Curvas) ..................................................................... 559
Manejo del Registro de Windows .............................................................................. 559
Manejo de Nodos ....................................................................................................... 560
Manejo de Reactores ................................................................................................ 560
Manejo de Errores ..................................................................................................... 561
Manejo de Safearray ................................................................................................. 561
Manejo de Colecciones ............................................................................................. 562
Manejo de Objetos ..................................................................................................... 562

El Modelo de Objetos ............................................ 563


Descripción del Modelo de Objetos ........................................................................... 565
Consideraciones sobre Polilíneas ............................................................................. 566
Interfaz VisualLISP - Modelo de Objetos ................................................................... 566
Aprender más sobre el Modelo de Objetos ............................................................... 567
Ejemplo 01 ................................................................................................................. 567
Ejemplo 02 ................................................................................................................. 568
Ejemplo 03 ................................................................................................................. 568
Ejemplo 04 ................................................................................................................. 569
18 VisualLISP Curso de programación para AutoCAD

Ejemplo 05 ................................................................................................................. 569


Ejemplo 06 ................................................................................................................. 569
Ejemplo 07 ................................................................................................................. 570
Ejemplo 08 ................................................................................................................. 573

Práctica axisCompute ........................................... 581

Práctica delRep ..................................................... 585

Práctica splineConvert .......................................... 589

Práctica makeGear ................................................ 593


Engranajes: Generalidades ....................................................................................... 594
Ejemplo ...................................................................................................................... 595
Envolvente de un Círculo o Cicloide .......................................................................... 596
Construcción del engraneje por pasos ...................................................................... 597

Práctica systemCompute ...................................... 609


Descripción del método de Cramer ........................................................................... 609
Cálculo de determinantes .......................................................................................... 610
Cálculo de un determinante por los elementos de una fila o columna ....................... 611

Práctica draft ........................................................ 625


Construcción del triángulo inicial ............................................................................... 627
Construcción del siguiente triángulo .......................................................................... 628
Paso 1 ................................................................................................................... 628
Paso 2 ................................................................................................................... 628
Cambio del punto base .............................................................................................. 629
Paso 1 ................................................................................................................... 629
Discriminación de triángulos ...................................................................................... 629
Ejemplo ................................................................................................................. 630
Implementación .................................................................................................... 632
Poniendo en práctica el script .............................................................................. 636

Práctica triangular ................................................ 639


Explicación del algoritmo ........................................................................................... 639
Implementación .................................................................................................... 641
Índice General 19

Práctica integral.................................................... 649


Integral de Riemann .................................................................................................. 649
Implementación .................................................................................................... 651
Algunos ejemplos de invocación ............................................................................... 654
Ejemplo 1 .............................................................................................................. 655
Ejemplo 2 .............................................................................................................. 656
Ejemplo 3 .............................................................................................................. 656
Ejemplo 4 .............................................................................................................. 657

Anexo 1 ................................................................ 659


Algoritmo 1. Intercambiar el valor de dos variables .................................................. 659
Recorrer una lista de elementos ................................................................................ 659
Recorrer una matriz de elementos ............................................................................ 660
Ordenar una matriz de elementos ............................................................................. 661
Leer de un fichero ...................................................................................................... 664

Anexo 2 ................................................................ 665


Ejemplos de uso para la función (boole) ................................................................... 665
Explicaciones para (boole 1 ... ... ...) (Operación AND) ............................................. 666

& Explicaciones para (boole 2 ... ... ...) (Operación >) .................................................. 668
Explicaciones para (boole 4 ... ... ...) (Operación <) .................................................. 670
Explicaciones para (boole 6 ... ... ...) (Operación XOR) ............................................ 671
Explicaciones para (boole 7 ... ... ...) (Operación OR) ............................................... 673
Explicaciones para (boole 8 ... ... ...) (Operación NOR) ............................................ 674
Explicaciones para (boole 9 ... ... ...) (Operación NXOR) .......................................... 676
Explicaciones para (boole 10 ... ... ...) (Operación NOT) .......................................... 678
Explicaciones para (boole 11 ... ... ...) (Operación ≥ ) ............................................... 679
Explicaciones para (boole 12 ... ... ...) (Operación NOT) .......................................... 681
Explicaciones para (boole 13 ... ... ...) (Operación NOT >) ....................................... 681
Explicaciones para (boole 14 ... ... ...) (Operación NAND) ........................................ 682
Cuadros sinópticos del estudio paramétrico de la función (boole) ............................ 684
Tablas de verdad de las operaciones booleanas ...................................................... 685
NOT (~) ...................................................................................................................... 685
ID ............................................................................................................................... 685
AND (&) ..................................................................................................................... 685
OR (|) ......................................................................................................................... 686

XOR ( ) ................................................................................................................. 687


EQ ( ≡ ) ..................................................................................................................... 688
NAND ( ) .................................................................................................................. 689
20 VisualLISP Curso de programación para AutoCAD

NOR ( Τ ) .................................................................................................................... 690


MENOR (<) ................................................................................................................ 691
MENOR o IGUAL ( ) ................................................................................................ 692
MAYOR (>) ................................................................................................................ 693
MAYOR o IGUAL ( ) ................................................................................................ 693

Anexo 3 ................................................................ 695


Resultados obtenidos con la función (angtos) .......................................................... 695

Anexo 4 ................................................................ 697


Resultados obtenidos con la función (rtos) ............................................................... 697

Anexo 5 ................................................................ 699


Resultados obtenidos por la función ssnamex .......................................................... 699

Anexo 6 ................................................................ 701


Código ASCII de caracteres ...................................................................................... 701

Anexo 7 ................................................................ 703 ≥



Lista devuelta por grread ........................................................................................... 703

Anexo 8 ................................................................ 705


Grupos DXF para Entidades ..................................................................................... 705

Anexo 9 ................................................................ 711


Codificación de colores RGB ...................................................................................... 711

Bibliografía ........................................................... 713


Recursos bibliográficos ............................................................................................. 713
Recursos en la red relacionados con: ....................................................................... 716
La tecnología Active X .......................................................................................... 716
Operaciones booleanas, fundamentos, etc. ......................................................... 716
Curvas poligonales ............................................................................................... 716
Familias de la API de Visual LISP ........................................................................ 716
Ficheros de ayuda precompilados ....................................................................... 716
Por qué LISP ........................................................................................................ 716
Visual LISP ........................................................................................................... 717
La lógica, teorías, operaciones, etc. ..................................................................... 717
Índice General 21

Los sencillos logaritmos ....................................................................................... 717


Página principal de las librerías MSDN ................................................................ 717
API de los Ficheros de ayuda precompilados ...................................................... 717
Código fuente ofuscado ........................................................................................ 717
Ordenación de matrices (vectores) ...................................................................... 717
Los dibujos usados para algunas ilustraciones .................................................... 717
Conjuntos de selección en AutoCAD ................................................................... 717
Matrices de Transformación, coordenadas, cambios de base ............................. 718
Unidades de medida locales ................................................................................ 718
La genealogía de LISP ......................................................................................... 718
Creación de formas en AutoCAD ......................................................................... 718
Sistemas de numeración en Binario, operaciones, etc. ....................................... 718
Creación de tipos de línea en AutoCAD ............................................................... 718
Paradigmas de la programación .......................................................................... 718
Transformaciones lineales en el espacio afin euclídeo ........................................ 718

Índice Analítico ..................................................... 719


22 VisualLISP Curso de programación para AutoCAD