Lisp »QUOTESOV
Autore: Claudio Rivoira
Licenza: Freeware
Dimensioni: 17.635 byte
Sito WEB: La Granda
Categoria: Applicativo per AutoCAD 12-2009
Durante il normale utilizzo di Autocad, può capitare di sovrapporre involontariamente delle quote. In particolare le quote sovrapposte diventano difficili da individuare, quando viene a crearsi un caso simile a quello che si può vedere in figura:
guardando le quote con il testo bianco, sembra che il pezzo sia 100 + 10 cm, mentre è 100 in totale (lo dimostra la quota verde); cioè è stata fatta una quota totale (100) e poi si è continuata la quota per il dentino tornando indietro di 10.
Inutile dire che un errore del genere può provocare grandi problemi. Altri software (come Solid Works) impediscono che si verifichi un caso del genere, mentre Autocad non effettua nessun controllo.
Ho pensato di trovare una soluzione al problema, creando un lisp in grado di controllare ... una ad una ... tutte le quote per cercare quelle che si sovrappongono fra loro. Devo ammettere che questo lisp è stato uno dei più difficili che abbia mai fatto! Si trattava infatti di elaborare prima una teoria, ma poi andare avanti passo passo, per studiare tutti i casi in cui le quote si sovrappongono .... quindi una marea di coordinate, di codici di gruppo e di nomi alfanumerici delle entità:
esempio (<Nome Entità: 7ef9cd38>)
... che molto spesso cambiano chiudendo e riaprendo il disegno!!!
Vi risparmio la seconda parte e vi parlo solo della prima: la teoria.
Ho diviso il problema in 7 fasi:
- FASE 1 - Selezionare TUTTE le quote del disegno
E' possibile fare un controllo generale di TUTTE le quote del disegno, tuttavia quando il numero di queste supera le 500/600, i tempi di controllo diventano molto lunghi. Cosi' si può "suddividere" il lavoro, selezionando una serie di finestre (che verranno evidenziate con altrettanti rettangoli rossi). Per esempio con 2 finestre che selezionino 250 quote ciascuna, il tempo totale si riduce notevolmente. Con questo metodo è inoltre possibile, non conteggiare delle quote su un determinato layer: se per es. sappiamo che un layer ("Fondazioni") ha delle quote sovrapposte al layer "Copertura", ma questi 2 layer non vengono mai visualizzati contemporaneamente sui layout, facciamo una prima finestra mantenendo acceso "Fondazioni" e spento "Copertura" e poi viceversa. Se noi utilizzassimo la selezione di tutte le quote, verrebbero invece considerati anche i layer spenti, e quindi ci verrebbero segnalate come errate le 2 quote sovrapposte, ma su layer diversi.
- FASE 2 - Posizionare l'UCS sul punto della prima quota
Viene presa in esame la prima quota del set di selezione: non importa quale sia; dipende da come è stato creato il disegno .... ma da qualche parte bisogna pur iniziare! Di questa quota vengono estratte le coordinate di diversi punti: i punti 13 e 14 (questi sono i codici di gruppo della quota) sono quelli che si trovano sull'entità quotata. Ad es. quotando una linea i punti 13 e 14 sono quelli che coincidono con gli etremi della linea stessa. Il punto 11 è quello più importante, poichè è quello che, sul medesimo allineamento del punto 14, stabilisce dove viene disegnata la quota. Servirebbe un punto 12, allineato con il 13, ma purtroppo nei codici di gruppo questo esiste ma ha sempre valore 0,0. Quindi è necessario ricostruirlo posizionando l'origine dell'ucs sul punto 11 e poi estrarre la coord. Y del punto 13 (trasformata da WCS a UCS).
- FASE 3 - Creare una lista che contiene solo le quote sullo stesso allineamento
Una volta posizionati con l'origine dell'UCS sul punto 11 della prima quota, occorre ruotare l'ucs di 90 gradi, cioè dirigere la X verso il punto 12 (quello ricostruito). A questo punto si scorrono una ad una tutte le quote del set di selezione e si memorizza in una lista le quote che hanno una coord. Y = a 0. Questo significa che si trovano tutte sullo stesso allineamento.
- FASE 4 - Fare verifica delle quote sovrapposte (solo quelle della lista appena creata)
Si fanno scorrere tutte le quote delle lista appena creata, per cercare quelle che hanno coord. 11 e 12 che sono posizionate in modo da essere interne, esterne o parzialmente sovrapposte a quella di riferimento. Questo è il cuore del programma: se ci sono delle quote sovrapposte vengono "scovate".
- FASE 5 - Togliere le quote (ssdel) già verificate, dal set totale
Terminata la verifica delle quote contenute nella lista, le si può eliminare dal set di selezione. Se per es. eravamo partiti con 200 quote ed ora ne abbiamo già controllate 10, queste vengono eliminate dal set ed il contatore della percentuale viene portato a 5%. E' ovvio quindi, che ad ogni giro le quote del set diminuiscono e quindi il contatore accelera sempre più.
- FASE 6 - Torna alla Fase 2 e ripete il ciclo fino a quando il set (seltot) ha degli elementi
Nuovo giro, per estrarre una nuova quota che faccia da riferimento: si torna alla fase 2.
- FASE 7 - Traccia delle linee dalle quote errate (lsterr) ad un punto vuoto del disegno
Ormai tutto il set è stato controllato. Una lista (listerr) contiene tutte le quote errate. Si tratta di chiedere all'utente di cliccare in un punto vuoto del disegno e poi tracciare delle linee da quel punto alle quote errate. Nei codici di gruppo delle quote esiste anche un punto 10 ed è il punto in cui si trova il testo della quota stessa: è questo che viene usato per tracciare le linee che evidenziano le quote errate.
Questo lisp non è "infallibile" .... certe volte non si accorge di quote sovrapporte quando queste hanno inclinazioni strane ... pertanto sarebbe utile che mi segnalaste i casi in cui si verificano questi errori. Comunque per la maggior parte dei casi, questo lisp ci aiuta a "dormire più tranquilli", sapendo che nel nostro disegno non abbiamo delle quote che si sovrappongono!
Altra piccola nota: le coordinate vengono sempre arrotondate a 2 numeri dopo la virgola, cosa che va sempre bene se si lavora in mm o cm. Chi invece è abituato a lavorare in m, Km, anni luce ecc .... potrebbe avere dei risultati imprecisi.
Test con AutoCAD 2009
Comando: quotesov
Seleziona la zona in cui ci sono le quote da analizzare:
1° vertice - (INVIO = TUTTO IL DISEGNO)
N. 10 quote da controllare: ATTENDI ...
Trovate 6 quote errate
Clicca in un punto vuoto
quotesov.zip
Lisp e file DOC
Dimensioni file zip: 14.459 byte |
AutoCAD |
Lisp »QUOTESOV
|