Lisp »EsplodiG
Autore: Claudio Rivoira
Licenza: Freeware
Dimensioni: 2.312 byte
Sito WEB: La Granda
Categoria: Applicativo per AutoCAD 12-2005
Da qualche tempo ho iniziato ad utilizzare i Gruppi di Autocad.
Sostanzialmente consistono in una serie di entità (testi, linee, cerchi ...)
che sono stati "Raggruppati" insieme e gli è stato dato un nome. E'
come se si decidesse di assegnare un nome a una serie di entità che si vuole
spostare tutte insieme: in autolisp lo si assegnerebbe ad una variabile
e lo si chiamerebbe "Set di selezione".
Il comando Gruppo è però poco versatile quando si tratta di
cancellarli (esploderli): occorre esploderli uno ad uno selezionandone il nome
dall'elenco. Inoltre non è possibile cancellarli dal disegno e sperare
di eliminarne ogni traccia lanciando il comando "Elimina" (Purge) ... i
gruppi non vengono eliminati da questo comando.
Per risolvere questi problemi, ho scritto un piccolo programmino per
"Esplodere" i gruppi ... semplicemente selezionandoli, senza quindi
doverne digitare il nome esatto.
Analisi del programma:
Quando ho iniziato la stesura del programma, ho cercato qualche indizio
che mi permettesse di capire con quale criterio Autolisp definisce i Gruppi.
Purtroppo selezionando una serie di entità contenute all'interno di un
gruppo, queste mi si presentavano esattamente come le entità separate
(linea, testo ecc). Dopo qualche giorno, per puro c... fortuna, ho
scoperto l'esistenza di un codice di gruppo particolare: 330.
Estraendo il nome esadecimale di questo codice di gruppo, si ottenevano 2
casi: (0."GROUP")=gruppo (0."BLOCK_RECORD")=altra entità scavando
ancora più a fondo (cioè estraendo un'altra volta il nome esadecimale grazie al
codice 330), ho potuto trovare il nome del gruppo ed usarlo in un
comando Gruppo per esplodere lo stesso.
Quindi questo programmino è di una semplicità disarmante, una volta scoperto
che si tratta semplicemente di entità inserite "l'una dentro l'altra": come
le bamboline Russe (Matrioska).
Una cosa simile avviene anche per le polilinee: per ottenere i vertici di
una polilinea occorre scavare allo stesso modo. Per questo motivo in
Autolisp, le polilinee vengono chiamate "Entità complesse" ... che nome
altisonante!
E' importante ricordarsi che questo comando permette di esplodere i gruppi
non più necessari, ma solo se questi non sono ancora stati cancellati
dal disegno (erase), poiché, come già detto, il comando Elimina (Purge),
non è in grado di eliminarli, come farebbe con i blocchi cancellati dal disegno e quindi non più usati.
Ho anche fatto un'icona da inserire nella barra strumenti: si tratta di
una "bomba" nera con una G sopra (per distinguerla dal "candelotto di
dinamite" utilizzato per rappresentare l'esplosione dei blocchi).
Per completare l'opera ho creato un file MENU.MNS contenente i comandi
per poter lanciare il programma sia dal menù a discesa, sia dall'icona.
Questo menù potra essere caricato autonomamente, o essere integrato con
altri menù aggiuntivi di autocad facendo un "Copia Incolla" con BLOCCO
NOTE di Windows. Nel menù ho ipotizzato che il programmino e l'icona si
trovino nella sottocartella LSP.
Lisp »EsplodiG
|