Torna al blog BIM e IFC
Strumenti e confronti · 2026-10-02 · 11 min
Cosa c'è dentro un file IFC? Il formato spiegato con diagrammi
Un file .ifc è testo semplice che puoi aprire in un editor di codice — e quando sai leggerlo, metà dei misteri di IFC scompaiono. L'intestazione, le istanze numerate, il GlobalId, le relazioni che portano le proprietà: ecco il formato, disegnato.
Cosa c'è dentro un file IFC? Il formato spiegato con diagrammi — IFC Viewer Online article cover
La maggior parte delle persone vede un file IFC solo attraverso un visualizzatore. È un peccato, perché un file .ifc è testo semplice, e dieci minuti passati a leggerne uno spiegano cose che altrimenti restano misteriose: perché i GUID contano, perché una proprietà può «mancare» anche se la vedi, perché i file diventano così grandi, perché un'impostazione sbagliata in esportazione rompe tutto a valle.
Questa guida apre il file e disegna cosa c'è dentro.
Un file IFC in formato STEP (ISO 10303-21): un'intestazione che indica lo schema, poi un'istanza numerata per riga.
In sintesi
- Un file IFC è un elenco di istanze numerate. I numeri sono locali al file e cambiano a ogni esportazione.
- Il GlobalId —la stringa di 22 caratteri dentro ogni istanza— è l'identità pensata per durare.
- Quasi tutto ciò che conta, comprese proprietà e contenimento spaziale, è collegato tramite entità di relazione invece di essere salvato sull'elemento.
L'intestazione: quale schema, quale vista
Il file si apre con ISO-10303-21; e una breve sezione HEADER. Contano tre righe:
- FILE_DESCRIPTION indica la model view definition —Coordination View, Reference View, Design Transfer View—, che definisce il sottoinsieme di IFC che l'esportatore intendeva usare.
- FILE_NAME registra nome del file, data, autore e applicazione di authoring.
- FILE_SCHEMA indica lo schema: IFC2X3, IFC4 o IFC4X3. Ogni riga successiva va letta secondo quello schema; la stessa entità può avere attributi diversi in versioni diverse.
Scegliere tra versioni dello schema è un tema a parte: IFC2x3 vs IFC4.
I dati: un'istanza per riga
Dopo DATA; ogni riga ha la stessa forma: un numero, un nome di entità e un elenco di attributi nell'ordine definito dallo schema.
#245= IFCWALL('1kTvXnbbzCWw8lcMd1dR4o',#2,'Basic Wall:Ext 300',$,$,#210,#240,$,.STANDARD.);
| Elemento | Significato |
|---|
| #245 | Numero di istanza (express ID): locale a questo file |
| '1kTvXnbbz…' | GlobalId: un GUID compresso di 22 caratteri |
| #2 | Riferimento a un'altra istanza (qui, l'owner history) |
| $ | Attributo non valorizzato |
| .STANDARD. | Un valore di enumerazione (il tipo predefinito) |
| #210, #240 | Posizionamento e rappresentazione geometrica, definiti su altre righe |
Quando è il GlobalId stesso a cambiare a ogni esportazione, tutti i processi a valle si rompono insieme. Causa e correzione per ogni strumento di authoring sono in perché i GUID IFC cambiano a ogni esportazione.
Le entità ereditano le une dalle altre
IFC è un modello a oggetti. Un IfcWall è un IfcBuiltElement, che è un IfcElement, un IfcProduct, un IfcObject e infine un IfcRoot — e porta con sé gli attributi di tutti. Ecco perché ogni muro, porta e spazio ha un GlobalId e un Name: vengono da IfcRoot.
Ogni entità eredita gli attributi dei suoi supertipi. Una verifica scritta per IfcElement vale per tutti i muri, le porte e i pilastri sottostanti.
I nomi cambiano tra versioni: quello che IFC4.3 chiama IfcBuiltElement era IfcBuildingElement in IFC2x3 e IFC4. Uno strumento che codifica un nome perde l'altro — uno dei motivi per cui lo stesso modello può superare una verifica in uno strumento e fallirla in un altro.
Anche le relazioni sono entità
La scelta progettuale che rende IFC difficile da leggere all'inizio è anche ciò che lo rende potente: le relazioni sono oggetti a sé. Un muro non ha un elenco delle sue proprietà. Al suo posto, un'istanza IfcRelDefinesByProperties punta al muro e a un property set. Contenimento spaziale, materiali, tipi, aperture e gruppi funzionano allo stesso modo.
Le proprietà vivono nei property set, collegati all'elemento o al suo tipo. Un property set sul tipo vale per ogni occorrenza.
È la radice del falso allarme più comune nelle verifiche di qualità IFC: una proprietà definita sul tipo sembra mancare a uno strumento che legge solo l'occorrenza. Proprietà IFC mancanti dopo l'esportazione spiega le cause reali; leggere i property set in Python mostra come seguire queste relazioni nel codice.
Perché i file IFC diventano così grandi
- La geometria domina. Una facciata triangolata o un componente impiantistico dettagliato possono occupare migliaia di righe; estrusioni e geometria mappata (istanziata) sono molto più piccole.
- I dati ripetuti si ripetono. Gli esportatori che non condividono property set o rappresentazioni scrivono le stesse righe una volta per elemento.
- In STEP semplice nulla è compresso. ifcZIP di solito riduce un file di parecchie volte ed è un formato di consegna sensato quando gli strumenti del destinatario lo accettano.
I modi sicuri per ridurre i file sono in come ridurre le dimensioni di un file IFC. E quando un file è abbastanza grande da bloccare il browser, vedi file IFC grandi che bloccano il browser.
Leggere un file da soli
- Aprilo in un editor di testo Qualsiasi editor che regga file grandi. Guarda prima l'intestazione: schema e model view ti dicono cosa aspettarti.
- Cerca l'entità che ti interessa IFCWALL(, IFCSPACE(, IFCBUILDINGSTOREY(. Anche solo il conteggio è un controllo rapido.
- Segui i riferimenti di un elemento Partendo da un muro, cerca il suo numero # per trovare le relazioni che puntano a esso: contenimento, proprietà, tipo.
- Poi passa a un visualizzatore Le stesse informazioni, navigabili: l'albero spaziale, il pannello proprietà e una validazione che verifica queste relazioni per te.
Come gli elementi si organizzano in piani e spazi è il tema de la struttura spaziale IFC spiegata.
Cosa c'è dentro un file IFC? Il formato spiegato con diagrammi