[ Pobierz caÅ‚ość w formacie PDF ] .Questaprocedure, oltre a disegnare un cerchio specificando centro e raggio, consentiràall'operatore di stabilirne il colore e il layer di appartenenza.Di seguito viene mostrato il codice del comando completo di commentidescrittivi:(defun c:CerchioPlus ( / punto1 raggio colore layer)(princ "\nComando CerchioPlus V.1.0")(setq colore nil)(initget 1);impedisce un input nullo [solo Invio];richiede un punto(setq punto1 (getpoint "\nIndicare centro del cerchio : "));impedisce la pressione del solo invio, l'inserimento di 0,Pagina 39Il Mio Lisp di Roberto Rossi;disegna linee tratteggiate(initget 35);richiede una distanza disegnando una linea da punto1(setq raggio(getdist punto1 "\nIndicare raggio del cerchio : "));finchè non si è scelto un colore valido(while (not colore)(initget 4);impedisce l'input di valori negativi;richiede di specificare un valore intero(setq colore (getint "\nColore [Invio per lista colori] : "));se viene premuto solo invio(if (not colore)(setq colore (acad_colordlg 256)) ;scelta colore da dialog);endif);endw(cond((= colore 256);il colore 256 corrisponde al colore da layer(setq colore "BYLAYER"))((= colore 0);il colore 256 corrisponde al colore da blocco(setq colore "BYBLOCK"))((> colore 256)(princ "\nIl colore indicato non è valido!")(setq colore nil)));endc(setq layer (getstring "\nIndicare layer di appartenenza :"))(if (not layer);se si preme solo invio(setq layer "0"));endif;disegna un cerchio specificando il centro e il raggio(command "_circle" punto1 raggio)(if colore ;se è stato specificato un colore;modifica il colore dell'ultima entità inserita(command "_chprop" "_last" "" "_c" colore ""));endif;modifica il layer dell'ultima entità inserita(command "_chprop" "_last" "" "_la" layer "")(prin1));enddefPagina 40Il Mio Lisp di Roberto RossiCAPITOLO 5Le ListeIntroduzione alle listeCreazione di una listaEstrazione datiForeachAltre funzioniEsempio riassuntivoPagina 41Il Mio Lisp di Roberto RossiIntroduzione alle listeCome si è visto nell'introduzione a questo testo Lisp è un derivato del piùfamoso (e generico) linguaggio LISP.Il termine LISP non è altro chel'acronimo di 'LISt Processing', da ciò si può dedurre che Lisp è un linguaggioche nasce e si sviluppa attorno al concetto di lista, facendone il principaleelemento per la programmazione.Una lista in Lisp non è altro che un insieme non ordinato di simboli, dove persimbolo si intende una variabile, il nome di una funzione, una stringa, unnumero intero, un reale e qualsiasi altro elemento utilizzato all'interno di unprogramma.Per capire meglio cosa sia effettivamente una lista si può paragonarla ad unarray (o vettore) dinamico i cui elementi non abbiano un tipo specifico mavariabile a seconda delle esigenze, inoltre le liste hanno la possibilità dicontenere altre liste al loro interno come elementi dell'insieme.Ovviamente Lisp consente di creare liste di qualsiasi tipo, permette la ricerca dielementi al loro interno, consente la loro manipolazione, la cancellazione,l'ordinamento.Si tenga sempre presente che le liste saranno la base per poter accedere aldatabase del disegno per la sua modifica e per la sua consultazione.Con questopotente costrutto (la lista) sarà consentita la realizzazione di applicativi moltosofisticati ed estremamente rapidi utilizzando poche e semplici righe di codice.Creazione di una listaLa creazione di liste avviene in tre differenti modi.Il primo, fa uso delsimbolo ' che permette di creare una lista formata da elementi costanti, adesempio :(setq lsta '(1 2 3 4 "test"))in questo caso la variabile 'lsta' conterrà una lista formata da 4 numeri ed unastringa.Questo modo di costruire liste è però limitato dal fatto che i membridella lista stessa non vengono valutati ma vengono inseriti così come sono,quindi, se usassimo come membro una variabile, nella lista verrebbe inserito ilnome della stessa e non il suo valore, ad esempio :(setq vr1 "test")(setq lsta '(1 2 3 4 vr1))al termine di queste istruzioni 'lsta' conterrà '(1 2 3 4 vr1)' e non '(1 2 3 4"test")' come ci si potrebbe aspettare.Per superare questo limite esiste la funzione 'LIST' che genera una listaPagina 42Il Mio Lisp di Roberto Rossivalutandone i membri, ad esempio riprendendo il precedente esempio:(setq vr1 "test")(setq lsta (list 1 2 3 4 vr1))ora la variabile 'lsta' conterrà '(1 2 3 4 "test")' visto che la funzione list valuta isuoi membri prima di inserirli nella lista
[ Pobierz całość w formacie PDF ] zanotowane.pldoc.pisz.plpdf.pisz.plmikr.xlx.pl
|