31 luglio 2019

Contare i blocchi : comandi e metodi

I CAD offrono vari strumenti per conteggiare i blocchi. Una breve analisi e un confronto fra i comandi disponibili nei diversi software...

[ N.B. questo articolo è stato scritto prima dell'uscita di AutoCAD 2022 con il suo nuovo comando CONTEGGIO. Chi volesse approfondire solo questo comando può leggere l'articolo dedicato]

Non credo che esista nel mondo qualcuno che abbia contato i blocchi presenti in un disegno (intendo un numero elevato di blocchi), a mano.
Mi ricorda un po' la leggenda che girava nei primi anni '90, negli anni dell'avvento del CAD in Italia, quando qualcuno aveva visto un vecchio ingegnere poggiare il righello sullo schermo per verificare se il disegno visualizzato fosse in scala...

I metodi per conteggiare i blocchi sono numerosi e di facile utilizzo. Ho provato ad elencarli ed a verificare il loro funzionamento nei CAD AutoCAD, BricsCAD, GstarCAD, nanoCAD, progeCAD e ZWcad.

Distinguiamo i comandi semplici, che restituiscono il numero totale dei blocchi (bcount, selrapid, selectsimilar e filtra) da quelli più articolati che consentono di ottenere una tabella o salvare i dati in un file (estrdati e simili).

Le tabelle seguenti offrono un riassunto riguardo ai comandi ed alle loro capacità.

In questa tabella alcune caratteristiche dei 4 comandi per il semplice conteggio:

COMANDI
BCOUNT
SELRAPID
SELECTSIMILAR
FILTRA
Ricerca ristretta in area del disegno specificata
Si
Si
No
Si (nanoCAD)
Si
Riconoscimento blocchi dinamici
No
Si (ZWcad)
Si
Si
No
Conteggio distinto per ogni diverso nome di blocco
Si
No
No
No
Selezione basata su altre proprietà oltre al nome
No
Si
Si
Si
Salvataggio criteri di ricerca
No
No
No
Si

la presenza dei 4 comandi nei diversi CAD:

AutoCAD
ZWcad
BricsCAD
GstarCAD
nanoCAD
progeCAD
BCOUNT
Si
Si
Si *
Si
No
Si
FILTRA
Si
Si
No
Si
No
Si
SELRAPID
Si
Si
Si **
Si
SI
Si
SELECTSIMILAR
Si
Si
Si
Si
Si
Si
** = integrato nel pannello Proprietà    * = negli Express Tools da scaricare free dal sito Bricsys


Infine, alcune caratteristiche del comando di estrazione dati finalizzato al computo dei blocchi descritto per i diversi CAD:
AutoCAD
ZWcad
BricsCAD
GstarCAD
nanoCAD
progeCAD
Nome comando
Estrdati
Dataextraction
Estrdati
Dataextraction
Table*
_Eattext
Estrazione da disegni diversi
Si
No
Si
Si
No
No
Formati fle di esportazio
Tabella + .csv .xls .mdb .txt
Tabella +.csv .xls
Tabella + Csv con scelta del separatore
Tabella + .csv .xls .mdb .txt
Tabella + .csv .txt .xls .xml
Tabella + .csv
Immagini blocchi in tabella
No
Si
No
No
No
No
Selezione stile tabella
Si
No
Si
Si
Si
No
* = in nanoCAD non esiste un comando apposito ma lo si fa utilizzando le Tabelle ed il loro editor avanzato

Ma descriviamo nel dettaglio i comandi

BCOUNT

Comando presente negli Express Tools da molti anni. È un comando rapido e facile da utilizzare.

Nella maggior parte dei CAD questo comando però non supporta i blocchi dinamici
Per la precisione non riconosce le istanze di blocco dinamico a cui sono state apportate delle modifiche tramite i tipici controlli dei blocchi dinamici.
Fa eccezione ZWcad, nel quale hanno implementato il comando in maniera che supporti questo tipo di blocchi.

Dopo aver selezionato gli oggetti (quelli diversi dai blocchi sono filtrati fuori dalla selezione) nella schermata testo viene riportato il conteggio totale per ogni diverso blocco rilevato:
l'output del comando BCOUNT, applicato al disegno di esempio fornito con AutoCAD: "Floor Plan Sample.dwg"

SELRAPID (QSELECT)

Questo comando, come BCOUNT, permette di definire la zona di spazio entro cui contare i blocchi.

Offre anche tutta una serie di parametri aggiuntivi da poter utilizzare come criterio per la selezione dei blocchi simili.
Non approfondiamo questa possibilità ma soffermiamoci sulla selezione di blocchi basata sul nome  o, sfruttando i caratteri jolly, sui nomi simili (per saperne di più sui caratteri jolly leggi: "Selezione e sostituzione di testi nel disegno CAD").

Nell'immagine seguente, nella finestra di dialogo di SELRAPID, si notano le impostazioni per selezionare tutti i blocchi aventi uno specifico nome (riquadro a sinistra) e quelle per selezionare tutti i blocchi che abbiano un nome che inizi con "DR" (riquadro a destra), utilizzando l'operatore con i caratteri jolly.

la finestra di SELRAPID, a sinistra per cercare i blocchi aventi uno specifico nome e a destra per ricercare tutti i blocchi che hanno un nome che comincia con"DR"

Il numero totale di oggetti selezionati viene mostrato sulla riga di comando.

in nanoCAD l'interfaccia del comando è leggermente differente, ma i criteri sono gli stessi. L'operatore 'like' è usato per cercare tutti i blocchi che iniziano con  "DR-"
la finestra del comando QSELECT in nanoCAD ha una struttura completamente differente rispetto a quella degli altri CAD ma permette lo stesso tipo di azioni
Il numero totale dei blocchi trovati è mostrato in basso a sinistra nella finestra di dialogo.

Questo comando supporta il riconoscimento dei  blocchi dinamici.


SELECTSIMILAR

Anche con Seleziona simile è possibile conoscere il numero totale di istanze di uno specifico blocco, quello selezionato.

La ricerca avviene nell'intero disegno e non è possibile definire un'area entro cui ricercare, tranne che in nanoCAD dove, con l'opzione 'Regione' si può selezionare un'area specifica nel disegno.

Nelle impostazioni del comando bisogna che il criterio Nome sia attivo e, al massimo, anche il Layer se si vuole discriminare tra blocchi aventi lo stesso nome ma giacenti su layer diversi.

le Impostazioni del comando SELECSIMILAR, il 'nome' deve essere spuntato per ottenere la selezione di blocchi con lo stesso nome

Il comando non visualizza sulla riga di comando il numero di blocchi rilevati ma li pre seleziona per un successivo comando.

Nel pannello delle proprietà, comunque, insieme al tipo di oggetto selezionato è indicato tra parantesi il numero di oggetti rilevati.
la tavoozza Proprietà indica il numero totale di oggetti selezionati
Con Selectsimilar è possibile selezionare contemporaneamente anche blocchi diversi.

Questo comando supporta il riconoscimento dei  blocchi dinamici

FILTRA

L'interfaccia di questo comando può spaventare a prima vista, ma bastano pochi semplici passi per utilizzarlo per il nostro scopo. Chi volesse approfondire il funzionamento del comando FILTER può consultare la guida di AutoCAD.

Il vantaggio di questo comando è che può salvare su disco i 'criteri di ricerca'. Per chi fa operazioni ripetitive sarà molto comodo poterli richiamare nelle successive sessioni di disegno.

Nell'animazione sottostante un esempio di utilizzo per selezionare e conteggiare, in un sol colpo, 2 blocchi : Computer e Door nel disegno di esempio fornito con AutoCAD.
Il semplice criterio di selezione viene poi memorizzato per poter essere utilizzato in altri disegni.
un esempio di utilizzo del comando FILTRA (FILTER)

In ZWcad il comando ha una interfaccia leggermente diversa, ma i principi restano gli stessi.

Cosa molto utile che offre ZWcad è che gli oggetti rilevati vengono elencati in una lista nella parte inferiore della finestra di dialogo ed è disponibile anche un tasto per 'zoomare' su ogni singola voce.
la finestra del comando FILTRA di ZWcad, Da notare la parte inferiore con l'elenco dei risultati trovati.

In BricsCAD non c'è il comando FILTRA, ma è inglobato nel pannello Proprietà.
Di seguito un esempio di utilizzo finalizzato alla selezione di blocchi con nome specificato.
il FILTRA di BricsCAD, integrato nel pannello delle proprietà

ISTRUZIONI AutoLISP

Anche con delle brevi e semplici istruzioni del linguaggio AutoLISP si possono contare i blocchi.

Per chi fa operazioni ripetitive potrebbe essere utile 'salvare' queste istruzioni in icone personalizzate pronte per il richiamo quando necessarie.

Vediamo qualche esempio.
Questa istruzione : (sslength(ssget '((0 . "INSERT"))))
propone la selezione oggetti e restituisce il numero dei blocchi selezionati.

Questa istruzione è ancora più interessante: (sslength(ssget  '((2 . "PIPPO"))))
Nell'ambito della selezione oggetti effettuata, restituisce il numero di blocchi aventi il nome specificato, in questto caso "PIPPO".

Quando si indica il nome del blocco si possono utilizzare i caratteri jolly.
Così è possibile, ad esempio, selezionare tutti i blocchi aventi un nome che comincia con una determinata stringna di testo.
Con  (sslength(ssget  '((2 . "LAMPADA*"))))
conterà solo i blocchi che hanno il nome che comincia con "LAMPADA" e poi qualsiasi altro carattere quindi, ad esempio, "Lampada1, Lampada2, Lampada_sicurezza ecc. .


ESTRDATI e simili

Il comando Estrai Dati, sebbene il nome sia fuorviante, può essere utilizzato per conteggiare i blocchi. Questo comando crea una tabella (un oggetto grafico) da inserire nel disegno o un file in cui esportare i dati.

Tipicamente in tutti i CAD descritti il comando si compone di un wizard multipagina che aiuta passo passo l'utente a comporre la struttura della tabella da generare. Non entro nel dettaglio nel descrivere i comandi.

In alcuni CAD (AutoCAD, BricsCAD e GStarCAD) si possono computare, in un sol colpo, i blocchi contenuti in file di disegno diversi.

I formati di output su file sono in genere file .CSV o.TXT o nei migliori dei casi XLS.
AutoCAD e GStarcad offrono anche il formato .MDB (Microsoft Data Base).

Mi piace segnalare che in fase di creazione della tabella, insieme a nomi blocchi e quantità, ZWcad offre la possibilità di inserire una colonna con la rappresentazione grafica del blocco (Block Preview), molto utile.
la tabella generata da ZWcad con la colonna con la rappresentazione dei blocchi

Come segnalato nella terza tabella all'inizio dell'articolo, nanoCAD non dispone di un comando apposito ma utilizza il comando Tabella per conteggiare i blocchi.

Le tabelle in nanoCAD sono uno strumento avanzatissimo, grazie ai link bidirezionali con gli oggetti ed all'editor ricco di funzionalità con supporto di espressioni, come Excel.
I passaggi per ottenere la colonna dei totali sono un po' articolati ma, dopo essersi impratichiti, diventa facile ottenere il risultato che offrono gli altri CAD. Per approfondire l'argomento guarda il video su nanoCAD inserito al termine di questa pagina.

Contare tutti i blocchi

La maniera più rapida per ottenere il numero complessivo di blocchi presenti nel disegno resta comunque l'interrogazione nel pannello proprietà della selezione corrente.
Come si vede nell'animazione seguente nella lista a discesa del pannello sono elencati i tipi di oggetti ed il loro numero, bisogna scegliere: "Riferimento di blocco".


Programmi esterni

Sono numerosi i programmi da caricare nel CAD che si possono trovare in rete per computare il numero di blocchi ed ottenere una tabella riassuntiva.

Non si può non segnalare il programma di Lee Mac, Block Counter, che restituisce una tabella con anche la colonna con la rappresentazione grafica del blocco, il tutto configurabile tramite finestra di dialogo.
Il comando non funziona con progeCAD e nanoCAD.


Conosci altre tecniche per contare i blocchi o ottenere dei report grafici o su file? Scrivilo nei commenti qui sotto, in maniera da rendere l'articolo più completo a beneficio dei futuri lettori. Grazie!


Un 'video riassunto' per i comandi di
ZWcad  
AutoCAD 
nanoCAD 


4 commenti:

  1. Salve. Perchè non parlare di DATAEXTRACTION o ESTRDATI?

    RispondiElimina
    Risposte
    1. Salve. Il comando ESTRDATI è citato nel paragrafo "ESTRDATI e simili" che è il terzultimo paragrafo dell'articolo.

      Elimina
  2. Salve, cerco la funzione conta blocchi su DRAFTSIGHT ... qualcuno può aiutarmi? Grazie

    RispondiElimina
  3. Ciao.
    Non conosco nel dettaglio Draftsight ma potresti provare con il comando SelectMatching oppure con SelectionFilter

    RispondiElimina