I mobili in Mobilia sono rappresentatati per un albero di sotto elementi, che rispecchiano abbastanza fedelmente la struttura di un mobile nella realtà
Per comprendere appieno come è memorizzato un elemento in Mobilia, ricorreremo ad un semplice esempio, realizzando un tavolo estremamente sobrio, composto solamente da cinque parallelepipedi: il piano d'appoggio e le quattro gambe, come nelle immagini sottostanti.


In linea di principio basterebbe descrivere matematicamente i cinque parallelepipedi, con le specifiche dimensioni e posizioni espresse sugli assi XYZ di uno spazio tridimensionale, per mettere un programma di grafica 3D nelle condizioni di disegnare il tavolo:
dimensioni posizioni x y z x y z piano 2000 20 1200 0 800 0 prima gamba 30 800 30 20 0 20 seconda gamba 30 800 30 1800 0 20 terza gamba 30 800 30 20 0 1000 quarta gamba 30 800 30 1800 0 1000
Nota: tra le molte convenzioni in uso per designare i tre assi, Mobilia utilizza la seguente:
X - da sinistra a destra,
Y - dal basso verso l'alto,
Z - da dietro verso davantiOgni elemento 'vive' nel suo sistema di coordinate locale, con tutti i suoi sottoelementi relativi allo (0,0,0) locale, questo sistema locale é poi riposizionato nel sistema di coordinate globali (quello della stanza).
Queste informazioni vengono fornite al programma CAD in vari modi, dipendenti dal programma in uso, con il mouse, la tastiera, una combinazione di entrambe, come superfici, o come solidi ecc, vedremo più avanti il metodo scelto da Mobilia per fornire queste informazioni.
Cosa accade, tuttavia, se vogliamo cambiare le dimensioni di questo semplice elemento? Accade che, con le informazioni di cui disponiamo, non siamo in grado di compiere questa basilare operazione in maniera automatica: dovremo modificare i dati relativi a ciascun parallelepipedo per ridimensionarlo e riposizionarlo in base alle nuove misure; invece quindi di dare un semplice comando del tipo "allunga il tavolo di venti centimetri", dovremo aggiornare la dimensione del piano e la posizione della seconda e della quarta gamba:
Questo è esattamente il tipo di problema che assilla chi opera nel campo dell'arredamento utilizzando i tradizionali programmi di CAD: una banale modifica ad un singolo elemento può comportare la necessità di dover correggere le informazioni di un numero spropositato di oggetti più o meno direttamente collegati.
Peggio ancora, se il mobile e' stato inserito nel programma come "simbolo", il suo ridimensionamento comporterà il ridimensionamento proporzionale di tutti gli elementi del mobile e delle loro posizioni relative. Nel nostro esempio, le gambe diventerebbero con una sezione di 20x22...
Peraltro, esistono ulteriori operazioni che un utente vorrebbe
poter compiere senza tante complicazioni. Tra queste, l'attribuzione
dei colori a specifiche componenti di un mobile. Qualora volessimo
ad esempio colorare il piano del nostro tavolo in un normale CAD,
dovremmo agire su ciascuna delle sei superfici rettangolari che
formano la geometria del piano, o peggio ancora, spostandoli da
un layer ad un latro, mentre sarebbe più semplice ed
immediato
impartire un comando del tipo "colora di blu il piano dell'elemento".
Altri problemi non direttamente risolvibili con normali CAD si trovano nelle varie informazioni codificate per ognuno degli sottoelementi, categorie, varianti, distinte, generazione di codici e prezzatura
Vediamo ora come Mobilia risolve questi problemi.
Mobilia ragiona in termini di ingombro: un ideale parallelepipedo che avvolge l'intero elemento. Il tavolo del nostro esempio avrà un ingombro sugli assi XYZ pari rispettivamente a 2000 per 820 per 1200 millimetri.
L'ingombro assolve anche alla funzione di mantenere le informazioni che identificano l'elemento all'interno del catalogo e che hanno senso per l'elemento nella sua globalità: codice, descrizione, serie di appartenenza. Le varie parti che compongono un elemento (il piano ed ognuna delle quattro gambe, nel caso del nostro tavolo), sono sottoelementi contenuti all'interno dell'ingombro.
Ridimensionare un elemento in Mobilia significa semplicemente
modificarne le dimensioni dell'ingombro i vari sottoelementi
si disporranno e si dimensioneranno di conseguenza in maniera
automatica: il che corrisponde esattamente al modo di vedere le
cose di chi deve disporre degli elementi di arredo in un ambiente.
Perché tutto funzioni correttamente, è necessario
che ciascun sottoelemento sappia come reagire alle modifiche apportate
alle dimensioni dell'ingombro.
Se, ad esempio, aumentiamo l'altezza dell'ingombro del tavolo,
il piano non deve modificare le proprie dimensioni, ma deve invece
apportare degli aggiustamenti alla propria posizione sull'asse
delle Y; al contrario, ciascuna gamba non deve modificare la propria
posizione, mentre è necessario piuttosto che cresca in
altezza dello stesso numero di centimetri di cui è cresciuto
l'ingombro.

Questo meccanismo é esteso ad altri livelli
dell'albero dei
sotto elementi (la modifiche delle dimensioni dell'ingombro provoca la
modifiche delle dimensioni delle ante, che provoca la modifica degli
elementi che compongono le cornici di queste e così via)
altre informazioni sui riposizionamenti
possono
essere trovate in Ridimensionamenti
Le informazioni su quale comportamento assumere quando l'ingombro cambia sono associate a ciascun sottoelemento -insieme agli altri dati utili come la geometria, le dimensioni, la posizione- nel momento in cui esso è creato.
Un elemento, come detto, è un insieme strutturato
di
più sottoelementi legati all'ingombro. Vediamo ora in
dettaglio
cosa implica questa affermazione.
Il tavolo del nostro esempio è visto da chi utilizza Mobilia
come un singolo oggetto: esso viene inserito in una composizione,
spostato, ridimensionato come un tutto unico. Tuttavia, esso si
compone di un insieme di entità (sottoelementi) ben
distinte:
l'ingombro, il piano, le quattro gambe
.
L'ingombro svolge un ruolo particolare nella struttura di un mobile: esso è un sottoelemento al pari degli altri, e dunque è caratterizzato, come vedremo meglio in seguito, dagli stessi attributi dei sottoelementi; ma al tempo stesso, nella sua particolare posizione di superelemento, si fa carico anche di quegli attributi che caratterizzano il mobile nella sua interezza, ed è l'oggetto con cui l'utente generalmente interagisce.
Non tutti i sottoelementi hanno lo stesso ruolo in Mobilia, ci sono con funzione grafica, con funzione produttiva, di appoggio, marcatori di qualche caratteristica del mobile ecc.
Le diverse funzioni dei sottoelementi sono determinate dai valori e assunti dalle varie proprietà del oggetto. Vedremo più avanti in dettaglio ciascuna di queste, qui accenneremo soltanto le più significative.
E' la prima e la più importante delle suddivisioni degli sottoelementi, le varie categorie sono tra le altre
ed altre legate non al tipo di elemento ma bensì alla funzione svolta
Determina l'aspetto geometrico del elemento. Non tutti gli elementi hanno una rappresentazione geometrica, sia per scelte proggetuali (c'è un elemento cerniera per farlo comparire in Distinta Base, ma non c'è bisogno di disegnarlo) sia per la funzione svolta dall'elemento.
I tipi di geometria che un sottoelemento di Mobilia può avere si possono dividere in tre gruppi:
Sono informazioni che controllano il comportamento di un
sottoelemento in risposta a un cambiamento nelle dimensioni del loro
superelemento.
La posizione di un sottoelemento é sempre relativa alla
posizione del proprio superelemento: se il superelemento si sposta, si
sposteranno in ugual misura tutti i suoi sottoelementi, in quanto
cambia l'origine del sistema di coordinate degli sottoelementi.
Ci sono altri attributi, molto specializzati, che controllano diversi aspetti del comportamento dei sottoelementi, per esempio: se sono colorabili o meno, se compaiono in distinta base, se formano una voce indipendente in ordine o preventivo, se appare nelle viste 3D o 2D ecc. molti di questi sono li' per risolvere situazioni molto particolari e' sono poco usati.
Una delle caratteristiche che contribuiscono alla
facilità
d'uso di mobilia e' la semplicità con cui e' possibile
comporre
i diversi elementi di arredo.
Parte del merito di questa funzionalità e' dovuta a gli
elementi snap o calamita.
Gli snap sono quelle freccette blu che appaiono nelle viste 2D di Mobilia e sono i punti di aggancio dei mobili.
Ci sono due tipi di snap, li chiameremo attivi e passivi; ogni elemento può avere uno o più snaps attivi e, nella versione attuale di Mobilia, un unico snap passivo. Gli snaps passivi non sono visibili in Mobilia
Gli snap sono concettualmente dei versori - elementi matematici con un origine e una direzione (vettori senza dimensione)- e il loro funzionamento consiste nel sovrapporre uno snap attivo ad uno passivo, in questa sovrapposizione é lo snap passivo a spostarsi, determinando la posizione finale del mobile a cui appartiene detto snap.
Questa posizione iniziale del mobile può essere poi modificata.
Non c'é bisogno che gli snaps siano definiti esplicitamente nell'elemento, se non ci sono Mobilia crea quelli di default:
Come si é detto, i mobili in Mobilia sono rappresentati da una struttura ad albero.
Ci sono però certi nodi del albero che hanno delle caratteristiche particolari, sono le "Classi di Varianti" e le "Varianti".
La particolarità di questi nodi è che soltanto una variante all'interno di una classe di variante può essere attiva in un dato momento, Mobilia crea poi l'infrastruttura per poter cambiare quale delle varie varianti di una classe di variante é attiva.
Un mobile può avere un numero indeterminato di varianti, e queste a loro volta possono averne altre, creando in questo modo delle intere famiglie di mobili, magari quelle che condividono la stessa scocca ma si differenziano nella disposizione o modello di anta e cassetti (non c'e nessun legame o costrizione in questo).
L'immagine mostra la relazione tra l'albero del mobile e la sua rappresentazione in Mobilia

| Percorso | Codice | Descrizione | Serie |
|---|---|---|---|
| B32:Tre Cassetti | B3C32 | Base 3 Cassetti | Basi |
| B32:Anta:Dx:Piena | BAD32 | Base Anta Dx | Basi |
| B32:Anta:Dx:Vetro | BVD32 | Base Anta Vetro Dx | Basi |
| B32:Anta:Sx:Piena | BAS32 | Base Anta Sx | Basi |
| B32:Anta:Sx:Vetro | BVS32 | Base Anta Vetro Sx | Basi |
| B32:Tre Cassetti | BC | Base 3 Cassetti | Basi |
| B32:Tre Cassetti:# | BC | Base 3 Cassetti | Basi |
| #T. | prefisso costante |
| S | &serie: del top |
| 90 | Larghezza del top in cm |
| 2 | Spesore del top in cm |
| 35 | Profondità del top in cm |
| codice lungo | codice | descrizione |
| #T.S90235 | ABC | Top 90 sp 2cm prof 35 |
| #T.S105235 | CDE | Top 105 sp 2cm prof 35 |
| ... | ... | ... |
| codice listino | codice | prezzo |
| ABC1 | ABC | 123,45 |
| ABC2 | ABC | 234,56 |
| ... | ... | ... |