Visual LISP Para AutoCAD 2000

download Visual LISP Para AutoCAD 2000

of 158

Transcript of Visual LISP Para AutoCAD 2000

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    1/158

    Visual LISP para AutoCAD 2000

    Apuntes para un libro en preparacin

    Estos apuntes, que forman parte de un libro en

    preparacin, fueron desarrollados originalmentecomo material de estudio para el curso dictado como

    parte del programa de estudios para la Maestra enComputacin e Informtica en la Facultad deCiencias Exactas , Universidad acional del ordesteen Corrientes, !rgentina"

    CORRIENTES, 7 de junio de 1999SANTANDER, 19 de septiembre de 1999

    Reinaldo Togores Fernndez, #rofesor !sociado"$epartamento de Ingeniera %eogrfica & '(cnicasde Expresin %rfica,Universidad de Cantabria")antander, Espa*a"Instructor de $ise*o !sistido por +rdenador del

    Instituto de Formacin y Estudios Sociales"

    NDICE DE CONTENIDOS

    AGADECI!IENTOS

    INTOD"CCI#N

    LISP$ PAADIG!A DEL ESTILO DEPOGA!ACI#N %"NCIONAL

    PI!EA PATE$EL ENTONO DE DESAOLLO VIS"AL LISP

    Esta seccin se encuentra en preparacin

    1. VIS"AL LISP2. EL ENTONO DE DESAOLLO VIS"AL LISP

    o El Traba&o con Visual LISP ' AutoCADo (arra )e !en*so Las (arras )e +erra,ientaso La Consola Visual LISP

    http://personales.unican.es/Togoresr/resume.htmlhttp://www.unican.es/http://www.ifes.es/http://personales.unican.es/Togoresr/lisp/AGRADECIMIENTOS.htmhttp://personales.unican.es/Togoresr/lisp/INTRODUCCION.htmhttp://personales.unican.es/Togoresr/lisp/INTRODUCCION.htm#lisphttp://personales.unican.es/Togoresr/lisp/INTRODUCCION.htm#lisphttp://personales.unican.es/Togoresr/lisp/VISUALLISP.htmhttp://personales.unican.es/Togoresr/lisp/IDE-1.htmhttp://personales.unican.es/Togoresr/lisp/IDE-2.htmhttp://personales.unican.es/Togoresr/lisp/IDE-3.htmhttp://personales.unican.es/Togoresr/lisp/IDE-4.htmhttp://personales.unican.es/Togoresr/lisp/IDE-5.htmhttp://personales.unican.es/Togoresr/resume.htmlhttp://www.unican.es/http://www.ifes.es/http://personales.unican.es/Togoresr/lisp/AGRADECIMIENTOS.htmhttp://personales.unican.es/Togoresr/lisp/INTRODUCCION.htmhttp://personales.unican.es/Togoresr/lisp/INTRODUCCION.htm#lisphttp://personales.unican.es/Togoresr/lisp/INTRODUCCION.htm#lisphttp://personales.unican.es/Togoresr/lisp/VISUALLISP.htmhttp://personales.unican.es/Togoresr/lisp/IDE-1.htmhttp://personales.unican.es/Togoresr/lisp/IDE-2.htmhttp://personales.unican.es/Togoresr/lisp/IDE-3.htmhttp://personales.unican.es/Togoresr/lisp/IDE-4.htmhttp://personales.unican.es/Togoresr/lisp/IDE-5.htm
  • 8/10/2019 Visual LISP Para AutoCAD 2000

    2/158

    o El E)itor Visual LISP (arras )e +erra,ientas !en* Conte-tual Teclas .pi)as

    SEG"NDA PATE$T/CNICAS %"NDA!ENTALES DE LA POGA!ACI#NLISP

    1. TIPOS DE DATOSo TO!OSo TO!OS SI!(#LICOS 1SATO!S3o CONSTANTES

    N4!EOS CADENAS DE TE5TO

    o LISTAS 6 CONSES LISTAS DE "N NIVEL LISTAS ANIDADAS LISTAS DE ASOCIACI#N 1ALIST3 LA LISTA VACA 1NIL3

    o %"NCI#N T6PE$ E5A!EN DEL TIPO DE DATO TIPOS DE DATOS LISP TIPOS DE DATOS A"TOCAD TIPOS DE DATOS ACTIVE5

    2. %"NCIONESo %"NCIONES PI!ITIVAS

    OPEADOES AIT!/TICOS %"NCIONES DE ACCESO A LISTAS CONST"CCI#N DE LISTAS POCESA!IENTO DE LISTAS TATA!IENTO DE CADENAS TATA!IENTO DE CADENAS CON VLISP

    o %O!AS ESPECIALESo %"NCIONES DE%INIDAS PO EL "S"AIO

    DE%"N$ N"EVAS %"NCIONES PAA LAE5TENSI#N DE LISP

    EALES A ENTEOS$ T"CA!IENTOO EDONDEO

    %"NCIONES TIGONO!/TICAS LA!(DA %"NCTION LOAD

    http://personales.unican.es/Togoresr/lisp/IDE-6.htmhttp://personales.unican.es/Togoresr/lisp/IDE-7.htmhttp://personales.unican.es/Togoresr/lisp/IDE-8.htmhttp://personales.unican.es/Togoresr/lisp/IDE-9.htmhttp://personales.unican.es/Togoresr/lisp/TIPOS%20DE%20DATOS.htmhttp://personales.unican.es/Togoresr/lisp/ATOMOS.htmhttp://personales.unican.es/Togoresr/lisp/ATOMOS.htm#s-atomhttp://personales.unican.es/Togoresr/lisp/ATOMOS.htm#literaleshttp://personales.unican.es/Togoresr/lisp/ENTEROS-REALES.htmhttp://personales.unican.es/Togoresr/lisp/ATOMOS.htm#cadenashttp://personales.unican.es/Togoresr/lisp/LISTAS.htmhttp://personales.unican.es/Togoresr/lisp/LISTAS.htm#un-nivelhttp://personales.unican.es/Togoresr/lisp/LISTAS.htm#anidadahttp://personales.unican.es/Togoresr/lisp/LISTAS.htm#a-listhttp://personales.unican.es/Togoresr/lisp/LISTAS.htm#vaciahttp://personales.unican.es/Togoresr/lisp/TYPE.htmhttp://personales.unican.es/Togoresr/lisp/TYPE.htm#lisphttp://personales.unican.es/Togoresr/lisp/TYPE.htm#autocadhttp://personales.unican.es/Togoresr/lisp/TYPE.htm#activexhttp://personales.unican.es/Togoresr/lisp/FUNCIONES.htmhttp://personales.unican.es/Togoresr/lisp/FUNCIONES.htm#primitivashttp://personales.unican.es/Togoresr/lisp/ARITMETICAS%20BASICAS.htmhttp://personales.unican.es/Togoresr/lisp/CAR%20QUOTE%20CDR.htmhttp://personales.unican.es/Togoresr/lisp/CONSTRUCCION%20DE%20LISTAS.htmhttp://personales.unican.es/Togoresr/lisp/TRATAMIENTO%20DE%20LISTAS.htmhttp://personales.unican.es/Togoresr/lisp/TRATAMIENTO%20DE%20CADENAS.htmhttp://personales.unican.es/Togoresr/lisp/CADENAS%20OTRAS.htmhttp://personales.unican.es/Togoresr/lisp/FORMAS%20ESPECIALES.htmhttp://personales.unican.es/Togoresr/lisp/USUARIO.htmhttp://personales.unican.es/Togoresr/lisp/DEFUN.htmhttp://personales.unican.es/Togoresr/lisp/DEFUN.htmhttp://personales.unican.es/Togoresr/lisp/REDONDEO.htmhttp://personales.unican.es/Togoresr/lisp/REDONDEO.htmhttp://personales.unican.es/Togoresr/lisp/TRIGONOMETRICAS.htmhttp://personales.unican.es/Togoresr/lisp/LAMBDA.htmhttp://personales.unican.es/Togoresr/lisp/FUNCTION.htmhttp://personales.unican.es/Togoresr/lisp/LOAD.htmhttp://personales.unican.es/Togoresr/lisp/IDE-6.htmhttp://personales.unican.es/Togoresr/lisp/IDE-7.htmhttp://personales.unican.es/Togoresr/lisp/IDE-8.htmhttp://personales.unican.es/Togoresr/lisp/IDE-9.htmhttp://personales.unican.es/Togoresr/lisp/TIPOS%20DE%20DATOS.htmhttp://personales.unican.es/Togoresr/lisp/ATOMOS.htmhttp://personales.unican.es/Togoresr/lisp/ATOMOS.htm#s-atomhttp://personales.unican.es/Togoresr/lisp/ATOMOS.htm#literaleshttp://personales.unican.es/Togoresr/lisp/ENTEROS-REALES.htmhttp://personales.unican.es/Togoresr/lisp/ATOMOS.htm#cadenashttp://personales.unican.es/Togoresr/lisp/LISTAS.htmhttp://personales.unican.es/Togoresr/lisp/LISTAS.htm#un-nivelhttp://personales.unican.es/Togoresr/lisp/LISTAS.htm#anidadahttp://personales.unican.es/Togoresr/lisp/LISTAS.htm#a-listhttp://personales.unican.es/Togoresr/lisp/LISTAS.htm#vaciahttp://personales.unican.es/Togoresr/lisp/TYPE.htmhttp://personales.unican.es/Togoresr/lisp/TYPE.htm#lisphttp://personales.unican.es/Togoresr/lisp/TYPE.htm#autocadhttp://personales.unican.es/Togoresr/lisp/TYPE.htm#activexhttp://personales.unican.es/Togoresr/lisp/FUNCIONES.htmhttp://personales.unican.es/Togoresr/lisp/FUNCIONES.htm#primitivashttp://personales.unican.es/Togoresr/lisp/ARITMETICAS%20BASICAS.htmhttp://personales.unican.es/Togoresr/lisp/CAR%20QUOTE%20CDR.htmhttp://personales.unican.es/Togoresr/lisp/CONSTRUCCION%20DE%20LISTAS.htmhttp://personales.unican.es/Togoresr/lisp/TRATAMIENTO%20DE%20LISTAS.htmhttp://personales.unican.es/Togoresr/lisp/TRATAMIENTO%20DE%20CADENAS.htmhttp://personales.unican.es/Togoresr/lisp/CADENAS%20OTRAS.htmhttp://personales.unican.es/Togoresr/lisp/FORMAS%20ESPECIALES.htmhttp://personales.unican.es/Togoresr/lisp/USUARIO.htmhttp://personales.unican.es/Togoresr/lisp/DEFUN.htmhttp://personales.unican.es/Togoresr/lisp/DEFUN.htmhttp://personales.unican.es/Togoresr/lisp/REDONDEO.htmhttp://personales.unican.es/Togoresr/lisp/REDONDEO.htmhttp://personales.unican.es/Togoresr/lisp/TRIGONOMETRICAS.htmhttp://personales.unican.es/Togoresr/lisp/LAMBDA.htmhttp://personales.unican.es/Togoresr/lisp/FUNCTION.htmhttp://personales.unican.es/Togoresr/lisp/LOAD.htm
  • 8/10/2019 Visual LISP Para AutoCAD 2000

    3/158

    3. EST"CT"AS DE CONTOLo PEDICADOS GENEALESo PEDICADOS AIT!/TICOSo OPEADOES L#GICOS

    o OPEADOES L#GICOS (INAIOS N*,eros (inarios %uncin LS+ %uncin 7 1NOT l8ico binario3 %uncin LOGAND

    CONVESI#N ENTE (INAIOS 6DECI!ALES 1I3

    CONVESI#N ENTE (INAIOS 6DECI!ALES 1II3

    %uncin LOGIO %uncin (OOLE

    o PEDICADOS DE%INIDOS PO EL "S"AIOo EST"CT"AS CONDICIONALES

    4. %"NCIONES EC"SIVAS E ITEATIVASo %"NCIONES EC"SIVAS

    E5TACCI#N DE LOS V/TICES DE "NAPOLILNEA

    o %"NCIONES ITEATIVAS

    EPETICI#N "N N4!EO DETE!INADODE VECES ITEACIONES SO(E ELE!ENTOS DE

    "NA SEC"ENCIA CICLOS DEPENDIENTES DE "NA

    CONDICIONALo %"NCIONES DE !APEADO SO(E SEC"ENCIAS

    E5TACCI#N DE LOS V/TICES DE "NAPOLILNEA

    "na solucin ,.s e9ica:;o

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    4/158

    o E5TACCI#N DE LISTAS DE DATOS DEO(>ETO

    o TRANS$OR%ACI&N DE !OS DATOS DE O"#ETO' CONVESI#N DE POLILNEAS EN

    SPLINES POGA!A PL2SP;LSP

    E>E!PLOS DE LA "TILI?ACI#N DE ENT!A@Eo DE%INICI#N DE (LO"ESo DE%INICI#N DE CAPAS

    SISTE!AS DE COODENADASo E#E%(!O DE TRANS$OR%ACI&N ENTRE SISTE%AS

    DE COORDENADAS'CONVESI#N DE POLILNEAS BD EN 2D

    ANE5O A

    TA"!A DE $)NCIONES *IS)A! !IS(

    NOTA' Esta tab+a est en -ormato (D$ (ara .er+a es necesarioe+ Acrobat READERPara )escar8ar el Acrobat ea)er ;0 pulse

    au

    ANE5O (

    AC+IVOS LISP 6 DCL S"!INISTADOS CON A"TOCAD$

    Versin 2;F Versin 0 Versin Versin 2 Versin B

    Versin Versin 2000

    ANE5O C

    E>E!PLO DE !EN4 PESONALI?ADO 13$

    !en*s AutoCAD ' (onus Personali:a)os

    Descar/a de ambos en -ormato 0I(

    ANE5O D

    http://personales.unican.es/Togoresr/listent.htmlhttp://personales.unican.es/Togoresr/listent.htmlhttp://personales.unican.es/Togoresr/Splines.htmlhttp://personales.unican.es/Togoresr/Splines.htmlhttp://personales.unican.es/Togoresr/pl2sp.htmlhttp://personales.unican.es/Togoresr/entmake.htmlhttp://personales.unican.es/Togoresr/blk_def.htmlhttp://personales.unican.es/Togoresr/ent_tables.htmlhttp://personales.unican.es/Togoresr/Sco-es.htmlhttp://personales.unican.es/Togoresr/Sco-es-2.htmlhttp://personales.unican.es/Togoresr/lisp/docs/45273_vlispcht.pdfhttp://www.adobe.com/products/acrobat/readstep.htmlhttp://www.adobe.com/products/acrobat/readstep.htmlhttp://personales.unican.es/Togoresr/lisp/Ejemplos/R2.5/R2-5.htmhttp://personales.unican.es/Togoresr/lisp/Ejemplos/R10/R10.htmhttp://personales.unican.es/Togoresr/lisp/Ejemplos/R11/R11.htmhttp://personales.unican.es/Togoresr/lisp/Ejemplos/R12/R12.htmhttp://personales.unican.es/Togoresr/lisp/Ejemplos/R13/R13.htmhttp://personales.unican.es/Togoresr/lisp/Ejemplos/R14/R14.htmhttp://personales.unican.es/Togoresr/lisp/Ejemplos/A2K/R15.htmhttp://personales.unican.es/Togoresr/lisp/Ejemplos/R14/MenuR14.htmhttp://personales.unican.es/Togoresr/acad_mnu.ziphttp://personales.unican.es/Togoresr/listent.htmlhttp://personales.unican.es/Togoresr/listent.htmlhttp://personales.unican.es/Togoresr/Splines.htmlhttp://personales.unican.es/Togoresr/Splines.htmlhttp://personales.unican.es/Togoresr/pl2sp.htmlhttp://personales.unican.es/Togoresr/entmake.htmlhttp://personales.unican.es/Togoresr/blk_def.htmlhttp://personales.unican.es/Togoresr/ent_tables.htmlhttp://personales.unican.es/Togoresr/Sco-es.htmlhttp://personales.unican.es/Togoresr/Sco-es-2.htmlhttp://personales.unican.es/Togoresr/lisp/docs/45273_vlispcht.pdfhttp://www.adobe.com/products/acrobat/readstep.htmlhttp://www.adobe.com/products/acrobat/readstep.htmlhttp://personales.unican.es/Togoresr/lisp/Ejemplos/R2.5/R2-5.htmhttp://personales.unican.es/Togoresr/lisp/Ejemplos/R10/R10.htmhttp://personales.unican.es/Togoresr/lisp/Ejemplos/R11/R11.htmhttp://personales.unican.es/Togoresr/lisp/Ejemplos/R12/R12.htmhttp://personales.unican.es/Togoresr/lisp/Ejemplos/R13/R13.htmhttp://personales.unican.es/Togoresr/lisp/Ejemplos/R14/R14.htmhttp://personales.unican.es/Togoresr/lisp/Ejemplos/A2K/R15.htmhttp://personales.unican.es/Togoresr/lisp/Ejemplos/R14/MenuR14.htm
  • 8/10/2019 Visual LISP Para AutoCAD 2000

    5/158

    )TI!IDADES *ARIAS'

    BDT+D;LSP Pro8ra,a para )ibu&ar roscas ,e)iantesli)os BD

    ANE5O E

    Enlaces conoci)os a este sitio HE(

    Inicio |Continuar...

    -..., /einaldo 'ogores"El cdigo publicado es nuestro, salvo en los casos enque as se expresa"'odos los derec0os sobre los programas que citamosson de la exclusiva propiedad de sus autores" En loscasos en que as lo requiere el autor 0emos incluidolas respectivas informaciones sobre el cop&rig0t"El cdigo que publicamos ba1o nuestro nombre slo

    puede ser utili2ado con fines no comerciales,mencionando siempre al autor & a la obra de donde

    se 0a tomado"30ide script from old bro4sers document"4rite5 6

    !ctuali2ado 67 document"lastModified 89 33end 0idingcontents :::;

    FastCounter by bCentral

    curso

    AGADECI!IENTOS$

    http://personales.unican.es/Togoresr/lisp/Ejemplos/utilidades/3dthd.ziphttp://personales.unican.es/Togoresr/lisp/Ejemplos/utilidades/3dthd.ziphttp://personales.unican.es/Togoresr/bookmaks.htmlhttp://personales.unican.es/Togoresr/index.htmlhttp://personales.unican.es/Togoresr/lisp/AGRADECIMIENTOS.htmhttp://fastcounter.bcentral.com/fc-joinhttp://fastcounter.bcentral.com/fc-joinhttp://es.nedstat.net/cgi-bin/viewstat?name=togoreshttp://member.bcentral.com/cgi-bin/fc/fastcounter-login?2292730http://personales.unican.es/Togoresr/lisp/Ejemplos/utilidades/3dthd.ziphttp://personales.unican.es/Togoresr/lisp/Ejemplos/utilidades/3dthd.ziphttp://personales.unican.es/Togoresr/bookmaks.htmlhttp://personales.unican.es/Togoresr/index.htmlhttp://personales.unican.es/Togoresr/lisp/AGRADECIMIENTOS.htmhttp://fastcounter.bcentral.com/fc-join
  • 8/10/2019 Visual LISP Para AutoCAD 2000

    6/158

    En primer trmino a mis compa2eros de+ Departamento deIn/enier3a 4eo/r-ica 5 Tcnicas de E6presin 4r-ica de +a"niersi)a) )e Cantabriapor e+ apo5o brindado para +apreparacin de este curso, 5 sobre todo a +os pro-esores

    %i+a/ros Can/a 5 Csar Otero, sin cu5o aporte ubiera sidomu5 di-3ci+ cump+ir esta tarea Tambin a +a direccin de+Instituto )e %or,acin ' Estu)ios Socialesen Cantabriapor +as -aci+idades brindadas para +a inc+usin de este cursoen una apretada a/enda de compromisos (or su /enti+aco/ida 5 dedicacin, a +os pro-esores 5 a+umnos de +a%aestr3a en In-ormtica 5 Computacin de +a %aculta) )eCiencias E-actas, "niersi)a) Nacional )el Nor)este, enCorrientes, Ar/entina 5 mu5 especia+mente a +os pro-esores

    Da.id !a Red %art3ne8 5 4uido (ace%"ENTES$

    ueremos reconocer nuestra deuda acia todos a:u++os :uede manera tan desinteresada brindan su e6periencia a tra.sde Internet 5 en +os /rupos de noticias especia+i8ados A;nsiendo injusto por +as ine.itab+es omisiones :uiero mencionar

    a Reini )rban cu5a P.8ina AutoCAD5 cu5o F!< !uto=I)#son ob+i/ada re-erencia en cua+:uier trabajo de este tipo, aVla) NesterosJ', Dennis SKinn, Ton' Tan:illo, >on%le,in85 icKar) D; +oar) A TKe Association o9 Lisp"sersE", especia+mente +os de a' Dou8Kert' '!arJ ScKar: de +a N?), de+ EL! esearcK Group, deCollin Allen ' !aneesK DKa8at para +os estudiantes de

    Te6as A@% 5 de E)uar)o Villa,ilen Tu+ane )ni.ersit5, detodos +os cua+es e tomado ideas 5 ejemp+os de cdi/o :ue edebido adaptar a+ entorno Auto!IS( No :uiero terminar sinacer mencin a dos +ibros esc+arecedores :ue tambin citopro-usamente' +n =I)#, de (au+ 4raam, .erdaderare.e+acin en cuanto a +as potencia+idades de este pococonocido +en/uaje de pro/ramacin 5 Common IS!" T#eanguage$ %nd Edition &CT%'de 4u5 Stee+e, :uecontiene +as especi-icaciones de+ +en/uaje Otro +ibro :ue nos

    a sido de inapreciab+e .a+or para +a comprensin de +a

    http://www.unican.es/http://www.ifes.es/http://exa.unne.edu.ar/http://exa.unne.edu.ar/http://www.unne.edu.ar/http://xarch.tu-graz.ac.at/autocad/http://members.tripod.com/~vnestr/http://www.halcyon.com/jeeperhttp://ourworld.compuserve.com/homepages/tonyt/mailto:[email protected]:[email protected]:[email protected]://www.elwood.com/alu/index.htmhttp://www.elwood.com/alu/index.htmhttp://www.nyu.edu/pages/linguistics/marc/contents.htmlhttp://www.nyu.edu/pages/linguistics/marc/contents.htmlhttp://www.psychologie.uni-trier.de:8000/projects/ELM/elmart.htmlhttp://snaefell.tamu.edu/~colin/lp/http://www.cs.tulane.edu/www/Villamil/lisp/lisp1.htmlhttp://personales.unican.es/Togoresr/lisp/docs/common.htmhttp://personales.unican.es/Togoresr/lisp/docs/common.htmhttp://www.unican.es/http://www.ifes.es/http://exa.unne.edu.ar/http://exa.unne.edu.ar/http://www.unne.edu.ar/http://xarch.tu-graz.ac.at/autocad/http://members.tripod.com/~vnestr/http://www.halcyon.com/jeeperhttp://ourworld.compuserve.com/homepages/tonyt/mailto:[email protected]:[email protected]:[email protected]://www.elwood.com/alu/index.htmhttp://www.elwood.com/alu/index.htmhttp://www.nyu.edu/pages/linguistics/marc/contents.htmlhttp://www.nyu.edu/pages/linguistics/marc/contents.htmlhttp://www.psychologie.uni-trier.de:8000/projects/ELM/elmart.htmlhttp://snaefell.tamu.edu/~colin/lp/http://www.cs.tulane.edu/www/Villamil/lisp/lisp1.htmlhttp://personales.unican.es/Togoresr/lisp/docs/common.htmhttp://personales.unican.es/Togoresr/lisp/docs/common.htm
  • 8/10/2019 Visual LISP Para AutoCAD 2000

    7/158

    jera:u3a de objetos Acti.e de Autocad es e+ recin pub+icado!utoC!$ >??? @A! #rogrammerBs /eference, de #oe Sutpin

    INTOD"CCI#N$

    !IS( se encuentra entre +os ms anti/uos +en/uajes depro/ramacin de a+to ni.e+ a;n en uso /enera+i8ado $uedesarro++ado a+rededor de 19B por #on %cCart5 !a idea de

    !IS( sur/i a partir de un sistema +/ico ++amado 6lambdacalculusBBdesarro++ado por A+on8o Curc E6isten di.ersas.ariantes

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    8/158

    para +a concepcin de+ +en/uaje a sido +a estructura de +as-unciones matemticas Todos sabemos cmo reso+.er unae6presin de+ tipo

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    9/158

    -unciona+es pueden ser escritos a una .e+ocidad poco usua+, 5a +a .e8, pueden ser inusua+mente con-iab+esEn !IS( es comparati.amente -ci+ e+ depurar +os pro/ramas)na /ran cantidad de in-ormacin se encuentra disponib+e en

    tiempo de ejecucin, +o :ue a5uda en e+ rastreo de +oserrores (ero a;n ms importante es +a -aci+idad con +a :uepuedenprobarse+os pro/ramas No es necesario e+ compi+are+ pro/rama para probar su -uncionamiento como un todo(odemos probar +as -unciones indi.idua+mente, ++amndo+asdesde e+ ni.e+ superior de+ e.a+uadorEsta comprobacin de carcter incrementa+ es tan .a+iosa :uee+ esti+o de pro/ramacin !IS( a e.o+ucionado paraapro.ecar+a !os pro/ramas escritos en un esti+o -unciona+

    pueden ser comprendidos una -uncin a +a .e8, 5 desde e+punto de .ista de+ +ector, esta es su principa+ .entaja Sinembar/o, e+ esti+o -unciona+ se adapta per-ectamente a +acomprobacin incrementa+' +os pro/ramas escritos en esteesti+o pueden ser tambinprobadosuna -uncin a +a .e8Cuando una -uncin ni e6amina ni a+tera e+ estado e6terior,+os errores se arn aparentes de inmediato )na -uncin as3dise2ada s+o puede a-ectar e+ mundo e6terior a tra.s de +os.a+ores :ue de.ue+.e En +a medida :ue estos .a+ores sean +os

    esperados, podemos con-iar en e+ cdi/o :ue +os produjo!os pro/ramadores !IS( e6perimentados de eco dise2ansus pro/ramas de manera :ue puedan ser -ci+menteprobados'

    1 Tratan de ais+ar +os e-ectos co+atera+es en unaspocas -unciones, de manera :ue +a ma5or parte de+pro/rama pueda ser escrito en un esti+o puramente-unciona+

    F Si una -uncin debe producir e-ectos co+atera+es,tratan de :ue a+ menos posea una inter-a8-unciona+

    !e dan a cada -uncin un propsito ;nico 5 biende-inido

    Cuando acaba de escribirse una -uncin, pueden probar+asobre una se+eccin de casos representati.os, 5 una .e8eco esto pasar a +a pr6ima -uncin

    En !IS(, como en cua+:uier otro +en/uaje, e+ desarro++o se++e.a a cabo en cic+os de escritura 5 comprobacin (ero en

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    10/158

    !IS( e+ cic+o es mu5 corto' -unciones ais+adas, e inc+usopartes de -unciones ? si comprobamos todo a medida :ue +oescribimos, sabremos dnde buscar cuando se produ8ca unerror' en +o ;+timo :ue se escribi

    %ra0am, +n =isp, pg" D & "

    Lisp ,as all. )e AutoCAD

    a5 imp+ementaciones de !IS( para uso en e+ desarro++o deap+icaciones de todo tipo E+ +en/uaje se a norma+i8ado cone+ nombre de Common !IS( E"'

    Compi+adores 5 entornos de desarro++o Common !IS( para>INDO>S'

    5anal's LispHorJs Alle8ro CL Cor,an Co,,on Lisp

    CLISP!os primeros tres son productos comercia+es, pero todoso-recen .ersiones /ratuitas de e.a+uacin per-ectamenteadecuadas para e+ aprendi8aje de+ +en/uajeC!IS( es tota+mente /ratis

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    11/158

    es /ratuito 5 posee una conso+a !IS( tambin /ratuita (araCor,an Co,,on Lispe+ pro-esor Reini )rban aimp+ementado +a posibi+idad de su ejecucin desde e+ entornoAutoCAD +o :ue :ue pudiera se2a+ar un camino de desarro++o

    interesante para e+ -uturoTutoria+es en +a Red'

    E+ +ibro de Da.id Touret8P5 Co,,on Lisp$ A GentleIntro)uction to S',bolic Co,putation, :ue estdisponib+e en -ormato (D$E+ +ibro de Da.id !amPins Success9ul Lisp$ +o to"n)erstan) an) "se Co,,on Lispen -ormato tm+!a Co,,on LISP +'perSpec, de Qent (itman, :ue no es untutoria+, sino +a re-erencia de-initi.a de+ +en/uaje Cortes3a de+a casa :ue comercia+i8a !isp>orPsE+ +ibro de 4u5 Stee+e Co,,on LISPM tKe lan8ua8e; 2n)E)ition, ms conocido como C!T!F, aun:ue anterior a +anorma ANSI, a;n merece ser +e3do

    Si se trata de comprar un +ibro, +o recomendab+e ser3acomen8ar, 5a sea con e+ de (au+ 4raam ANSI Co,,onLispo con e+ de Stepen S+ade Ob&ectOriente)

    Co,,on LISPDespus, e+ (AI( eb ser3a necesario .isitar e+ CLiJi 5 +a p/ina de AL"??-:?.:> ?GG>? #)'

    PAA !"ESTA;;;

    http://corman.net/lisphttp://www-2.cs.cmu.edu/~dst/LispBook/http://www-2.cs.cmu.edu/~dst/LispBook/http://www.psg.com/~dlamkins/sl/cover.htmlhttp://www.psg.com/~dlamkins/sl/cover.htmlhttp://www.xanalys.com/software_tools/reference/HyperSpec/http://www-2.cs.cmu.edu/Groups/AI/html/cltl/cltl2.htmlhttp://www-2.cs.cmu.edu/Groups/AI/html/cltl/cltl2.htmlhttp://www.paulgraham.com/acl.htmlhttp://www.paulgraham.com/acl.htmlhttp://vig.prenhall.com/catalog/academic/product/1,4096,0136059406.html,00.htmlhttp://vig.prenhall.com/catalog/academic/product/1,4096,0136059406.html,00.htmlhttp://www.norvig.com/paip.htmlhttp://www.norvig.com/paip.htmlhttp://ww.telent.net/cliki/indexhttp://www.lisp.org/http://corman.net/lisphttp://personales.unican.es/Togoresr/lisp/AUTOLISP-XLISP.htmhttp://personales.unican.es/Togoresr/lisp/AUTOLISP-XLISP.htmhttp://corman.net/lisphttp://www-2.cs.cmu.edu/~dst/LispBook/http://www-2.cs.cmu.edu/~dst/LispBook/http://www.psg.com/~dlamkins/sl/cover.htmlhttp://www.psg.com/~dlamkins/sl/cover.htmlhttp://www.xanalys.com/software_tools/reference/HyperSpec/http://www-2.cs.cmu.edu/Groups/AI/html/cltl/cltl2.htmlhttp://www-2.cs.cmu.edu/Groups/AI/html/cltl/cltl2.htmlhttp://www.paulgraham.com/acl.htmlhttp://www.paulgraham.com/acl.htmlhttp://vig.prenhall.com/catalog/academic/product/1,4096,0136059406.html,00.htmlhttp://vig.prenhall.com/catalog/academic/product/1,4096,0136059406.html,00.htmlhttp://www.norvig.com/paip.htmlhttp://www.norvig.com/paip.htmlhttp://ww.telent.net/cliki/indexhttp://www.lisp.org/http://corman.net/lisphttp://personales.unican.es/Togoresr/lisp/AUTOLISP-XLISP.htmhttp://personales.unican.es/Togoresr/lisp/AUTOLISP-XLISP.htm
  • 8/10/2019 Visual LISP Para AutoCAD 2000

    12/158

    Como una muestra de +a capacidad de s3ntesis 5 abstraccin a+a :ue podemos acceder con !IS(

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    13/158

    !IS( -u inicia+mente -ue desarro++ado como un +en/uajeinterpretado, aun:ue +as modernas .ersiones cuentan

    siempre con un compi+ador :ue trans-orma e+ cdi/o -uenteen +en/uaje de m:uina optimi8ado Esta compi+acin puedeejecutarse de manera inmediata a+ car/ar en e+ entorno dedesarro++o e+ cdi/o -uente de+ pro/rama, +o :ue -aci+ita e+desarro++o a+ disponer de una e.a+uacin de manerainmediata (ara acceder a este entorno, en e+ caso de+ *isua+!IS(, se tec+ea desde +a +3nea de comando de AutoCAD +asinstrucciones *!IS( *!IDE

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    14/158

    E+ entorno de desarro++o E"'

    AutoCADAutoLISP in9otools(/ina AutoCADJAuto!IS(de Reini )rban

    TKe Association o9 Lisp "sers(/ina >E" de +a Asociacinde )suarios de !IS(

    )n caso particu+ar es e+ de+ Cor,an Co,,on Lisp, para e+

    :ue Reini )rban a imp+ementado +a posibi+idad de suejecucin desde e+ entorno AutoCAD 5 :ue pudiera se2a+ar uncamino de desarro++o interesante para e+ -uturo Tambine6isten utili)a)es para la trans9erencia )e pro8ra,asAutoLISP5LISPdesarro++adas por Ton5 Tan8i++o

    EL ENTONO DE DESAOLLO VIS"AL LISP

    *isua+ !IS(

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    15/158

    Es particu+armente ;ti+ +a posibi+idad :ue se incorpora para +ainteraccin con +a jerar:u3a de objetos de +a ap+icacinmediante +a inter-a8 Acti.e V Automation de %icroso-t, 5 +aposibi+idad de responder a e.entos mediante +a

    imp+ementacin de -unciones dise2adas como reactoresComo erramienta de desarro++o se aporta un Entorno deDesarro++o Inte/rado

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    16/158

    Capacidad para /uardar 5 recuperar +a con-i/uracin de+Escritorio para reuti+i8ar +a distribucin de .entanas decua+:uier sesin anterior de *!IS(

    Conso+a *isua+ !IS( Inte+i/ente :ue permite un nue.o

    ni.e+ de interaccin de+ usuario, con -unciones :ueamp+3an +as de +a .entana de te6to abitua+ de AutoCAD

    El Traba&o con Visual LISP ' AutoCAD

    *!IS( posee su propia .entana de ap+icacin distinta de +a deAutoCAD, pero no puede ejecutarse de maneraindependiente (ara acceder a+ IDE *isiua+ !IS(, antes deber

    aberse iniciado una sesin de AutoCAD

    Iniciar Visual LISP

    Como se dijo antes, Debe aberse iniciado una sesin deAutoCAD Esta sesin puede contener s+o un dibujo .ac3o, opueden estar abiertos dibujos cu5o contenido se deseeprocesar

    (ara acti.ar e+ IDE *!IS( tenemos tres opciones'

    Se+eccionar de+ men;erramientasUAuto!IS(UEditor *isua+ !IS(

    Tec+ear en +a +3nea de comandos' *!IS(Nota' emos encontrado a+ menos en una.ersin +oca+i8ada espa2o+a :ue e+ comando*!IDE no es reconoci)opor e+ sistema !aA5uda de esa misma .ersin ae2a+a comoa+ternati.a e+ comando *IS)A!!IS(IDE, :uetampoco es reconocido En estos casos siemprese puede recurrir a+ comando *!IDE, descritoen e+ punto si/uiente

    !a .ersin anterior de *isua+ !IS( uti+i8aba con+os mismos -ines e+ comando *!IDE, :ue si/uesiendo reconocido por +a .ersin F Deeco, internamente +a ++amada de AutoCAD a+IDE *isua+ !IS( se rea+i8a mediante estecomando, :ue .eremos aparecer en +a +3nea decomandos cada .e8 :ue se cambie a ese

    entorno

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    17/158

    La Ventana )e la Aplicacin

    A+ iniciarse *isua+ !IS( pasa a primer p+ano +a si/uiente

    .entana de ap+icacin'

    (uede se+eccionar cada parte de +a .entana para una bre.edescripcin

    (arra )e !en*s

    Asumimos :ue e+ +ector est -ami+iari8ado con e+ uso demen;s desp+e/ab+es en AutoCAD u otras ap+icaciones S+ocabr3a destacar :ue stos men;s son sensib+es a+ conte6to en:ue se uti+i8an Es decir, :ue a+/unas opciones :ue puedenestar acti.as si se abre +a .entana de+ Editor pueden noestar+as si e+ -oco se encuentra en +a Conso+a o en +a .entanade TRACE

    !as -unciones de +a ap+icacin se distribu5en entre +os men;sdesp+e/ab+es de +a si/uiente manera

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    18/158

    %ILECreacin de nue.os -iceros de pro/ramas abiertos parasu edicinApertura de -iceros e6istentes

    4uardar +os cambios e-ectuadosCompi+ar ap+icaciones *isua+ !IS(Imprimir +os -iceros de pro/ramas

    EDITCopiar 5 (e/ar te6toDesacer e+ ;+timo cambio en e+ Editor o +a ;+tima-uncin ejecutada desde +a Conso+aSe+eccionar te6to en e+ Editor o +a Conso+a

    Comprobar e+ cierre de parntesisRecuperar -unciones ejecutadas desde +a Conso+a

    SEAC+"uscar 5 Reemp+a8ar te6toCo+ocar marcadores de re-erencia

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    19/158

    *isua+ !IS( dispone de cinco "arras de erramientas :uepueden acti.arseJdesacti.arse desde e+ men;

    *ieUToo+bars :ue abre e+ si/uiente di+o/o'

    Estas cinco "arras de erramientas contienen +as opciones ucomandos esencia+es de+ IDE, -aci+itando e+ acceso a +osmismos

    Contiene +as erramientas usua+es de Crear Nue.o,Abrir, 4uardar, Imprimir, Cortar, Copiar, (e/ar, Desacer,

    Reacer 5 por ;+timo un acceso a +a -ucin Apropos :uesir.e para comp+etar e+ te6to buscando una corre+acinde una subcadena con nombres de -unciones, etc

    Inc+u5e +as -unciones de "uscar, "uscar 5 Reemp+a8arAdems una casi++a de +ista desp+e/ab+e donde se/uardan +os trminos anteriormente buscados durante +asesin de trabajo, +o :ue permite repetir una bus:ueda

    con ms -aci+idad, cosa :ue se ace con +a erramientasituada a +a dereca de +a casi++a (or ;+timo inc+u5e unaserie de erramientas para na.e/ar dentro de+ te6tomediante marcadores, :ue se introducen con +aerramienta de +a i8:uierda, se a.an8a o retrocede con+as dos si/uientes 5 se e+iminan con +a ;+tima

    !a barra Too+s

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    20/158

    desde +a Conso+a, car/ar s+o e+ cdi/o se+eccionado,comprobar +a sinta6is de todo e+ contenido de +a .entanade+ Editor, o con +a si/uiente, comprobar s+o +ose+eccionado (ara -ormatear e+ te6to se uti+i8an +os

    pr6imos dos botones, e+ primero para todo e+ editor 5 e+se/undo s+o para e+ te6tose+eccionado !os dossi/uientes botones sir.en para marcar como coimentarioe+ te6to se+eccionado o para desmarcar+o ? porsupuesto, e+ ;+timo se trata de +a A5uda en +3nea

    !os tres primeros botones de esta barra determinan +aaccin a+ encontrar un punto de ruptura durante +a

    e.a+uacin E+ primero entra en +as e6presiones anidadasposteriores a+ punto de ruptura, e.a+undo+as desde +ams interior E+ se/undo e.a+;a esta e6presin 5 sedetiene antes de +a si/uiente para de nue.o decidir si se:uiere entrar a e.a+uar +as e6presiones anidadas E+tercer botn contin;a asta e+ -ina+ de +a -uncin encurso 5 entonces cuando se detiene de nue.o +ae.a+uacin

    E+ se/undo tr3o de botones tene :ue .er con +as accionesa tomar cuando se produce una ruptura de+ -+ujo deejecucin a causa de un error, o de :ue se a+cance unpunto de ruptura pre-ijado dentro de+ pro/rama Aun:uees un tema :ue se e6p+icar ms ade+ante, cabe deciraora :ue estos estados de suspensin en +a ejecucinde+ pro/rama se uti+i8an para e6aminar +os .a+oresasumidos por +as .ariab+es, cambiar+os si es preciso, etc

    E+ primer botn 5Continue8permite terminar con estapausa 5 continuar +a ejecucin norma+ de+ pro/rama E+se/undo botn 5

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    21/158

    permite a2adir un nue.o punto de ruptura en e+pro/rama, situado en +a posicin actua+ de+ cursor E+se/undo botn 5!dd Hatc08da acceso a+ di+o/o :uepermite se+eccionar un nombre de .ariab+e para

    obser.ar sus resu+tados durante +a ejecucin Estosresu+tados se e6iben en una .entana especia+, +a.entana Hatc0E+ botn =ast AreaKresa+ta en +a .entana de+ editor +ae6presin :ue dio ori/en a +a ;+tima ruptura En caso deerror, de esta manera se detecta de inmediato dnde seprodujo steE+ ;+timo botn no es rea+mente un botn de comando

    Sir.e simp+emente para indicar si +a interrupcin actua+se encuentra antes o despus de +a e6presin

    E+ primer botn sir.e para poner en primer p+ano +a.entana de ap+icacin de AutoCAD E+ se/undo botnabre un men; donde podemos se+eccionar +a .entana de+IDE *isua+ !IS( :ue deseamos poner en primer p+anoEsto se ace necesario pues podemos tener abiertas de

    manera simu+tnea un /ran n;mero de pro/ramas 5puede no der -ci+ +oca+i8ar a:u+o :ue :ueremosE+ tercer botn tras+ada e+ -oco a +a Conso+a de *isua+!IS( E+ si/uiente permite acti.ar +a caracter3stica deInspeccin 5Inspect8 Inspectpermite e6aminar 5modi-icar objetos Auto!IS( as3 como AutoCAD !aerramienta Inspectcrea una .entana separada paracada objeto sometido a inspeccin

    !a si/uiente erramienta 5'race )tacK8necesitae6p+icaciones :ue se sa+en de+ marco de estaintroduccin "aste decir :ue nos permite acceder a +amemoria de pi+a donde se /uardan +as ++amadas a-uncin (uede in.ocarse en un momento de suspensinen +a ejecucin de un pro/rama 5 permite mediante unmen; conte6tua+ acceder a datos re+acionados con +aoperacin de+ pro/ramaE+ botn :ue +e si/ue 5)&mbol )ervice8est dise2ado parasimp+i-icar e+ acceso a +as distintas uti+idades de

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    22/158

    depuracin re+acionadas con s3mbo+os (odemos resa+tarcua+:uier nombre de s3mbo+o en e+ Editor 5 a+ pu+sarsobre este botn se abrir +a .entana )&mbol )ervicedonde se muestra e+ .a+or .incu+ado Este .a+or se puede

    cambiar directamente en esta .entana Adems tieneuna barra de erramientas :ue permiten otros procesoscon e+ s3mbo+o se+eccionadoE+ si/uiente botn permite abrir +a .entana!propos:uedescribimos en deta++e ms ade+ante? por ;+timo un botn :ue permite acceder a +a .entanaHatc0

    La Consola Visual LISP

    Aun:ue parecida a +a .entana de te6to de AutoCAD en e+eco de :ue se puden introducir -unciones para e.a+uar+as 5obtener e+ resu+tado en panta++a, +a Conso+a es unaerramienta de muca ma5or potencia 5 e6isten .ariasdi-erencias en su manera de operar :ue es importante teneren cuenta

    (or ejemp+o, para conocer e+ .a+or asociado a un s3mbo+o noes necesario, como en AutoCAD, preceder+o de un si/no deadmiracin WU "asta tec+ear e+ nombre de +a .ariab+e 5

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    23/158

    pu+sar INTROU En +a Conso+a se emiten una serie demensajes de dia/nstico durante +a ejecucin de +as -unciones5 si se encuentra un error interrumpe +a ejecucin 5 abi+itaun nue.o ni.e+ de e.a+uacin donde podemos ensa5ar

    cambios en .a+ores de .ariab+es 5 rea+i8ar pruebas paradetectar +os prob+emas e6istentes De producirse un nue.oerror, se abi+ita un nue.o ni.e+ 5 as3 sucesi.amente, asta:ue decidamos re/resar a+ ni.e+ superior !as baras dedesp+a8amiento de +a conso+a nos permiten re.isar +osresu+tados anteriores

    !as prestaciones ms importantes de +a Conso+a se resumen acontinuacin'

    E.a+uar e6presiones Auto!IS( 5 mostrar e+ resu+tadode.ue+to por dicas e6presiones

    Introducir e6presiones Auto!IS( en +3neas m;+tip+espu+sando para e+ cambio de +3ne +a combinacin CTR!UH INTROU (u+sar s+o INTROU pro.ocar3a +ae.a+uacin de +a e6presin tec+eada asta entonces

    E.a+uar m;+tip+es e6presiones a +a misma .e8 Copiar 5 trans-erir te6to entre +as .entanas de +a

    Conso+a 5 e+ Editor !a ma5or parte de +os comandos dete6to estn disponib+es tambin en +a Conso+a

    Recuperar e6presiones tec+eadas anteriormente en +aConso+a, pu+sando +a tec+a TA"U (u+sando esta tec+a.arias .eces se .an recuperando +as e6presionesanteriores (ara rea+i8ar e+ cic+o en sentido in.erso puedeuti+i8arse +a combinacin SI$TU H TA"U

    !a tec+a TA"U tambin permite rea+i8ar una b;s:uedade carcter asociati.o a tra.s de+ conjunto dee6presiones anteriores Si se :uiere buscar anteriorese6presiones de creacin de .ariab+es bastar3a tec+ear

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    24/158

    (u+sando SI$TU H ESCU abre una nue.a Conso+a,dejando e+ te6to escrito en +a .entana de Conso+aanterior sin e.a+uar

    A+ pu+sar e+ botn dereco de+ ratn en cua+:uier punto

    de +a Conso+a o tec+eando SI$TU H $1U abre unmen; conte6tua+ de -unciones 5 op.iones *!IS( Esto-aci+ita, por ejemp+o, copiar 5 pe/ar te6to en +a +3nea decomandos de +a conso+a, buscar te6to e iniciar +asuti+idades de depuracin *!IS(

    La Consola Visual LISP en Entorno !ulti)ocu,ento 1!DI3

    AutoCAD F es capa8 de abrir .arios dibujos a +a .e8 Estose conoce como Inter-a8 %u+tidocumento

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    25/158

    "orra e+ te6to se+eccionado de +a Conso+a 5 +o trans-ierea+ (ortapape+es de >indos

    Cop'Copia e+ te6to se+eccionado a+ (ortapape+es de

    >indosPaste

    (e/a e+ contenido de+ (ortapape+es de >indos en +aposicin indicada por e+ cursor

    Clear Console in)o*ac3a +a *entana de +a Conso+a

    %in)"usca e+ te6to especi-icado en +a Conso+a

    InspectAbre e+ di+o/o de +a uti+idad Inspect

    A)) HatcKAbre +a .entana de +a uti+idad Hatc0

    AproposAbre +a .entana de+!propos

    S',bol SericeAbre e+ di+o/o de +a uti+idad )&mbol )ervice"

    "n)oDesace +a ;+tima operacine)o

    Anu+a e+ e-ecto de+ ;+timo Desacer 5Undo8AutoCAD !o)e

    Trans-iere toda +as entradas a +a +3nea de comandos deAutoCAD para su e.a+uacin

    To88le Console Lo8Copia +a sa+ida de +a Conso+a a un arci.o de re/istro5log file8

    C,o utili:ar la Consola para se8uir este Curso$

    !a conso+a es +a erramienta -undamenta+ :ue uti+i8aremospara se/uir este curso Encontraremos -ra/mentos de cdi/ocomo ste

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    26/158

    (odemos se+eccionar dico -ra/mento en nuestro broseruti+i8ando e+ ratn 5 copiar+o

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    27/158

    Obsr.ese cmo +os co+ores identi-ican +os componentes de+as e6presiones, rojo para +os parntesis, a8u+ para +as-unciones, .erdea8u+ para +os n;meros rea+es )na .e8

    e.a+uada +os co+ores de+ te6to cambian a ne/ro, con +o :ue seidenti-ica -ci+mente :u -ormas son +as :ue est encondiciones de ser e.a+uadas

    G AutoCAD F puede con-i/urarse para trabajar en modode documento ;nico (ara e++o se acti.a +a .ariab+e de sistemaSDI E+ .a+or por de-ecto de SDI es , cambindo+o a 1 se

    pasa a trabajar en modo de documento ;nico Trabajando eneste modo, +a .entana de te6to de AutoCAD contendr +oscomandos emitidos para +os sucesi.os dibujos abiertos

    GG Es posib+e rea+i8ar operaciones de cortar, copiar 5 pe/arentre +a conso+a de *!IS( 5 +a .entana de te6to de AutoCAD

    El E)itor Visual LISP

    Es ms :ue un simp+e editor de te6to Ser, en rea+idad,nuestro +u/ar de trabajo abitua+ para +a pro/ramacin !IS(dentro de AutoCAD Cada -icero de pro/rama abierto tendrsu propia .entana de+ Editor

    )n pro/rama en e+ editor tendr ms o menos este aspecto'

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    28/158

    Co)i9icacin sint.ctica por color

    !o :ue primero ++ama +a atencin +a .entana de+ editor es e+co+or :ue adoptan +os di-erentes componentes de+ pro/ramaE+ editor identi-ica +as distintas partes de un pro/rama !IS( 5+e asi/na distintos co+ores Esto permite detectar a primera.ista e+ementos ta+es como nombres de -uncin, n;merosenteros o rea+es 5 cadenas, distin/uindo+os de +os nombresde -unciones 5 .ariab+es asi/nados por e+ usuario !os erroresmecano/r-icos sa+tan as3 a +a .ista de manera inmediataEstos co+ores pueden persona+i8arse a /usto de+ usuario

    Controles )e la Ventana )el E)itor

    !a .entana de+ Editor no posee "arras de %en;s ni de

    erramientas A+ estar e+ -oco situado en una .entana de+Editor se acti.arn +as opciones de %en; 5 +as erramientas

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    29/158

    de +a .entana de +a Ap+icacin :ue pueden usarse paraoperaciones de+ Editor %ucas de +as opciones puedentambin ser ejecutadas desde e+ men; conte6tua+ :ue se abrea+ pusar e+ botn dereco de+ ratn E6iste +a posibi+idad de

    uti+i8ar tambin +as combinaciones de tec+as rpidas usua+esen +os editores de te6to 5 adems a+/unas combinaciones :uese uti+i8an para -unciones e6c+usi.as de este editor Entrminos /enera+es, adems de +a codi-icacin por co+or e+editor o-rece otras a5udas :ue -aci+itan /randemente e+desarro++o de pro/ramas A+/unas de estas uti+dades son'

    Comprobacin de+ cierre de parntesis $ormateo de+ Te6to

    Comentarios automticos en +os cierres de E6presiones Comentado 5 Descomentado automtico de +as +3neas

    se+eccionadas ";s:ueda 5 Sustitucin de Te6to Comprobacin de +a Sinta6is Car/a de e6presiones !IS( para ser probadas

    En +os pr6imos apartados pasaremos a e6poner estas-unciona+idades'

    "arras de erramientas %en; Conte6tua+ Tec+as Rpidas

    Copias )e Se8uri)a)

    E+ Editor *!IS( .iene con-i/urado paraacer siempre copias de se/uridad de+os -iceros Estas copias de se/uridadse sit;an en e+ mismo directorio de +a-uente de+ pro/rama usando e+ mismonombre 5 +a e6tensin +s De estamanera +a copia de se/uridad de+-icero caras+lspse ++amarcaras+9ls (ara recuperar +a ;+tima.ersin /uardada de un -icero se

    emp+ea +a opcin Re.ert de+ men; $i+es

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    30/158

    (arras )e +erra,ientas

    Casi todas +as -unciona+idades de+ pro/rama puedenaccederse desde iconos de +as "arras de erramientas !osiconos :ue aparecen a/risados cuando se acti.a +a .entanade+ Editor no son uti+i8ab+es en este conte6to !aserramientas uti+i8ab+es para operaciones en e+ Editor son'

    +erra,ientas )eE)icin

    (*sue)a '!arca)oreseisin '%or,ateoAcceso a otrasVentanas )e laAplicacin"tili)a)es )eDepuracin

    +erra,ientas )e E)icin

    Esta barra inc+u5e +as erramientas de edicin acostumbradas en todopro/rama >indos, adems de una propia para comp+etar nombres des3mbo+os'

    Crear nue.o arci.o Abrir un arci.o e6istente 4uardar e+ contenido de +a .entana de+ editor Imprimir Cortar Te6to copindo+o a+ (ortapape+es Copiar Te6to a+ (ortapape+es (e/ar Te6to desde e+ (ortapape+es Desacer +a ;+tima operacin Reacer +o deseco en +a operacin anterior Comp+etar e+ nombre de un s3mbo+o

    Co,pletar No,bres )e S,bolos

    http://personales.unican.es/Togoresr/lisp/IDE-7.htm#edicion%23edicionhttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#edicion%23edicionhttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#busca%23buscahttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#busca%23buscahttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#revision%23revisionhttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#revision%23revisionhttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#otrasventanas%23otrasventanashttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#otrasventanas%23otrasventanashttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#otrasventanas%23otrasventanashttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#depuracion%23depuracionhttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#depuracion%23depuracionhttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#cortarpegar%23cortarpegarhttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#cortarpegar%23cortarpegarhttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#cortarpegar%23cortarpegarhttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#edicion%23edicionhttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#edicion%23edicionhttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#busca%23buscahttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#busca%23buscahttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#revision%23revisionhttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#revision%23revisionhttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#otrasventanas%23otrasventanashttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#otrasventanas%23otrasventanashttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#otrasventanas%23otrasventanashttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#depuracion%23depuracionhttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#depuracion%23depuracionhttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#cortarpegar%23cortarpegarhttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#cortarpegar%23cortarpegarhttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#cortarpegar%23cortarpegar
  • 8/10/2019 Visual LISP Para AutoCAD 2000

    31/158

    !a "arra de erramientas de Edicin inc+u5euna erramienta para comp+etar nombres deS3mbo+os Este Icono rea+i8a una b;s:uedainte+i/ente de nombres de s3mbo+os de-inidos en

    e+ sistema A+ tec+ear a+/unas +etras de+ nombre,e+ pu+sar este icono inicia +a b;s:ueda Se/;n +acantidad de s3mbo+os :ue pudierancorresponder a +os caracteres tec+eados, puedeabrir un men; conte6tua+ en +a posicin de+cursor, abrir +a .entana de resu+tados deApropos o abrir +a .entana de inicio deb;s:ueda de Apropos si -uera demasiadoe6tensas +as opciones posib+es ord b5 Apropos 5tambin con +a combinacin de tec+as rpidasCTR!U H SI$TU H "ARRAES(ACIADORAU+erra,ientas )e (*sue)a )e Te-to

    (*sue)a )e te-to en ,*ltiples 9icKeros!a b;s:ueda de una e6presin puede rea+i8arse tanto en e+ -icero:ue se edita como en +os -iceros de+ pro5ecto u otros /rupos de-iceros se+eccionados Desde e+ %en; se accede medianteSearcU$ind o mediante +as tec+as rpidas CTR!U H $U

    !a caracter3stica msinteresante de +aerramienta deb;s:ueda de+ Editor*!IS( es su capacidadde buscar en un /rupo

    de -icerosse+eccionados 5 mejora;n, en +os -iceros :uecon-i/uran un pro5ectoE+ resu+tado de +ab;s:ueda se muestraen una .entana desa+ida, ++amada $indOutputU, dondeaparecen comp+etas +as

    e6presiones donde seemp+ea e+ trminobuscado Se puedecon-i/urar +aerramienta deb;s:ueda para :ueinserte marcadores

    http://personales.unican.es/Togoresr/lisp/IDE-7.htm#buscamultiple%23buscamultiplehttp://personales.unican.es/Togoresr/lisp/IDE-7.htm#buscamultiple%23buscamultiple
  • 8/10/2019 Visual LISP Para AutoCAD 2000

    32/158

    (uscar ' ee,pla:ar(ermite buscar 5 reemp+a8ar te6to en +a .entana acti.a de+ Editor Seaccede a esta opcin desde e+ men; SearcURep+ace

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    33/158

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    34/158

    E-presinEntre +as opciones de -ormateo de+ te6to, adems de +a identacin seinc+u5e +a posibi+idad de inc+uir comentarios a+ cierre de +os parntesis:ue indican a :ue -uncin corresponden cuando dica -uncin abarca

    .arias +3neasCo,enta)o ' Desco,enta)o auto,.tico )e las lneas selecciona)as

    !os comentarios se destacan mediante e+ es:uema de co+ores e+e/idocon -ondo /ris, pero adems de e++o, +a inc+usin de +os caracteres XXXUa+ inicio de +a +3nea se rea+i8a mediante una opcin de+ men; EditUE6traCommandsUComment "+ocP 5 se :uitan mediante EditUE6traCommandsU)ncomment "+ocPSi se estu.ieran editando arci.os DC!, +os caracteres introducidos como

    se2a+ de comentario sern dos barras inc+inadas JJUA'u)a

    Esta barra de erramientas inc+u5e tambin e+ Icono para e+ Acceso a +aA5uda enM+3nea

    Acceso a Otras Ventanas )e la Aplicacin

    Estas erramientas permiten Acceder a +as .entanas de'

    Autocad Otras *entanasde *isua+ !IS(, inc+u5endo +as de otros -iceros abiertos

    para su edicin !a Conso+a *isua+ !IS( !a .entana de Inspeccin de objetos !IS( 5 AutoCAD E+ Trace StacP, :ue /uarda +a memoria de pi+a de errores E+ S5mbo+ Ser.ice para +a /estin de S3mbo+os !a )ti+idad de Apropos !a )ti+idad de >atc

    "tili)a)es )e Depuracin

    S+o tres de +as erramientas se encuentran disponib+es cuando est acti.a +a.entana de+ Editor'

    Insertar (unto de Ruptura A2adir e+ s3mbo+o se+eccionado a +a .entana de >atc

    Resa+tar en e+ editor e+ cdi/o :ue pro.oc +a ;+tima interrupcin en +aejecucin de+ pro/rama

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    35/158

    G Es posib+e rea+i8ar operaciones de cortar, copiar 5 pe/arentre e+ Editor *!IS( 5 +a .entana de te6to de AutoCAD

    !en* Conte-tual )el E)itor

    E+ pu+sar e+ botn dereco de+ ratn sobre cua+:uier+u/ar de +a .entana de+ Editor abre un men;conte6tua+ donde, se/;n est o no se+eccionadoa+/;n te6to, se abi+itarn a+/unas de +as si/uientesopciones'Cut

    "orra e+ te6to se+eccionado de +a Conso+a 5 +otrans-iere a+ (ortapape+es de >indos

    Cop'Copia e+ te6to se+eccionado a+ (ortapape+es de>indos

    Paste(e/a e+ contenido de+ (ortapape+es de

    >indos en +a posicin indicada por e+cursor

    %in)"usca e+ te6to especi-icado en una o ms.entanas de+ Editor

    Go to Last E)ite)Desp+a8a e+ cursor acia +a ;+tima posicineditada

    To88le (reaJpointCo+oca un punto de ruptura en +a posicin de+cursor, o +o e+imina en caso de :ue 5a e6istierauno en dica posicin

    InspectAbre e+ di+o/o de +a uti+idad Inspect

    A)) HatcKAbre +a .entana de +a uti+idad Hatc0

    AproposAbre +a .entana de+!propos

    http://personales.unican.es/Togoresr/lisp/IDE-8.htm#cortarpegar%23cortarpegarhttp://personales.unican.es/Togoresr/lisp/IDE-8.htm#cortarpegar%23cortarpegarhttp://personales.unican.es/Togoresr/lisp/IDE-8.htm#cortarpegar%23cortarpegarhttp://personales.unican.es/Togoresr/lisp/IDE-8.htm#cortarpegar%23cortarpegarhttp://personales.unican.es/Togoresr/lisp/IDE-8.htm#cortarpegar%23cortarpegarhttp://personales.unican.es/Togoresr/lisp/IDE-8.htm#cortarpegar%23cortarpegar
  • 8/10/2019 Visual LISP Para AutoCAD 2000

    36/158

    S',bol SericeAbre e+ di+o/o de +a uti+idad )&mbol )ervice"

    "n)oDesace +a ;+tima operacin

    e)oAnu+a e+ e-ecto de+ ;+timo Desacer 5Undo8

    Teclas .pi)as

    !as si/uientes combinaciones de tec+as rpidas soncaracter3sticas espec3-icas de este editor'

    Co,an)os )e AC+IVO$

    QCTLR QSR4uarda e+ contenido de +a .entana acti.a de+ Editor

    QCTLR QALTR QSR4uarda e+ contenido de +a .entana acti.a de+ Editor conotro nombre de arci.o

    QCTLR QS+I%TR QSR4uarda e+ contenido de todas +as .entanas de Editor

    abiertasQCTLR Q%R

    Cierra +a .entana de Editor acti.aQCTLR QPR

    Imprime e+ contenido de +a .entana de Editor acti.a

    Co,an)os )e E)icin$

    QCTLR Q?R

    Desacer +a ;+tima operacin en e+ Editor Soporta i+imitadas

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    37/158

    operaciones de Desacer, asta +a ;+tima ocasin en :ue se/uard e+ contenido de+ Editor a disco )na .e8 /uardado esimposib+e desacer En ese caso, si -uera necesario, abr3a :uerecuperar +a copia de se/uridad mediante +a opcin

    $i+esURe.ertQCTLR QVR

    (e/ar e+ contenido de+ (ortapape+es en e+ +u/ar se2a+ado por e+cursor

    QS"PR"orrar e+ Te6to se2a+ado o e+ carcter a +a dereca de+ cursor

    QCTLR QARSe+eccionar todo e+ contenido de +a .entana de+ Editor

    QCTLR Q!RAbre un men; desp+e/ab+e con +as opciones de b;s:ueda de+cierre de parntesisQCTLR Q3RDesp+a8a e+ cursor asta e+ parntesis de cierre correspondienteQCTLR Q1RDesp+a8a e+ cursor asta e+ parntesis de aperturacorrespondiente

    QCTLR QS+I%TR Q3RSe+ecciona +a e6presin asta e+ parntesis de cierrecorresondiente, resa+tndo+a en .3deo in.ersoQCTLR QS+I%TR Q1RSe+ecciona +a e6presin asta e+ parntesis de aperturacorresondiente, resa+tndo+a en .3deo in.erso

    QCTLR QERAbre un men; desp+e/ab+e con una serie de comandosadiciona+es'

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    38/158

    Identar"+o:ue deTe6to

    Suprimir +aIdentacinde unb+o:ue deTe6to

    Identarasta e+ni.e+actua+

    A2adir unpre-ijo acada +3nea

    de te6tose+eccionada

    A2adirte6to a+-ina+ decada +3nease+eccionada

    %arcar e+b+o:uese+eccionado comocomentario

    Desmarcarcomocomentario e+ b+o:ue

    se+eccionado 4uardar

    b+o:ue dete6tose+eccionado a unarci.o

    Con.ertir

    e+ te6tose+ecciona

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    39/158

    do ama5;scu+as

    Con.ertire+ te6tose+eccionado amin;scu+as

    Cambiar ama5;scu+as +aprimera+etra decada

    pa+abra

    Insertar$eca

    Insertarora

    De-inir e+-ormato de-eca 5ora

    Ordenara+-abticamente +as+3neasse+eccionadas

    Insertar e+contenido

    de unarci.o dete6to en e++u/arindicadopor e+cursor

    "orrardesde +a

    posicinde+ cursor

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    40/158

    asta e+-ina+ de +a+3nea

    "orrar

    espaciosen torno a+a posicinactua+ de+cursor

    Co,an)os )e (*sue)a$

    QCTLR Q%R"uscar te6to

    QCTLR Q+R"uscar 5 sustituir te6to

    QCTLR Q(AA ESPACIADOARComp+etar una pa+abra por simi+itud a otras e6istentesen +a .entana actua+ de+ Editor Cuando 5a se atec+eado un nombre anteriormente, E+ editor *!IS(-aci+ita e+ incorporar+o de nue.o a+ documento con s+otec+ear +os caracteres inicia+es Si en e+ ejemp+o de arriba

    :uisiramos tec+ear de nue.o e+ nombre de +a -uncin(os*ert bastar3a tec+ear (o 5 despus pu+sar CTR!U H"ARRA ES(ACIADORAU Si en +u/ar de encontrar(os*ert encontrara e+ nombre de .ariab+e pos, bastar3acon .o+.er a pu+sar CTR!U H "ARRA ES(ACIADORAUcuantas .eces -uera necesaro para ++e/ar a+ te6todeseado

    QCTLR QS+I%TR Q(AA ESPACIADOAR

    Comp+etar una pa+abra mediante A(RO(OS

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    41/158

    QCTLR QS+I%TR QMRSe+eccionar asta e+ marcador anterior

    Co,an)os )e Vistas$

    QCTLR QS+I%TR QIRAbre una .entana de Inspeccin para introducir unae6presin

    QCTLR QS+I%TR QTRAbre +a .entana de Inspeccin de Trace

    QCTLR QS+I%TR QRAbre +a .entana de Inspeccin para +a ;+tima pi+a deerror

    QCTLR QS+I%TR QSRAbre una .entana de Inspeccin para un s3mbo+o

    QCTLR QS+I%TR QHRAbre +a .entana de *i/i+ancia ATC=

    QCTLR QS+I%TR QARAbre +a .entana A(RO(OS para a5uda con e6presiones!IS(

    QCTLR QS+I%TR Q(R

    %uestra +os puntos de interrupcin actua+es

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    42/158

    QCTLR Q%R"usca 5 resa+ta e+ cdi/o :ue dio ori/en a +a ;+timainterrupcin

    +erra,ientas )e Desarrollo$

    QCTLR QS+I%TR QERCar/a 5 e.a+;a e+ cdi/o se+eccionado

    QCTLR QALTR QERCar/a 5 e.a+;a e+ cdi/o contenido en +a .entana acti.ade+ Editor

    QCTLR QS+I%TR QCRComprueba +a sinta6is de +as e6presiones se+eccionadas

    QCTLR QALTR QCRComprueba +a sinta6is de+ cdi/o contenido en +a.entana acti.a de+ Editor

    QCTLR QS+I%TR Q%R$ormatea +as e6presiones se+eccionadas

    QCTLR QALTR Q%R$ormatea e+ cdi/o contenido en +a .entana acti.a de+Editor

    Controles )e Ventanas$

    QALTR Q%RAjusta +a .entana acti.a a+ espacio disponib+e enpanta++a

    Co,probacin )el cierre )e parUntesis!as combinaciones de tec+as CTR!U H

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    43/158

    despus pu+sar CTR!U H "ARRA ES(ACIADORAU Sien +u/ar de encontrar (os*ert encontrara e+ nombre de.ariab+e pos, bastar3a con .o+.er a pu+sar CTR!U H"ARRA ES(ACIADORAU cuantas .eces -uera necesaro

    para ++e/ar a+ te6to deseado

    TIPOS DE DATOS

    Antes de iniciarnos en +a pro/ramacin !IS(, e6aminaremos

    +os datos con :ue este +en/uaje opera !as posibi+idades de un+en/uaje de pro/ramacin estn directamente re+acionadascon +a o-erta de procedimientos 5 -unciones 5 en sobre :utipos de datos pueden e++os operar

    !os tipos de datos ori/ina+es son +os TO!OS5 +as LISTAS!os YTO%OS 5 +as !ISTAS son mutuamente e6c+u5entes' unobjeto !IS( es +o uno o +o otro Con una e6cepcin' +a +ista.ac3a o NI!, :ue estudiaremos ms ade+ante !as +istas se

    constru5en recursi.amente a partir de tomos 5Jo +istas

    Ejemp+os'

    YTO%OS !ISTASa (juan (juan21 (a juan 21 1mn

    1mn ((juan 21 a

    ((1mnAuto!IS( 5 *isua+ !IS( uti+i8an adems otros tipos )e )atos:ue estudiaremos ms ade+ante 5 :ue resu+tan necesariospara +a /estin de +os dibujos en e+ entorno AutoCAD

    Tanto +os tomos como +as +istas son e6presiones .+idas !IS(:ue e+ intrprete +ee 5 e.a+;a !as re/+as para +a e.a+uacinde ambos tipos de objetos se describen a continuacin'

    TO!OS

    http://personales.unican.es/Togoresr/lisp/TIPOS%20DE%20DATOS.htm#atomos%23atomoshttp://personales.unican.es/Togoresr/lisp/TIPOS%20DE%20DATOS.htm#listas%23listashttp://personales.unican.es/Togoresr/lisp/TIPOS%20DE%20DATOS.htm#autocad%23autocadhttp://personales.unican.es/Togoresr/lisp/TIPOS%20DE%20DATOS.htm#atomos%23atomoshttp://personales.unican.es/Togoresr/lisp/TIPOS%20DE%20DATOS.htm#listas%23listashttp://personales.unican.es/Togoresr/lisp/TIPOS%20DE%20DATOS.htm#autocad%23autocad
  • 8/10/2019 Visual LISP Para AutoCAD 2000

    44/158

    !os .to,osson +as e6presiones !IS( ms e+ementa+esSiempre tienen un nombre constituido por una secuenciade caracteres 5 por e++o se asemejan a +as pa+abras deun +en/uaje !os nombres de tomos se separan de

    otras e6presiones mediante espacios en b+anco,parntesis o cambios de +3nea )n tomo no es di.isib+eComo norma /enera+, todos +os e+ementos :ue no seanuna +ista se consideran tomos A+ recibir un tomo, e+e.a+uador +isp intenta determinar su .a+or Este .a+orpuede estar representado por e+ nombre mismo de+tomo, :ue entonces consideraremos como unaLconstanteL o puede ser un objeto !IS( distinto, en

    cu5o caso estaremos ante un tomo Lsi,blicoL !ostomos simb+icos se uti+i8an dentro de +os pro/ramaspara a+macenar .a+ores, siendo conocidos entoncescomo LariablesL

    LISTAS$E+ nombre !IS( .iene de !ISt (rocessin/

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    45/158

    Listas )e un niel Listas ani)a)as La lista aca

    TI(OS DE DATOS ES(ECZ$ICOS DE A)TOCAD$ CON>"NTOS DE SELECCI#N

    !os conjuntos de se+eccin son /rupos compuestos poruno o .arios objetos

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    46/158

    YTO%OS SI%"&!ICOS

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    47/158

    Es decir, :ue toma e+ nombre de s3mbo+o sin e.a+uar, 5 +easi/na e+ .a+or deseado En este sentido se dice :ueSET es una L$orma Especia+L )na .ariab+e creada conSET es una .ariab+e /+oba+ Esto :uiere decir :ue

    retiene su .a+or -uera de+ pro/rama :ue +a uti+i8a )na.ariab+e de este tipo a-ectar3a a cua+:uier otro pro/rama:ue uti+i8ara e+ mismo s3mbo+o!as .ariab+eslocalesson a:ue++as :ue retienen su .a+ors+o mientras +a -uncin :ue +as de-ine est acti.a !as.ariab+es +oca+es se e+iminan tan pronto termina +aoperacin de +a -uncin donde se de-inieron, sedesecan automticamente 5 e+ sistema recupera e+espacio de memoria :ue +as .ariab+es ocupaban Esto se

    conoce como Lreco+eccin de desecosL

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    48/158

    etre#omillada" !a contrabarra es un carcter decontro+ :ue permite inc+uir cambios de +3nea,tabu+adores, 5 otros caracteres especia+es en unacadena (ara inc+uir una contrabarra como parte de +a

    cadena deben escribirse dos contrabarras, +a primeracomo carcter de contro+ 5 +a se/unda para /ra-icar +acontrabarra' "$adea i#luyedo !!" !as cadenasindi.idua+es tienen una +imitacin de 1F caracteres En.ersiones anteriores de AutoCAD, +os nombres de tab+asde s3mbo+os se con.ert3an automticamente ama5;scu+as En AutoCAD F se conser.a e+ tipo decarcter uti+i8ado, sean ma5;scu+as o min;scu+as A+acer comprobaciones de i/ua+dad de cadenas puede ser

    necesario por e++o rea+i8ar con.ersiones a un mismo tipode +etra uti+i8ando +a -uncin STRCASE

    N4!EOS ENTEOS 6 EALES

    ENTEROS

    Son n;meros sin coma decima+ !os enteros de Auto!IS( sonn;meros de F bits con si/no cu5os .a+ores estncomprendidos entre ;0+/25+283+4285 !0+/25+283+425Aun:ue Auto!IS( uti+i8a internamente .a+ores de F bits, +os:ue se transmiten de Auto!IS( a AutoCAD 5 .ice.ersa estn+imitados a 1^ bits (or tanto, no pueden transmitirse aAutoCAD .a+ores superiores a ;30545ni in-eriores a !30548

    Sin embar/o, *!IS( acepta .a+ores -i6num entre +os .a+ores+3mite de'

    %AMSORTINT _ F7^7 %OSTM(OSITI*EM$IN)% _ F1K7K^K7 %OSTMNE4ATI*EM$IN)% _ MF1K7K^K7

    )n n;mero ma5or o menor se con.ierte automticamente enrea+

    REA!ES

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    49/158

    Contienen coma decima+ !os comprendidos entre !/5/deben empe8ar por cero !os n;meros rea+es se a+macenanen -ormato de coma -+otante de dob+e precisin, +o cua+proporciona una precisin m3nima de /2d3/itos si/ni-icati.os,

    aun:ue e+ rea de comandos de AutoCAD muestra s+o ^

    !os .a+ores +3mites son'%OSTM(OSITI*EMDO)"!EM$!OAT _1797^91K^F1BeH%OSTMNE4ATI*EMDO)"!EM$!OAT_M1797^91K^F1BeH)n n;mero ma5or, de.ue+.e in-inito'

    1797^91K^F1^eH1`IN$

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    50/158

    CONSIDEACIONES SO(E LA CONVESI#N ENTE N4!EOS EALES 6ENTEOS

    !a -uncin fixen rea+idad +o :ue ejecuta es un truncamientode+ n;mero rea+ acia cero Es decir, de.ue+.e e+ n;mero

    entero ms pr6imo a cero As3 (fix 2+5de.o+.er 2, esdecir, e+ n;mero entero menorms cercano a+ suministradocomo ar/umento (ero (fix !2+5de.o+.er !2, :ue es e+entero ma&orms cercano En +as de-iniciones de Common!IS(, fixe:ui.a+dr3a a +a -uncintruncate

    Stee+e menciona en C!T!F otras posibi+idades de con.ersinentre rea+es 5 enteros'

    floorcon.ierte su ar/umento mediante un truncamiento aciain-inito ne/ati.oX es decir, :ue e+ resu+tado es e+ enteroma5or :ue no es ma5or :ue e+ ar/umento

    ceilingcon.ierte su ar/umento mediante un truncamiento aciain-inito positi.oX es decir, :ue e+ resu+tado es e+ enteromenor :ue no es menor :ue e+ ar/umento

    truncatecon.ierte su ar/umento mediante un trucamiento aciaceroX es decir, :ue e+ resu+tado es e+ entero de+ mismosi/no :ue e+ ar/umento 5 :ue posee +a ma5or ma/nitudentera :ue no es ma5or :ue e+ ar/umento

    roundcon.ierte su ar/umento mediante e+ redondeo a+ enteroms cercanoX si e+ n;mero se encuentra e6actamente a

    mitad de camino entre dos enteros

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    51/158

    LISTAS 6 CONSES

    (or +a importancia dentro de !IS( de+ tipo de datos !ISTA,citamos in extensoe+ apartado FK de C!T!F,

    )n CONS es una estructura de in-ormacin :ue contiene doscomponentes ++amados e+ CAR 5 e+ CDR !a uti+i8acin-undamenta+ de +os CONSES es como representacin de!ISTAS

    Una =I)'!se de-ine recursi.amente 5a sea como +a +ista .ac3ao como un CONS cu5o componente CDR es una +ista )na +ista

    es, por consi/uiente, una cadena de CONSES en+a8ados porsus componentes CDR 5 terminada por un NI!, +a +ista .ac3a!os componentes CAR de +os conses son conocidos como +ose+ementos de +a +ista (ara cada e+emento de +a +ista a5 unCONS !a +ista .ac3a no tiene nin/;n e+emento

    (ara comprender mejor +o anterior, ade+antaremos +a mencinde +a -uncin bsica de construccin de +istas, :ue es +a-uncin CONS na lista de tres smbolos(0+7 (a / "?" =>na lista de tres cosasdiferentes: un n

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    52/158

    otaG El cdigo del e1emplo anterior 0a sidomodificado para adaptarlo a las convenciones de

    !uto=I)#3@isual =I)#

    !a +ista .ac3a puede por +o tanto ser e6presada como

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    53/158

    como argumento a una funcin de tratamiento de listas 0ubieraproducido en determinados casos un errorG

    A .eces se uti+i8a e+ trmino rbo+ para re-erirse a a+/unosCONS 5 todos +os dems CONSES accesib+es a + de maneratransiti.a a tra.s de en+aces de CAR 5 CDR asta a+can8ar

    objetos NOMCONSX stos NOMCONSES son conocidos como +asojas de+ rbo+

    /epresentacin de =I)'!) como rboles"'omado deG Cort(s & )ierra, =I)#" Editorial Marcombo,

    Aarcelona" -.D"

    !as +istas, +as +istas punteadas 5 +os rbo+es no son tipos dedatos mutuamente e6c+u5entesX no son ms :ue puntos de.ista ;ti+es en torno a +as estructuras de CONSES a5 a;notros trminos ta+es como !ISTA DE ASOCIACI&N Nin/unode stos son .erdaderos tipos de datos !IS(

    !os CONSES constitu5en un tipo de dato, 5 NI! es e+ ;nicoobjeto de tipo N)!! E+ tipo de dato !ISTA si/ni-ica en !IS( +aunin de +os tipos de datos CONS 5 N)!!, 5 por e++o en/+obatanto +as +istas .erdaderas como +as +istas punteadas

    %O!ATOS DE LISTAS$

    Adems de +o apuntado ms arriba, es con.eniente distin/uirentre +os si/uientes tres -ormatos de +istas'

    !ISTAS DE )N NI*E!Contienen s+o tomos

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    54/158

    !ISTAS ANIDADASContienen a su .e8 otras +istas :ue se dicen [anidadas\Estas +istas anidadas sue+en ser conocidas como subM+istas E+ n;mero de ni.e+es de anidacin no est

    restrin/ido ni en su pro-undidad ni en su comp+ejidad E+ni.e+ ms e6terno +o ++amamos ni.e+ superior o primerni.e+ A +os e+ementos :ue con-orman este ni.e+ +os++amamos e+ementos de primer ni.e+

    !ISTAS DE ASOCIACI&N

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    55/158

    .a+or producir un mensaje de ad.ertencia'

    Este mensaje aparece como +a opcin por de-ecto 5 pidesi se desea entrar en un buc+e de interrupcin

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    56/158

    E+ .a+or de.ue+to para cada tipo de dato ser a+/uno de +ostomos :ue se describen a continuacin'

    Tipos LISP$

    INTN;meros Enteros

    EAL

    N;meros de Coma Decima+ $+otanteLIST

    !istasST

    CadenasS6!

    S3mbo+os

    Tipos AutoCAD$

    ENA!ENombres de entidades

    %ILEDescriptores de arci.o

    PAGET(Tab+as de (a/inacin de $unciones

    PIC@SETConjuntos de se+eccin

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    57/158

    S"($unciones Auto!IS( internas o -unciones car/adas desdearci.os

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    58/158

    !os pro/ramas !IS( se estructuran como formas5 funcionesSe/;n Corts 5 Sierra,

    una $OR%A es Luna e6presin simb+ica en posicin de ser

    e.a+uada E+ cmputo de .a+ores, en !IS(, se rea+i8asimp+emente mediante +a e.a+uacin de una $OR%A Todas +as$OR%AS tienen .a+or, sean estas constantes numricas,tomos +itera+es o e6presiones simb+icas )no de +os erroresms t3picos a+ pro/ramar en !IS( es e+ de tratar de e.a+uaruna $OR%A :ue no tiene .a+or E+ .a+or de una $OR%A es e+resu+tado de e.a+uar+aa5 :ue remarcar :ue +os trminos e6presin simb+ica 5$OR%A pueden ap+icarse a +a misma entidadX su ap+icacin

    depender de+ conte6to )na !ISTA puede considerarse comoun dato, como una e6presin simb+ica o considerarse comoparte de un procedimientoX +a misma !ISTA puede serconsiderada como una $OR%AL

    !as -ormas se evalJan

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    59/158

    En !IS(, +os pro/ramas se constru5en a partir de +acomposicin de -unciones Esto permite :ue ta+es pro/ramase6presen sus propsitos ms c+aramente :ue +os pro/ramascon.encione+es, 5 :ue resu+ten ms -ci+es de entender 5 de

    mantener, adems de ser ms -ci+es de construirAutoCAD identi-ica sus -unciones !IS( primiti.as como e+ tipode dato S)"R, mientras :ue +as formasde-inidas a partir dee++as pertenecen a+ tipo de dato )S)"R o LsubMrutina deusuarioL !a -uncin typede.ue+.e +os tipos correspondientes!a ++amada a una -uncin toma +a -orma de una +ista cu5oprimer e+emento es un tomo simb+ico :ue representa a +a-uncin ++amada E+ resto de +os e+ementos de esa +ista pueden

    ser tomos 5 otras +istas Estas sub+istas se considerantambin ++amadas a -unciones 5 se e.a+;an para :ue su .a+orresu+tante pueda ser pasado como ar/umento a +a -uncin:ue +as contiene

    %"NCIONES PI!ITIVAS

    Describimos una serie de -unciones como [primiti.as\ en e+sentido de :ue estn de-inidas en +a norma de+ +en/uaje, paradistin/uir+as de +as -unciones creadas por e+ usuario a partir

    de a:u++as En !IS( se ++ama a una -uncin mediante +asi/uiente sinta6is'(,O./EU,$1O, 555 )

    !a suma de dos n;meros ser3a (; 1 /(ara e.a+uar+a !IS( procede de +a si/uiente manera'a !ee +a e6presin comp+eta (; 1 /b !a interpreta como una ++amada a una -uncin 5 +aidenti-ica como S)%AR ;Uc Interpreta 1como primer ar/umento 5 /como se/undo E+parntesis de cierre +e indica :ue no a5 ms ar/umentosd !a -uncin ;U se e.a+;a para 15 /, de.o+.iendo 4comoresu+tado, :ue a -a+ta de otro destino es impreso en panta++a(ro/ramar !IS( si/ni-ica ++amar a -unciones "sicamente estose ace usando e+ tipo de dato !ISTA Cua+:uier +ista :ue noten/a otra interpretacin como9or,a especialseconsiderar una ++amada a una -uncin, donde e+ primertrmino se tomar como e+ nombre de +a -uncin 5 e+ restocomo sus ar/umentos !as +istas de ++amadas a -uncinpueden estar anidadas, es decir, :ue una ++amada a -uncin se

    http://personales.unican.es/Togoresr/lisp/TYPE.htm#subrshttp://personales.unican.es/Togoresr/lisp/FORMAS%20ESPECIALES.htmhttp://personales.unican.es/Togoresr/lisp/TYPE.htm#subrshttp://personales.unican.es/Togoresr/lisp/FORMAS%20ESPECIALES.htm
  • 8/10/2019 Visual LISP Para AutoCAD 2000

    60/158

    puede estar uti+i8ando como ar/umento en otra +ista :uecorresponda a una ++amada a otra -uncin E+ resu+tado de +ae.a+uacin de cada ni.e+ de anidacin es de.ue+to a+ ni.e+ desuperior, asta ++e/ar a+ ni.e+ ms a+to, cu5o .a+or de.ue+to se

    imprimir3a en +a panta++a de te6to o +a +3nea de comandosAG"!ENTOS %"NCIONALES

    De +o e6puesto ms arriba se conc+u5e :ue en !IS( una-uncin es adems un objeto de datos :ue puede sersuministrado a otra -uncin como ar/umento Esta posibi+idadcontribu5e a +a -aci+idad con :ue !IS( se puede adaptar a +asnecesidades de cua+:uier pro/rama mediante +a incorporacinde nue.as -unciones :ue en su comportamiento resu+tan

    idnticas a +as primiti.as

    )n pro/rama :ue admite -unciones como datos debe tambinsuministrar a+/una manera de in.ocar+as Esto se +o/ra en*isua+ !IS( mediante +a -uncin#--A

    APPL6

    (apply funcin lista!args

    #--A, como su nombre en in/+s indica, ap+ica una -uncinB) syntax: ((*>B) 0 (*>B) 2(*>B) 49/@= reset after error

    Obsr.ese e+ error pro.ocado por uti+i8ar +a -orma especia+)OTE

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    61/158

    Otras mucas -unciones !IS( re:uieren ar/umentos-unciona+es Entre +as de uso ms -recuente estn +as-unciones de mapeado %A(CAR, por ejemp+o toma dos o msar/umentos' una -uncin 5 una o ms +istas

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    62/158

    ar/umento de una -uncin aritmtica Ejemp+o(? (; / 1(!07 /7

    %"NCIONES (SICAS DE TATA!IENTO DE CADENAS

    (ara e+ trata,iento )e ca)enastenemos -unciones :uepermiten uni-icar cadenas di-erentes, e6traer subcadenas deuna cadena ma5or, determinar cuntos caracteres a5 en unacadena 5 trans-ormar +os caracteres a ma5;scu+as omin;scu+as E+ predicadoEF$#)FHpermite determinar +asemejan8a de cadenas uti+iando comodines

    %"NCIONES (SICAS DE ACCESO A LISTAS

    )na +ista es una manera de representar un conjunto detomos 5 de otras +istas )na +ista tiene +a -orma de unparntesis de apertura L(L se/uido de una serie de tomos o+istas, se/uido por otro parntesis de cierre LL De manera:ue cua+:uier cosa encerrada entre parntesis serconsiderada una +ista )na +ista pasada a+ e.a+uador !IS( sertratada como una e6presin simb+ica B) !as 9uncionesb.sicascu5a comprensin es imprescindib+e para e+ acceso a+a in-ormacin contenida en +istas se pueden reducir a cuatro'*>B), F#G, F&G, 5)H

    %"NCIONES DE CONST"CCI#N DE LISTAS

    Con +as -unciones de+ ep3/ra-e anterior podemos descomponer+istas, accediendo a suscomponentes a distintos ni.e+es deanidacin E6isten otras 9unciones:ue podemos uti+i8arpara componer nue.as +istas a base de e+ementosindi.idua+es, 5a sean tomos u otras +istas FB', I') 5#--&son -unciones :ue constru5en +istas por distintosprocedimientos 5 con resu+tados di.ersos, por +o :ue esnecesario distin/uir+as bien

    %"NCIONES AIT!/TICAS (SICAS

    http://personales.unican.es/Togoresr/lisp/TRATAMIENTO%20DE%20CADENAS.htmhttp://personales.unican.es/Togoresr/lisp/FORMAS%20ESPECIALES.htmhttp://personales.unican.es/Togoresr/lisp/CAR%20y%20QUOTE.htmhttp://personales.unican.es/Togoresr/lisp/CAR%20y%20QUOTE.htmhttp://personales.unican.es/Togoresr/lisp/CAR%20y%20QUOTE.htm#quotehttp://personales.unican.es/Togoresr/lisp/CAR%20y%20QUOTE.htm#carhttp://personales.unican.es/Togoresr/lisp/CAR%20y%20QUOTE.htm#cdrhttp://personales.unican.es/Togoresr/lisp/CAR%20y%20QUOTE.htm#nthhttp://personales.unican.es/Togoresr/lisp/CONSTRUCCION%20DE%20LISTAS.htmhttp://personales.unican.es/Togoresr/lisp/CONSTRUCCION%20DE%20LISTAS.htm#conshttp://personales.unican.es/Togoresr/lisp/CONSTRUCCION%20DE%20LISTAS.htm#listhttp://personales.unican.es/Togoresr/lisp/CONSTRUCCION%20DE%20LISTAS.htm#appendhttp://personales.unican.es/Togoresr/lisp/TRATAMIENTO%20DE%20CADENAS.htmhttp://personales.unican.es/Togoresr/lisp/FORMAS%20ESPECIALES.htmhttp://personales.unican.es/Togoresr/lisp/CAR%20y%20QUOTE.htmhttp://personales.unican.es/Togoresr/lisp/CAR%20y%20QUOTE.htmhttp://personales.unican.es/Togoresr/lisp/CAR%20y%20QUOTE.htm#quotehttp://personales.unican.es/Togoresr/lisp/CAR%20y%20QUOTE.htm#carhttp://personales.unican.es/Togoresr/lisp/CAR%20y%20QUOTE.htm#cdrhttp://personales.unican.es/Togoresr/lisp/CAR%20y%20QUOTE.htm#nthhttp://personales.unican.es/Togoresr/lisp/CONSTRUCCION%20DE%20LISTAS.htmhttp://personales.unican.es/Togoresr/lisp/CONSTRUCCION%20DE%20LISTAS.htm#conshttp://personales.unican.es/Togoresr/lisp/CONSTRUCCION%20DE%20LISTAS.htm#listhttp://personales.unican.es/Togoresr/lisp/CONSTRUCCION%20DE%20LISTAS.htm#append
  • 8/10/2019 Visual LISP Para AutoCAD 2000

    63/158

    Cada una de +as -unciones inc+uidas en este apartado re:uiere:ue sus ar/umentos sean todos n;meros E+ pasar+e unar/umnto no numrico pro.ocar un error Operan tantosobre n;meros enteros como sobre n;meros rea+es,

    rea+i8ando +os ajustes pertinentes cuando dicos ar/umentos-ueran de di-erente tipo

    ;1su,a3(; Jn

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    64/158

    n;meros de+ se/undo a+ ;+timo 5 de.ue+.e e+ cociente-ina+ Si proporciona s+o un ar/umento n;mero, esta-uncin de.ue+.e e+ resu+tado de di.idir+o por unoNin/;n ar/umento, de.ue+.e7

    9@ (D 37 0 239@ (D 37 0+7 23+51/;1incre,ento3

    (/; nB)Con este objeti.o se suministra +a -uncin *>B) )na+ista dentro de una -uncin *>B)no se tratar dee.a+uar como ++amada a una -uncin !a ++amada a +a

    -uncin *>B)se puede abre.iar uti+i8ando e+ si/noapstro-e L U

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    65/158

    %unciones CD ' NT+$

    F&GF&Grecibe tambin una +ista 5 de.ue+.e e+ resto de +a

    +ista despus de e+iminar e+ primer e+emento(F#Glista (or +o tanto puede contemp+arse como +a-uncin comp+ementaria de F#G )na manera deinterpretar una +ista en !IS( es como +a conjuncin deun F#G5 un F&G Se podr acceder a cua+:uier trminode una +ista mediante +os anidamientos apropiados deF#G5 F&G

    (F#G lista =primer trmino (F#G (F&G lista =segundo trmino (F#G (F&G (F&G lista =tercer trmino

    5 as3 sucesi.amente (ara simp+i-icar +as e6presiones sepermite crear nombres compuestos para anidamientosde F#G5 F&Gde +a si/uiente manera'

    comen8ando por una primera +etra F una +etra# por cada F#Go una &por cada F&G terminando con una +etra G

    as3 (F#G (F&G (F&G listaser3a +o mismo :ue(F#&&G lista

    De esta manera podemos construir asta F -uncionesdistintas para acceso a +istas Se/;n #onsonestas Fconcatenaciones se pueden di.idir en cuatro /rupos,tomando como base +a pro-undidad a :ue puedenacceder en +istas anidadas en .arios ni.e+es

    %unciones )e acceso al niel superior$

    http://personales.unican.es/Togoresr/lisp/CAR%20QUOTE%20CDR.htm#johnson%23johnsonhttp://personales.unican.es/Togoresr/lisp/CAR%20QUOTE%20CDR.htm#johnson%23johnson
  • 8/10/2019 Visual LISP Para AutoCAD 2000

    66/158

    %unciones )e acceso al se8un)o niel )e ani)a,iento$

    %unciones )e acceso al tercer niel )e ani)a,iento$

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    67/158

    %unciones )e acceso al cuarto niel )e ani)a,iento$

    (or supuesto, :ue estas -unciones pueden a su .e8combinarse para acceder a ni.e+es a;n ms pro-undos

    de anidacin)H

    )Hpermite simp+i-icar estas e6presiones para +istasmu5 +ar/as'

    (ntM n lista

    Donde e+ ar/umentones e+ n;mero de+ e+emento :uedebe de.o+.erse E!PLOS$

    De +o antes e6puesto resu+tar3a'

    9@ (car .(a b c =Faso de unalista normal#

    9@ (cdr .(a b c(% F

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    68/158

    9@ (cddr .(a b c(&9@ (cdddr .(a b c =el

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    69/158

    a+tera +os ar/umentos :ue recibe As3 :ue para conser.ar +a+ista con e+ nue.o primer e+emento, ser necesario uti+i8ar')* !a -uncin ms /enera+ para incorporar nue.ose+ementos a una +ista ser3a entonces'

    (setq nombre9lista (cons nuevo9elementonombre9lista

    donde nombre9listaser3a e+ s3mbo+o asociado a+ objeto +ista+a -uncin opera aun:ue nombre9listano ubiera sidopre.iamente asociado a una +ista, pues no debemos o+.idar:ue un s3mbo+o no asociado se e.a+;a comoI, :ue es, a su.e8, e:ui.a+ente a una +ista .ac3a

    Ejemp+o'9@ (cons .a .b(# + %9@ (cons .a (cons .b (cons .c .((# % F9@ (cons .a .(b c d(# % F &

    %unciones )e e&e,plo usan)o CONSCACD

    La 9uncin LIST

    (list expr +++

    I') Recupera cua+:uier n;mero de e6presiones 5 +ascombina en una +ista Admite tanto tomos como +istas Siuno de +os a/umentos es una +ista .ac3aIaparecer comouno de +os trminos de +a +istaEjemp+o'

    9@ (list 3 2 .a (car .(b + c (; 4 !0(3 2 # % 29@ (list (list .a .b (list .c .d .e((# % (F &

    La 9uncin APPEND

    (append lista lista +++

    #--&Se uti+i8a para combinar +istas E+imina e+ primer ni.e+de anidacin de cada una de +as +istas :ue recibe para

    http://personales.unican.es/Togoresr/lisp/EJEMPLOS-1.htmhttp://personales.unican.es/Togoresr/lisp/EJEMPLOS-1.htm
  • 8/10/2019 Visual LISP Para AutoCAD 2000

    70/158

    combinar todas en una misma +ista Si una de +as +istas :uerecibe est .ac3a esta +ista no aparecer en +a +ista resu+tanteEjemp+o'

    9@ (append .(a b c .(d e f .( .(g(# % F & N O

    )na muestra de +a uti+i8acin de A((END para e+iminar +assub+istas .ac3as'

    9@ (apply .append .(("$" ("a" nil ("r" ("i"nil("$" "a" "r" "i"

    OTAS %"NCIONES PAA TATA!IENTO DE LISTAS

    GPG'de.ue+.e una +ista con sus e+ementos in.ertidos

    (reverse lista

    Opera ;nicamente sobre e+ primer ni.e+ de anidacin !as+istas anidadas a otros ni.e+es no son a-ectadas Sue+euti+i8arse para .o+.er a su orden ori/ina+ +os objetos en +istasconstruidas mediante FB'

    9@ (reverse .("$" "a" "d" "r" "i" "d"("d" "i" "r" "d" "a" "$"

    O)H de.ue+.e un n;mero entero :ue indica e+ n;mero de

    e+ementos de una +ista

    (lengtM lista

    S+o cuenta e+ementos en e+ primer ni.e+ de anidacin No seconsideran +os e+ementos inc+uidos en subM+istas

    9@ (lengtM .((7 + "FIGF"(8 + "7"(/7 020+204/15+484 7+7(27 + 05+51732

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    71/158

    #''BF

    (assoc elemento lista9asoc

    "usca una +ista de asociaciones de un e+emento 5 de.ue+.e +aentrada asociada de +a +ista

    9@ (assoc /7 .((7 + "FIGF"(8 + "7"(/7 020+204/15+484 7+7(27 + 05+5173(/7 020+204 /15+484 7+7

    '>%')

    (subst elemento9nuevo elemento9antiguo lista

    "usca un e+emento anti/uo en una +ista 5 de.ue+.e una copiade sta con un e+emento nue.o en +u/ar de cada aparicin de+e+emento anti/uo

    9@ (subst nil "d" .("$" "a" "d" "r" "i" "d"("$" "a" nil "r" "i" nil9@

    %"NCIONES (SICAS DE TATA!IENTO DE CADENAS

    !as -unciones bsicas de tratamiento de cadenas a:u3e6puestas son +as inc+uidas con Auto!IS( nati.o A e++as seunen una serie de -unciones adiciona+es suministradas con*isua+ !IS( 5 +os A(I espec3-icos de +as ap+icacionessoportadas sobre AutoCAD como AutoCAD %A(

    #'FIIDe.ue+.e e+ cdi/o ASCII

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    72/158

    ')GF#)(str#at #adea* 7#adea8 555)

    De.ue+.e una cadena :ue es +a concatenacin de .ariascadenas

    9@ (strcat (cMr 55 "adrid""$adrid"')G

    (strle 7#adea8 555)

    De.ue+.e un n;mero entero :ue indica +a cantidad decaracteres de una cadena

    9@ (strlen "$adrid"4'>%')G

    (substr #adea ii#io 7lo3itud8)

    De.ue+.e una subcadena de una cadena9@ (substr "$adrid" 3 0"dr"')GF#'

    (str#ase #adea 7#u9l8)

    De.ue+.e todos +os caracteres a+-abticos de una cadenaen ma5;scu+as o min;scu+as

    9@ (strcase "$adrid""$#&GI&"9@ (strcase "$adrid" )"madrid"EF$#)FH

    (:#mat#; #adea atr=)

    Rea+i8a b;s:uedas con patrones de comodines en unacadena

    9@ (QcmatcM "$adrid" "RaRr?"

    )9@ (QcmatcM "$adrid" "RdRr?"nilG#&

    (read 7#adea8)

    De.ue+.e e+ primer tomo o +a primera +ista contenida enuna cadena

    9@ (read "$adrid es una ciudad"$#&GI&

    9@ (read (strcat "(" "$adrid es una ciudad" ""($#&GI& ' ># FI>&

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    73/158

    %"NCIONES VIS"AL LISP DE TATA!IENTO DE CADENAS

    1lprintostrin8 ob&ect3De.ue+.e +a representacin como cadena de cua+:uierobjeto !IS( ta+ como si -uera +a sa+ida de +a -uncin(RIN1

    9@ (setq file9id (open "test+tmp" "Q"SCfile "test+tmp"T9@ (vl!prin/!to!string file9id"SCfile U"test+tmpU"T"

    1lprinctostrin8 ob&ect3De.ue+.e +a representacin como cadena de cua+:uierobjeto !IS( ta+ como si -uera +a sa+ida de +a -uncin(RINC

    9@ (setq file9id (open "test+tmp" "Q"SCfile "test+tmp"T9@ (vl!princ!to!string file9id"SCfile test+tmpT"

    1lstrin8Rlist strin83Con.ierte una cadena en una +ista de cdi/os decarcter numricos ASCII

    9@ (vl!string!Tlist "$adrid"(55 65 /77 //2 /71 /77

    1lstrin8elt strin8 position3De.ue+.e +a representacin ASCII de+ carcter situado en+a posicin especi-icada en una cadena E+ primercarcter ocupa +a posicin cero

    9@ (vl!string!elt "$adrid" 7559@ (cMr 55"$"9@

    1lstrin8le9ttri, cKaracterset strin83uita +os caracteres especi-icados de+ inicio de unacadena

    9@ (vl!string!left!trim "-G" "-GNIVB""NIVB"

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    74/158

    1lstrin8,is,atcK ca) ca)2 Wpos pos2 i8norarca&aX3

    De.ue+.e +a +on/itud de+ pre-ijo com;n ms +ar/o parados cadenas

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    75/158

    9@ (vl!string!subst "esta" "cadena" ">na cadena uotra cadena a sustituir" 7">na esta u otra cadena a sustituir"9@ (vl!string!subst "esta" "cadena" ">na cadena uotra cadena a sustituir" /7">na cadena u otra esta a sustituir"1lstrin8translate con&ori8en con&)est ca)3

    Reemp+a8a caracteres en una cadena con un conjuntoespeci-icado de caracteres

    9@ (vl!string!translate "abc#%F" "/03/03" "# W a, %W b, F W F""/ W /, 0 W 0, 3 W 3"9@ (vl!string!translate "abc" "/03" "# W a, % W b, FW F"

    "# W /, % W 0, F W F"1lstrin8tri, con&caract ca)ena3

    uita +os caracteres especi-icados de+ inicio 5 de+ -ina+ deuna cadena

    9@ (vl!string!trim "'er" "'er o no 'er"" o no "

    %O!AS ESPECIALES

    A+/unas -unciones !IS( se consideran como FormasEspecialespor:ue e.a+;an +os ar/umentos recibidos deuna manera di-erente :ue +a ma5or3a de +as -unciones++amadas desde *isua+ !IS( )na -uncin t3pica e.a+;atodos +os ar/umentos :ue se +e pasan antes de actuarsobre e++os !as Formas Especialeso no e.a+;an todos

    sus ar/umentos, o s+o e.a+;an a+/unos ar/umentosbajo determinadas condiciones (or ejemp+o, de-un seconsidera una Forma Especial, 5a :ue tiene comoresu+tado e+ de-inir una nue.a -uncin de usuario a partirde +os ar/umentos :ue recibe, sin e.a+uar +os mismos!as si/uientes -unciones Auto!IS( 5 *isua+ !IS( seinc+u5en en +a cate/or3a de Formas Especiales'#&

    FB$$#&FB&

    BG

    -GBO*>B)

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    76/158

    &N>&N>!*NBG#FHN>F)IB

    IN#$%

    G-#)')*)G#F>)G#F

    P#X!NBGEHI

    %"NCIONES DE%INIDAS PO EL "S"AIO

    )n pro/rama /rande sue+e di.idirse en una serie de pe:ue2as

    formaso -unciones de usuario ms -ci+es de imp+ementar 5depurar !as mismas se componen a partir de ++amadas a +as-unciones primiti.as Estas ++amadas tendrn +a -orma de+istas :ue podrn anidarse unas dentro de otras de acuerdo a+o :ue re:uiera +a comp+ejidad de +a manipu+acin :ue :uierarea+i8arse de +os datos aportados como ar/umentos (ara +ade-inicin de -unciones de usuario norma+mente uti+i8aremos+a -orma especia+ &N> Otra manera de representar-unciones de usuario son +as e6presiones #$% E+ estudio

    de su re+acin con DE$)N contribuir a una mejorcomprensin de+ proceso !a car/a de +as -unciones deusuario /uardadas en -iceros se rea+i8a mediante +a -uncinB#& )n -icero en :ue se /uarda un pro/rama !IS( contiene+as distintas formaso -unciones de usuario, una a continuacinde +a otra, terminando por +a -uncin :ue debe in.ocarse parainiciar +a ejecucin de+ pro/rama Esto se debe a :ue +a-uncin !OAD imprimir en panta++a e+ nombre de +a ;+tima-orma e.a+uada E+ nombre de esta -uncin inicia+ se sue+e

    comen8ar con +os caracteres LC'L +o :ue indica a+ sistema :uedica -uncin de usuario debe tratarse como si -uera uncomando nati.o de AutoCAD, en e+ sentido de :ue puedain.ocarse tec+eando e+ nombre

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    77/158

    LA PI!ITIVA DE%"N

    (defu sm lista-ar3umetos e%resi= 555)

    &N>permite de-inir una nue.a -uncin de usuario con e+nombre s3m B)= Detrs de+ nombre de +a-uncin aparece una +ista de parmetros

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    78/158

    9@ (doble /0

    )n pro/rama !isp usua+mente inc+u5e una co+eccin de ta+esde-uns, asemejndose en e++o a un -icero de de-iniciones deprocedimientos en +en/uajes ta+es como C o (asca+

    (ero, se/;n puntua+i8a 4raam, La+/o mu5 di-erente estsucediendo a:u3 !as -unciones !isp son objetos por s3mismas !o :ue rea+mente ace &N>es construir una-uncin 5 /uardar+a bajo e+ nombre :ue aparece como primerar/umentoL

    (odemos acceder a +a -uncin asociada a+ s3mbo+o &B%

    uti+i8ando +a -uncin *isua+ !IS( .+Ms5mbo+M.a+ue'

    9@ (vl!symbol!value .&B%SC>'>%G Y721455ac &B%T

    En .ersiones anteriores de Auto!IS( +a -uncin creada conde-un era una +ista'

    Fommand: (defun doble (x (? x 0

    &B%Fommand: Zdoble((X (? X 0Fommand: (car doble(XFommand: (cdr doble((? X 0

    En *isua+ !IS( +a -uncin de usuario creada con de-un es una-uncin compi+ada :ue contiene instrucciones en +en/uaje de

    m:uina, por +o tanto en Autocad F obtendremos'Fommand: (defun doble (x (? x 0&B%Fommand: ZdobleSC'>%G Y7/d1ba08 &B%TFommand: (car doble= error: bad argument type: consp SC'>%G Y7/d1ba08&B%TFommand: (cdr doble

    = error: bad argument type: consp SC'>%G Y7/d1ba08&B%T

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    79/158

    E5PESIONES LA!(DA

    !a independencia de ambos procesos, +a construccin de +a-uncin 5 e+ asi/nar+e un nombre se comprende c+aramente siana+i8amos +a -uncin #$%

    (lambda argumentos expr +++

    %ediante e++a, podemos re-erirnos a una -uncin +itera+mentede +a misma manera :ue +o ar3amos con un n;mero o unacadena de te6to )n n;mero se representa a s3 mismo )nacadena se representa mediante una serie de caracteresrodeados de comi++as dob+es (ara representar una -uncin seuti+i8an e6presionesM+ambda

    )na e6presinM+ambda es una +ista de tres componentes'

    1 E+ s3mbo+o +ambdaF )na +ista de parmetros )na serie de e6presiones :ue se e.a+;an a+ ejecutar +a

    -uncin

    )na -uncin e:ui.a+ente a dob+e es +a re-erida por +a si/uenteexpresin!lambda'

    9@ (lambda (x(? x 0SC>'>%G Y7322f7dc !lambda!T

    !a -orma especia+ set: puede ser.ir a su .e8 para asi/naresta -uncin a un s3mbo+o'

    9@ (setq doble (lambda (x(? x 0SC>'>%G Y7322f/72 !lambda!T9@ (doble 2

    8

    :ue podemos ejecutar per-ectamente como -uncin deusuario#$%sue+e usarse conjuntamente con#--A5Jo$#-F#Gpara ejecutar una -uncin sobre una +ista

    %"NCTION

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    80/158

    E+ operador N>F)IB+e indica a+ compi+ador *isua+ !IS( :ueen+ace 5 optimice un ar/umento ta+ como si -uera una -uncinprimiti.a

    (function smbolo [ expresin!lambdaN>F)IBes idntico a +a -uncin *>B)e6cepto en :ue-uer8a +a compi+acin de+ ar/umento de +a misma manera :ue+o ar3a &N> Si inc+u3mos +as -unciones internas ene6presiones de+ tipo

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    81/158

    )na de +as .irtudes de !IS( es +a posibi+idad de construir, apartir de +as primiti.as aportadas por e+ +en/uaje, +as-unciones necesarias para e+ desarro++o de una ap+icacinespec3-ica Estas -unciones operan de manera idntica a +as

    -unciones primiti.as Si bien podemos e.a+uar +as -unciones!IS( desde +a Conso+a de *isua+ !IS( o desde +a propia +3neade comandos de AutoCAD, cuando se trata de -unciones mse6tensas +o usua+ es escribir+as en un -icero de te6to

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    82/158

    admite una +etra de unidad )na barra ob+icua

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    83/158

  • 8/10/2019 Visual LISP Para AutoCAD 2000

    84/158

    *isua+ !IS( en Autoca) 2000 1F3 ' 2002a+producirse un n;mero en e6ceso de+ ma5or .a+or rea+admitido, en +u/ar de /enerar un error de.ue+.e e+s3mbo+o 1`IN$, :ue puede asi/narse a una .ariab+e :ue

    sea de.ue+ta en caso de di.isin por cero'(odemos de-inir una -uncin :ue nos de.ue+.a estes3mbo+o (ara e++o contamos con e+ predicado nodocumentado *!MIN$( :ue detecta cuando un n;merorebasa e+ m6imo .a+or admitido para +os n;merosrea+es'

    (defun infinito ( (setq ?IN? 0+7

    (QMile (not (P!IN- ?IN? (setq ?$#X!G#? ?IN? ?I