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

Visual Lisp

Embed Size (px)

Citation preview

Page 1: Visual Lisp

Índice General 1

VisualLISPCurso de programación

para AutoCAD

Nicolás da Silva

Page 2: Visual Lisp

VisualLISP Curso de programación para AutoCAD2

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 quepudieran 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, siendopropiedad 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 deINFORBOOK'S, S.L.

Editado por: INFORBOOK'S, S.L.c/ Muntaner, 18108036 BARCELONA934 391 575e-mail: [email protected]: http://www.inforbooks.com

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

IMPRESO EN ESPAÑA - PRINTED IN SPAIN

Page 3: Visual Lisp

Índice General 3

Las diferencias entre las personasson infinitamente pequeñas. A con-secuencia de éstas, parecemos to-talmente distintos.

El día de las Revelaciones, 6:66

Page 4: Visual Lisp

VisualLISP Curso de programación para AutoCAD4

Page 5: Visual Lisp

Índice General 5

Índice General

Prólogo ...................................................................23A quién va dirigido este libro ........................................................................................ 24

Por qué se escribió este libro ...................................................................................... 24

Notas Aclaratorias ........................................................................................................ 25

Agradecimientos .......................................................................................................... 25

Preliminares ............................................................27Por 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...................31Repaso 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

Page 6: Visual Lisp

VisualLISP Curso de programación para AutoCAD6

¿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

Page 7: Visual Lisp

Índice General 7

Toma de contacto con VisualLISP ...........................91Consideraciones 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 ..................................................105Descripció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..............................................................129Definició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

Page 8: Visual Lisp

VisualLISP Curso de programación para AutoCAD8

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

Page 9: Visual Lisp

Í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

Page 10: Visual Lisp

VisualLISP Curso de programación para AutoCAD10

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

Page 11: Visual Lisp

Í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

Page 12: Visual Lisp

VisualLISP Curso de programación para AutoCAD12

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

Page 13: Visual Lisp

Í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

Page 14: Visual Lisp

VisualLISP Curso de programación para AutoCAD14

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

Page 15: Visual Lisp

Í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

Page 16: Visual Lisp

VisualLISP Curso de programación para AutoCAD16

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

Page 17: Visual Lisp

Í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 ..............................................................553Estructuras 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 ............................................563Descripció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

Page 18: Visual Lisp

VisualLISP Curso de programación para AutoCAD18

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 ................................................593Engranajes: Generalidades ....................................................................................... 594

Ejemplo ...................................................................................................................... 595

Envolvente de un Círculo o Cicloide.......................................................................... 596

Construcción del engraneje por pasos ...................................................................... 597

Práctica systemCompute ......................................609Descripció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 ........................................................625Construcció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 ................................................639Explicación del algoritmo ........................................................................................... 639

Implementación .................................................................................................... 641

Page 19: Visual Lisp

Índice General 19

Práctica integral....................................................649Integral 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 ................................................................659Algoritmo 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 ................................................................665Ejemplos 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

Page 20: Visual Lisp

VisualLISP Curso de programación para AutoCAD20

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

MENOR (<) ................................................................................................................ 691

MENOR o IGUAL (

) ................................................................................................ 692

MAYOR (>) ................................................................................................................ 693

MAYOR o IGUAL (

) ................................................................................................ 693

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

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

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

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

Anexo 7 ................................................................703Lista devuelta por grread ........................................................................................... 703

Anexo 8 ................................................................705Grupos DXF para Entidades ..................................................................................... 705

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

Bibliografía ...........................................................713Recursos 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

Page 21: Visual Lisp

Í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

Page 22: Visual Lisp

VisualLISP Curso de programación para AutoCAD22