Visual LISP Para AutoCAD 2000
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