Modellazione strutturata

Ing. Luca NICOTRA
Resp.le Applicazioni CAD/CAE/CAM/PDM
INFORDATA S.p.A. - Roma
IBM Business Partner
Articolo pubblicato in "Progettare" n°230 gennaio 2000 VNU Business Publications, Milano

Alla modellazione solida di tipo CSG (Constructive Solid Geometry) possono essere applicate semplici tecniche strutturali, conferendo all’albero che rappresenta il solido un rilevante valore progettuale.

 

I solidi CSG (Constructive Solid Geometry), realizzati con gli attuali modellatori ibridi, risultano dall’aggregazione di primitive o macro-primitive [1] secondo operazioni sia logiche (unione, sottrazione, intersezione, taglio) sia tecnologiche (raggiatura, angolo di spoglia, spessore, smussatura, svuotamento, sewing [2] ). Nella normale costruzione progressiva di un solido CSG, le primitive e relative operazioni, a mano a mano specificate dall’utente, sono accodate l’una dopo l’altra nell’albero del solido. Il risultato è un albero che si sviluppa essenzialmente in verticale, caratterizzato da uno “sparpagliamento” delle primitive (foglie) e delle relative operazioni (nodi) (figura 1), paragonabile alla presenza, in un programma non strutturato, di istruzioni “go to” incontrollate. Un solido siffatto lo chiameremo quindi “non strutturato”. Il relativo albero risulta la cronologia dell’ideazione del pezzo così come si è successivamente affinata nella mente dell’operatore, manifestando, il più delle volte, una caotica attività di “tagli e cuci”, dovuta all’iniziale mancanza di chiarezza riguardo alla geometria del pezzo da rappresentare. Esso ha pertanto un valore “personale”, generalmente privo di significato progettuale. Spesso non consente di controllare le modifiche, perché non è possibile localizzare in una stessa zona dell’albero tutte le primitive relative alla modifica e può creare gravi problemi di update dell’intero solido, a seguito della modifica stessa. Anche l’occupazione di memoria da parte del solido può inutilmente aumentare, rispetto ad un utilizzo più razionale delle tecniche di modellazione solida CSG, esposte nel presente lavoro. Queste sono state individuate e provate in ambito industriale [1], con il sistema CAD Catia, ma sono applicabili anche con altri sistemi CAD CSG-based, purchè provvisti degli strumenti adatti ad implementarle. Nel seguito, nulla togliendo alla generalità dei concetti esposti, si farà esplicito riferimento a CATIA, senza peraltro specificare le procedure necessarie per attuare tali tecniche, che avrebbero significato soltanto per i “catiaisti”. Per la piena comprensione delle asserzioni di seguito riportate, è necessario spiegare il concetto di solido locale, introdotto con CATIA V4. Un solido locale può essere sia una singola primitiva (foglia dell’albero) sia più in generale un’aggregazione di primitive (ramificazione) del solido CSG. Mentre i modellatori CSG tradizionali memorizzano soltanto le singole primitive, il modellatore solido di CATIA V4 è in grado di memorizzare e visualizzare i solidi locali, vale a dire oltre le singole primitive anche intere ramificazioni dell’albero.

 

Il CONCETTO DI FEATURE

Le definizioni di feature date nella documentazione dei CAD commerciali sono generalmente vaghe e spesso hanno più il valore di slogan commerciali “ad effetto” che di vere definizioni, e quindi con scarso contenuto tecnico. La situazione non è generalmente migliore in ambito accademico: lo dimostra il fatto che nella letteratura scientifica è raro trovare una definizione nominale di feature *[2]. Quelle che esistono sono sempre più o meno personali e parziali, fortemente legate alle particolari argomentazioni presentate. Abbondano invece le definizioni implicite per uso, che però hanno il difetto intrinseco di lasciare in una certa indeterminazione, essendo non esaustive. Nel presente lavoro si propone una definizione esplicita nominale di feature, in gran parte in accordo con le più recenti definizioni date da vari autori [3,4,5]: una feature è l’insieme di più elementi geometrici correlati fra loro da relazioni logiche (operazioni booleane), costruttive, funzionali, in modo da formare idealmente un’entità unica, ma non autonoma dal punto di vista progettuale, alla quale sono associate una precisa funzione e, spesso, anche una lavorazione meccanica specifica (figura box1). I fori, le pocket (tasche), le grooves (unghiature), i boss (rialzi), cui generalmente si pensa quando si parla di feature, sono soltanto alcuni particolari casi. Alcuni autori distinguono fra feature autonome e no. Queste classificazioni meritano un chiarimento, poiché fanno riferimento più agli aspetti matematico-grafici delle feature che non al loro significato ingegneristico. L’autonomia di un oggetto può essere di tipo matematico e ingegneristico. Un oggetto può essere autonomo geometricamente, perchè ha significato geometrico, ma non progettualmente, giacché non è considerato una “parte”, cioè un oggetto che nell’ambito del progetto ha una sua identificazione nella lista parti e quindi un codice parte. Secondo la definizione qui presentata, che riflette una posizione pragmatico-operativa maturata dallo scrivente nella progettazione industriale, il carattere d’autonomia è considerato dal punto di vista progettuale e quindi è riferito più propriamente alle parti. L’autonomia dal punto di vista geometrico, invece, è applicabile, in seno alle feature, per distinguerle fra globali e locali. Una feature globale è una componente della parte che ha un significato geometrico compiuto ed è quindi facilmente riconoscibile in quanto è geometricamente autonoma (per esempio un setto forato di uno chassis). Essa, generalmente, è costituita da primitive grafiche e da feature locali (per es. fori) Una feature locale (foro, tasca, boss, ecc.), al contrario, geometricamente non può avere esistenza autonoma, bensì ha significato in quanto riferita ad altri oggetti: un foro isolato nel vuoto non può esistere geometricamente. Distinguiamo le feature in funzionali e costruttive, secondo che prevale la funzione associata alla feature rispetto alla sua caratteristica costruttiva o viceversa. Nell’ambito delle feature funzionali particolare importanza hanno le feature d’assemblaggio, che permettono l’assemblaggio fra le parti (per esempio i fori filettati). Spesso si evidenzia il carattere parametrico delle feature. Ciò vale senza dubbio per alcune categorie, quali le feature costruttive (fori, ecc.), ma non è un elemento caratterizzante.

* Le definizioni nominali o logiche, secondo G.Peano, sono della forma: definiendum = definiens Df , essendo definiendum il nuovo simbolo ( o parola) da definire e definiens un’espressione composta con simboli o parole già noti o presupposti.

 

Le foglie “secche”

Lo sparpagliamento delle primitive nell’albero CSG, di un solido non strutturato, può facilmente portare alla trasformazione di un albero “vegeto” in un albero con foglie “secche”. Queste sono cosiddette perché non producono alcun risultato grafico e quindi possono essere eliminate. Ciò può accadere per vari motivi. I casi più frequenti riguardano primitive del solido CSG sottratte l’una dall’altra, per esempio A-B. Se B è spostata fino a non interferire più con A, la foglia A continua a produrre un effetto grafico (A intera), mentre la foglia B non produce alcun effetto grafico, giacché la primitiva corrispondente è sottratta dal “vuoto”, e quindi diventa una foglia secca. Un altro caso occorre quando si elimina la primitiva minuendo A, mantenendo la primitiva sottraendo B, che diventa quindi sottratta anch’essa dal “vuoto”. Ciò è possibile soltanto se A e B non sono legate allo stesso nodo, vale a dire in caso di sparpagliamento, mentre se A e B appartengono allo stesso nodo non è possibile eliminare A lasciando B. Questi casi sono frequenti in solidi CSG molto complessi non strutturati e possono causare gravi problemi di update in caso di modifica.

 

 

Feature globali e Parti

Un oggetto a seconda della soluzione progettuale può essere una feature globale o una parte

Esempio

Pannello frontale di uno chassis di  apparato elettronico: parete rettangolare a spessore sottile, che presenta alcune dime di foratura per il passaggio dei connettori elettrici e fori di vario tipo per l’alloggiamento dei pulsanti.

Feature : costruttivamente ricavato assieme alle pareti laterali e al fondo dello chassis

Parte : costruttivamente ricavato come oggetto a sé, da collegarsi allo chassis tramite viti

Le feature costituiscono la struttura della parte, così come le parti, complesse e basiche, costituiscono la struttura dell’intero  prodotto meccanico (figura box2).

 

Solidi CSG strutturati

Nello sviluppo del software è ormai ben noto, ed applicato da anni, il concetto di programmazione strutturata, che consiste nell’utilizzare esclusivamente le figure sequenza, scelta, ripetizione e abbandono (controllato). In tal modo è possibile isolare idealmente parti ben definite e complete del programma, corrispondenti a sottoproblemi del problema generale, per cui è scritto il programma. Conseguentemente, migliorano notevolmente sia la leggibilità sia la modificabilità, poiché è possibile localizzare le modifiche su un gruppo d’istruzioni facilmente individuabili [3] .

Un’analogia può essere istituita fra la programmazione software e la modellazione di un solido CSG, facendo corrispondere al problema generale, e quindi al programma, il solido CSG, ai sottoproblemi i sottoassiemi dell’intero solido caratterizzati da una precisa identità funzionale e costruttiva, vale a dire le feature, e infine alle istruzioni le primitive CSG.

Lo spirito della programmazione strutturata può essere sintetizzato nella frase: “Il programma non va scritto tanto per la macchina, quanto per gli uomini che lo devono leggere”[6], che può essere parafrasata, nel campo della modellazione CAD, in “Un modello non va creato tanto per la macchina, quanto per gli uomini che lo devono modificare”.

L’analogia citata suggerisce di applicare, nella fase di realizzazione di un solido CSG, una tecnica abbastanza analoga alla programmazione strutturata, raggruppando in una medesima ramificazione dell’albero CSG tutte le primitive costituenti una feature globale del solido: si ottiene così un solido strutturato (figura 2).

 

Vantaggi dei solidi strutturati

Un albero CSG strutturato si configura dunque come un albero di feature, presentando almeno cinque vantaggi fondamentali:

1.      L’albero possiede un vero valore progettuale, in quanto è possibile identificare nelle varie ramificazioni le feature che compongono l’intero pezzo, ovvero i membri di questo che hanno un significato ingegneristico compiuto, in termini funzionali e tecnologici. La navigabilità all’interno dell’albero risulta notevolmente migliorata. 

2.      E’ possibile l’eventuale copia, dall’albero, di una singola feature globale, giacché è selezionabile in blocco la corrispondente ramificazione, potendo così creare la feature come entità disponibile per essere applicata successivamente ad altri solidi CSG.

3.      Le modifiche del solido CSG relative ad una feature sono più controllabili e sicure, perchè sono ben localizzabili nell’albero tutti gli elementi geometrici costituenti. Se questi, invece, sono “sparpagliati” in punti diversi e lontani dell’albero,  può capitare che il sistema, nel ricostruire la storia del solido sia costretto a considerare temporaneamente solidi locali privi di significato fisico [4] , in quanto non corrispondenti a vere feature globali, ma soltanto ad aggregazioni matematiche di primitive geometriche, e quindi si blocca.

4.      L’update del solido CSG è più veloce, poichè l’aggregazione delle sue primitive in ramificazioni-feature dà al sistema la possibilità di identificare come solidi locali intere feature globali, che, se non affette dalla modifica, sono ignorate nella scansione dell’albero durante il processo di update.

5.      Rendendo corrente il solido locale corrispondente ad una feature globale, è possibile lavorare direttamente su quest’ultima, anziché sull’intero solido CSG, con notevole miglioramento delle performance del sistema, migliore comprensione del modello e maggiore aderenza al processo mentale del progettista, che sposta la sua attenzione dall’intero pezzo sulla singola feature su cui sta lavorando.

 

Tecniche di strutturazione

Il modellatore solido di CATIA possiede alcuni utili strumenti, che consentono all’operatore di agire sulla struttura logica dell’albero CSG, in maniera da ottenere una strutturazione di questo in albero di feature.  Tali strumenti danno luogo a due tecniche distinte: la prima opera sullo spazio di lavoro principale, detto Master Workspace, mentre la seconda opera su spazi di lavoro secondari, definiti dall’utente e detti Detail Workspace o semplicemente dettagli.

Prima Tecnica

Lo strumento prioritario per realizzare una modellazione strutturata, nel Master Workspace, consiste nel rendere attivo il solido locale corrispondente alla feature globale su cui si vuole operare. In questo modo, le operazioni e le primitive applicate a questa sono automaticamente aggregate nella ramificazione corrispondente (figura 3). A volte non è possibile rendere attivo o corrente il solido locale [5] su cui s’intende lavorare, ed allora ci si accontenta momentaneamente di accodare alla fine dell’albero CSG le nuove primitive, spostandole poi all’interno dell’albero nella ramificazione corrispondente alla feature cui si riferiscono. Un terzo modo di strutturare l’albero consiste nell’inserire direttamente nella ramificazione corrispondente alla feature la nuova primitiva, tramite operazioni di unione, sottrazione, intersezione, taglio e sewing. Un quarto ed ultimo modo è invece la duplicazione di una primitiva o di una ramificazione dell’albero per mezzo di una trasformazione geometrica (traslazione, rotazione, simmetria) o tramite la creazione di un pattern lineare o circolare: in tal caso le foglie della primitiva duplicata sono create automaticamente da CATIA nel punto dell’albero ove è situata la foglia della primitiva originaria, e non sono quindi accodate.

Seconda Tecnica

In questo secondo caso, si costruisce la feature in un apposito Detail Workspace e si applica come unica entità, chiamata ditto in CATIA, nel Master Workspace, che contiene il solido CSG corrispondente all'intero pezzo. Il concetto di dettaglio e della sua applicazione come puntatore (ditto) è basilare in CATIA, ma è ampiamente diffuso in tutti i sistemi CAD, assumendo denominazioni differenti con qualche lieve differenza operativa. Così in AUTOCAD al dettaglio di CATIA corrisponde il blocco, nel sistema di INTERGRAPH una macro, ecc. Il risultato è un albero CSG automaticamente già strutturato, in quanto formato da macro-foglie corrispondenti ciascuna ad una feature. Le due modalità di visualizzazione dell’albero, espansa e collassata, mostrano tale struttura. Nel modo espanso le singole macro-foglie sono esplose nelle foglie corrispondenti alle primitive grafiche e feature locali della feature globale, dettagliandone così il contenuto geometrico e tecnologico. Nel modo collassato, invece, le macro-foglie rappresentano globalmente la presenza della feature, consentendo una migliore lettura dell’albero CSG in termini di feature globali e di feature locali di assemblaggio. Oltre una migliore navigabilità dell’albero, questo metodo ha il vantaggio di disporre delle singole feature come entità già a se stanti e quindi riutilizzabili. Inoltre, le modifiche sulle singole feature, potendo essere fatte unicamente negli spazi di modellazione ad esse dedicati, creano foglie forzatamente aggregate alle altre della stessa feature, in altre parole la strutturazione dell’albero CSG dell’intero solido è automaticamente garantita anche in fase di modifica.

 

Feature modificabili e non modificabili

La strutturazione dei solidi CSG in alberi di feature presenta anche il vantaggio di consentire la distinzione all’interno del solido di due categorie di feature: quelle modificabili e quelle non modificabili [7]. Le prime esprimono la variabilità e l’evolubilità del progetto e quindi contengono gli assunti del progettista, mentre le seconde esprimono la parte fissa e inviolabile del progetto corrispondente ai dati progettuali imposti dal committente o dalla logica stessa della progettazione, non modificabili dal progettista. Per implementare questa diversa natura delle feature di un pezzo, occorre garantire la modificabilità del primo tipo di feature, conservandone la storia di costruzione e l’eventuale parametrizzazione, e al contrario inibire la modificabilità del secondo tipo di feature, “congelandone” la storia relativa. Ciò è facilmente realizzabile in CATIA trasformando queste ultime in volumi, che sono solidi B-rep e quindi non modificabili.

 

BIBLIOGRAFIA

1.      L. NICOTRA, 1999  - “Modellare per la difesa” - Progettare n° 228 – Gruppo Jackson Editore – Milano

2.      G.PLATONE, 1969 – “La definizione nel contesto linguistico e scientifico” – Archimede anno XXI nn. 3,4,5 – Le Monnier – Firenze.

3.      A.DE PAULIS, P. DI STEFANO, 1999 – “Progettazione orientata ai costi” – Progettare n° 225 – Gruppo Jackson Editore – Milano.

4.      M. PRATT, 1990 – “Solid Modeling - Survey and current Research issues.”

5.      L.DE FLORIANI, E. BRUZZONE , 1992 – “Schemi per la rappresentazione di oggetti solidi”. – Pixel n° 12 – Editrice Il Rostro – Milano

6.      Servizi di Addestramento IBM Italia S.p.A, 1977 - “La programmazione strutturata. Principi e metodi per la progettazione di programmi”.

7.      L. NICOTRA, 1998 – “Il ruolo dei sistemi MCAD all’inizio del 2000” – Trasmissioni di potenza n°3,4 – Tecniche Nuove - Milano

 

Figura 1 -  Solido CSG non strutturato

 

Figura BOX1 - Esempio di feature

Figura BOX2 -  Struttura di un prodotto meccanico

Figura 2 - Il solido di figura 1 strutturato

 

Figura 3 - Modellazione su solido locale



[1] D’ora in avanti parleremo semplicemente di primitive di un solido CSG, con l’accezione più generale di componente o foglia del solido CSG costituita o da un’effettiva primitiva solida (cilindro rotondo, cuboide, toro, sfera, piramide, cono) o da un altro solido ottenuto con lo schema CSG o con altro schema di rappresentazione (sweeping traslazionale, rotazionale, generale, ecc.)

[2] Per Sewing (cucitura) s’intende la relimitazione del solido su una superficie aperta, con il proprio boundary su una faccia del solido.

[3] Le tecniche di programmazione strutturata hanno le loro origini all’inizio degli anni ’60, con le sperimentazioni di programmi privi dell’istruzione “go to” fatte da D.V. Schorre e P.Naur.

[4] Non accettabili dai sistemi CAD di tipo manifold.

[5] Perché per CATIA il solido locale in generale può non costituire una feature.