Schema IFC: dalla versione del file ai dati di un muro, come leggere attributi, proprietà e quantità
La riga FILE_SCHEMA indica quale versione dello schema IFC governa il file. Partendo da un muro, la puntata mostra dove cercare i nove attributi, come leggere i valori ammessi e perché le proprietà e le quantità si trovano in contenitori separati.
Aggiungi Ingenio alle tue fonti preferite
Direttamente su Google, senza notifiche o iscrizioni
Aggiungi Ingenio su Google
Nella puntata precedente abbiamo aperto muro-01.ifc con un editor di testo e abbiamo imparato a leggere una dichiarazione: il numero dell'istanza, la parola chiave, i valori fra parentesi, i riferimenti ad altre istanze. Alla fine eri in grado di seguire la rete dei collegamenti e sapevi che il 3D non racconta (sempre) tutto, anzi...
C'è una riga di quel file che abbiamo letto e non abbiamo spiegato. È la quinta, nell'intestazione:
FILE_SCHEMA(('IFC4'));
Quella riga dice a chi apre il file quale "regolamento" vale per il suo contenuto. Questa puntata parla di quelle regole: cosa sono, dove stanno, chi le scrive. Scarica il PDF (in allegato) per proseguire la lettura e completare l’esercitazione.
Schema IFC: come leggere attributi e proprietà senza fermarsi al 3D | IFC in pratica #2
Indice delle puntate precedenti
- IFC in pratica #0: la guida per governare il BIM
- IFC in pratica #1: la grammatica che il 3D non mostra

Il riassunto delle puntate precedenti
Nella puntata 0 abbiamo detto perché conviene scrivere un modello IFC a mano invece di accettare quello che esce da un pulsante. Nella 1 abbiamo aperto muro-01.ifc con un editor di testo e abbiamo imparato a leggere una riga: il numero che la identifica, la parola che dice che cosa descrive, i valori fra parentesi, i rimandi ad altre righe. Alla fine sapevi seguire la rete dei collegamenti fino a scoprire dove sta il muro e che forma ha. E sapevi che il 3D non racconta tutto.
I 6 concetti che ti servono ora
Ecco 6 termini fondamentali che ti servono per proseguire. Leggili attentamente e prova a fissarne la definizione.
|
Termine |
Concetto da fissare |
Dichiarazione |
È una riga del file. Comincia con # seguito da un numero, che è il suo identificativo in quel file |
Entità |
Il tipo di cosa descritto da una dichiarazione: può essere un elemento, una relazione, un'unità di misura e altro ancora. Nel file è la parola fra "=" e "(", es. IFCWALL |
Attributo |
È uno dei valori fra parentesi. La posizione conta: nel muro il terzo valore è il nome, il nono è il tipo predefinito |
`$` |
È il segno che indica un attributo senza valore. Non è uno zero e non è una stringa vuota: vuol dire che non è stato fornito alcun valore |
Schema |
È il documento ufficiale che stabilisce cosa può stare in un file IFC: quali entità, quali informazioni per ciascuno, quali valori ammessi |
Enumerazione |
È un elenco chiuso di valori ammessi per un attributo. Prevede un punto a inizio e uno a fine parola, es. .STANDARD. |
E al solito hai bisogno di soli due strumenti: un editor di testo per leggere il file e un visualizzatore IFC per vederlo in 3D (ti rimando alla prima puntata IFC in pratica #1).
Cos'è lo schema IFC
Lo schema IFC è un documento pubblico, scritto da buildingSMART International, l'organizzazione che governa lo standard. Contiene l'elenco di
- entità che possono essere dichiarate in un file IFC;
- informazioni che ciascuna può portare;
- valori ammessi per ognuna.
Serve perché due programmi diversi, di due aziende diverse, si scambino lo stesso edificio e ne capiscano la stessa cosa.
Quindi lo schema non è legato a un software, a differenza di quanto si potrebbe pensare. I programmi lo implementano, ciascuno a modo suo ed è da lì che nasce la possibilità che due di essi diano due risposte diverse sullo stesso file.
E non è nemmeno un formato file: è una descrizione formale, cioè scritta in un linguaggio che anche una macchina sa leggere. Da quella descrizione discende come si scrivono i file.
Ha una versione che è fondamentale conoscere: ad esempio, IFC4 non è la stessa cosa di IFC4X3. Un valore ammesso nella prima potrebbe non esistere nella seconda.
Le versioni che puoi trovare scritte in FILE_SCHEMA sono queste:
IFC2X3, la "vecchia" versione, ancora molto diffusa negli scambi;IFC4: la versione su cui lavoriamo in questa collana;IFC4X1, IFC4X2: versioni intermedie confluite nella 4.3. Non le incontrerai quasi mai;IFC4X3, IFC4X3_ADD1, IFC4X3_ADD2, IFC4X3_TC1: la versione per le infrastrutture: strade, ferrovie, ponti, porti. Le sigle in coda sono correzioni successive dello stesso schema.
Queste sono le versioni riconosciute da IfcOpenShell 0.8.5, una delle librerie più usate per leggere l'IFC.
IFC 5 è in sviluppo e ne esiste una versione alpha, ma non è ancora una versione ufficiale da dichiarare nei file che stiamo leggendo. La documentazione è in inglese: non esiste una traduzione italiana ufficiale.
Lo schema IFC è corposo, ma non devi affatto pensare di impararlo a memoria: è uno strumento da consultare all'occorrenza. Il numero di entità varia in funzione della versione.
Le entità definite sono 776 in IFC4 e 876 in IFC 4.3: rappresentano quanti tipi di cosa lo schema prevede - muri, porte, travi, relazioni, unità di misura, tutto.
Di questi, quelli con un GlobalId sono 419 e 484: hanno l'identificativo globale che hai visto nel primo campo del muro e sono le cose che nel file esistono come entità autonome e rintracciabili.
Gli elenchi chiusi di valori sono 207 e 243: il .STANDARD. del muro viene da uno di questi.
Trova la tua versione
Nella puntata 1 abbiamo letto i nove valori del muro e abbiamo dato un nome a ciascuno. Il terzo è il nome, il nono è il tipo predefinito.
Ma chi lo dice? Lo dice lo schema.
Prima guardiamo l'intestazione del nostro file, la riga che abbiamo già letto la volta scorsa:
<b>FILE_SCHEMA(('IFC4'))</b>;
Dice IFC4. Serve per scegliere quale documentazione aprire: cercare "IfcWall" su un motore di ricerca porta spesso alla pagina di un'altra versione, dove i campi non sono gli stessi.
La documentazione ufficiale di IFC4 si chiama IFC4 ADD2 TC1: è la stessa versione con le correzioni pubblicate dopo. L'indirizzo è quello che trovi in fondo alla puntata 1.
Apri la pagina di IfcWall. È lunga. Di tutto quello che contiene ce ne servono due pezzi.
Il primo si chiama Attribute definitions, gli attributi definiti qui. Ce n'è uno solo: PredefinedType, con accanto il numero 9.
Il secondo si chiama Inherited definitions
from
supertypes, gli attributi che arrivano da più in alto. Qui c'è tutto il resto, con accanto a ogni nome il suo numero: GlobalId 1, OwnerHistory 2, Name 3, fino a Tag 8.
Il terzo valore del muro è il nome perché nella colonna dei numeri Name porta il 3.
Troverai anche righe senza numero. Sono collegamenti che lo schema tiene verso altri oggetti e non occupano un posto fra parentesi: per questo confronto contano solo le righe numerate.
Una cosa si vede a colpo d'occhio: i nomi non stanno tutti nello stesso elenco. Name compare sotto IfcRoot, ObjectPlacement sotto IfcProduct. Sono attributi del nostro muro, ma sono definiti più in alto.

IfcWall senza averla guardata porta spesso alla pagina di un'altra versione, dove i campi non sono gli stessi. (Furcolo)Da dove arrivano i 9 attributi del muro
Ora un concetto importantissimo.
Torniamo alla riga del muro, che nella puntata precedente abbiamo smontato pezzo per pezzo:
#31=IFCWALL('0AkzbjHkf4w8BmisasztBE',#5,'Muro 01',$,$,#29,#35,$,.STANDARD.);
Quei nomi arrivano da più in alto e il muro li eredita.
Funziona un po' come una serie di scatole, una dentro l'altra.
La più esterna si chiama IfcRoot ed è la categoria più generale che lo schema conosce: qui nascono i primi quattro attributi, cioè l'identificativo globale, la storia dell'oggetto, il nome e la descrizione.
Il gradino successivo, IfcObjectDefinition, non aggiunge nessun valore fra le parentesi. Porta le relazioni: la possibilità che l'oggetto venga aggregato ad altri, associato a un materiale o definito da informazioni che stanno fuori dalla sua riga.
Poi IfcObject aggiunge il tipo definito dall'utente, IfcProduct la collocazione e la rappresentazione, IfcElement l'etichetta.
Ecco la catena, individuata all'interno dello schema:
IfcWall <- IfcBuildingElement <- IfcElement <- IfcProduct <- IfcObject <- IfcObjectDefinition <- IfcRoot

Sei gradini sopra il muro.
L'identificativo globale viene dall'ultimo gradino, quello più generale, che vale per centinaia di oggetti diversi.
La collocazione e la forma arrivano dal gradino delle cose che stanno in un posto.
Solo il tipo predefinito nasce nel muro ed è il motivo per cui sulla sua pagina compariva da solo.
Ereditare non vuol dire prendere in prestito: Name è un attributo del muro a tutti gli effetti, solo che a definirlo è stata una categoria più generale. Vale la stessa cosa per una porta, per una trave, per una finestra.
🧐NOTA
Se hai capito da dove arrivano i 9 attributi di un muro, hai capito esattamente la struttura di quasi tutti gli oggetti dell'IFC.
Nella versione 4.3 il secondo gradino cambia nome, da IfcBuildingElement a IfcBuiltElement.
Il muro resta lo stesso, i suoi 9 attributi restano gli stessi, ma un documento che nomina la categoria intermedia va aggiornato.
Che cosa puoi scrivere in un attributo
Guarda due dei 9 campi e nota la differenza.

Il terzo campo è il nome: 'Muro 01'. È testo libero: puoi scriverci quello che vuoi, in italiano o in inglese, con o senza numeri. Lo schema chiede soltanto che sia testo.
L'ultimo è il tipo predefinito: .STANDARD. Il punto prima e quello dopo la parola STANDARD non sono decorativi: ci dicono che quel valore è preso da un elenco.
Quel campo si chiama PredefinedType e il suo elenco ha un nome: IfcWallTypeEnum.
Il nome si costruisce sempre allo stesso modo - Ifc, l'oggetto, TypeEnum - quindi le porte pescano da IfcDoorTypeEnum e i solai da IfcSlabTypeEnum.
Per i muri, in IFC4, le voci sono 11.
Eccole tutte:
|
Valore |
Tipologia di muro |
.STANDARD. |
muro dritto, spessore costante per tutta la lunghezza |
.POLYGONAL. |
muro estruso verticalmente, con spessore variabile lungo il percorso |
.SHEAR. |
classificazione legata alla forma del muro; il nome non dichiara una resistenza a taglio |
.SOLIDWALL. |
muro pieno, massiccio |
.ELEMENTEDWALL. |
parete a telaio con montanti, rivestita con lastre, pannelli o intonaco |
.PLUMBINGWALL. |
parete o cavedio che racchiude impianti idraulici, tipicamente nei locali sanitari |
.PARTITIONING. |
tramezzo che divide gli ambienti, generalmente non portante |
.MOVABLE. |
parete mobile |
.PARAPET. |
parapetto |
.USERDEFINED. |
un tipo tuo, che scrivi nel quinto valore della riga |
.NOTDEFINED. |
non specificato |
Una nota sulla versione: in IFC4 ADD2 TC1 la documentazione segnala .POLYGONAL. come deprecato. Resta nell'elenco, ma non va più usato. Un valore, quindi, non si legge senza sapere quale versione dichiara il file.
Quindi, nel nostro caso abbiamo un muro dritto a spessore costante, congruentemente con la geometria 3D.
Gli ultimi due sono:
.USERDEFINED.dice "è una tipologia personalizzata, il nome lo trovi nel quinto valore";.NOTDEFINED.dice "non so che muro sia, oppure non lo dico".
Le ritrovi in fondo a quasi ogni elenco chiuso dell'IFC.
Quindi i muri predefiniti sono 9, più uno personalizzato e uno non definito.
🧐NOTA
Nella versione IFC 4.3 le voci sono 13: sono state aggiunte:
<b>RETAININGWALL</b>, il muro di sostegno
<b>WAVEWALL</b>, il muro frangiflutti.
In questa versione anche .STANDARD. è indicato come deprecato.
Attributo, proprietà, parametro: dove sta ogni informazione
Nella riga del muro abbiamo contato 9 valori fra parentesi. Fin qui li abbiamo chiamati campi, che è la parola di tutti i giorni. La parola dello schema è attributo. Un attributo non lo crei tu: esiste perché lo schema dice che quell'entità ce l'ha. Appena una riga comincia con IFCWALL le nove posizioni ci sono già, anche se non ci scrivi niente - i tre $ della riga del muro sono attributi che esistono e sono vuoti. Il numero e i nomi li decide lo schema: puoi lasciarlo vuoto, non puoi aggiungerne nessuno!
Di un muro vero, però, ti servono anche la resistenza al fuoco, la trasmittanza, la finitura. Nessuna di queste sta fra le parentesi. Non è una dimenticanza: sono proprietà e stanno in un'altra riga del file, raccolte in un contenitore.
E qui c'è la cosa che in un capitolato fa la differenza: le proprietà.

Le proprietà sono di due tipologie: predefinite e personalizzate.
Le proprietà predefinite sono state scritte da buildingSMART. In IFC4 i contenitori ufficiali sono 420, tutti con il nome che comincia per <b>Pset_</b>. Dentro ciascuno i nomi delle proprietà e il tipo di dato sono già decisi. Quello dei muri si chiama Pset_WallCommon e ne contiene 11, fra cui:
- FireRating,
- ThermalTransmittance,
- IsExternal,
- LoadBearing.
Se chiedi una di queste, chiedi una proprietà definita con un nome standard condiviso: i software conformi dovrebbero usare quello stesso nome.
Le personalizzate le inventi tu: un contenitore con il nome che vuoi, dentro le proprietà che servono alla tua commessa. Il prefisso Pset_ però non si usa, perché è riservato ai contenitori ufficiali.
Quindi: i nomi degli attributi li decide lo schema e non si discutono; i nomi delle proprietà predefinite li decide buildingSMART; solo le personalizzate le decide chi scrive il capitolato.
🧐NOTA
Il prefisso Pset_ è riservato ai contenitori scritti da buildingSMART, come Pset_WallCommon. Non nominare il tuo Pset_ qualcosa: mettigli davanti la sigla della commessa o del tuo studio, es. NF_qualcosa o la sigla del tuo ente.
Poi ci sono le quantità. Qto_WallBaseQuantities ne definisce undici: lunghezza, spessore e altezza; area d'impronta lorda e netta; area laterale lorda e netta; volume lordo e netto; peso lordo e netto. I nomi e il significato li stabilisce lo schema; i valori sono prodotti dall'applicazione ed esportati nel file dentro contenitori che cominciano per Qto_.
E il parametro? Nel lessico IFC non è una categoria informativa equivalente ad attributo o proprietà. È una parola utilizzata da alcuni software di authoring.
Quando esporti, un parametro può diventare una proprietà dentro un contenitore, può essere trasformato oppure può essere escluso: dipende dalle regole di esportazione.
[...] CONTINUA LA LETTURA IN PDF IN ALLEGATO.
Scarica il PDF per proseguire la lettura e completare l’esercitazione. Il documento è disponibile gratuitamente previa registrazione o accesso al portale INGENIO.
Cosa ti porti a casa da questa puntata
- Lo schema è un documento pubblico scritto da buildingSMART, non una funzione del tuo software: dice quali entità possono esistere in un file IFC, quali informazioni può portare ciascuna e quali valori sono ammessi.
- La versione conta molto:
FILE_SCHEMA, in cima al file, dice quale documentazione devi aprire. Un valore ammesso in IFC4 può non esistere in IFC4.3 e viceversa. - I 9 attributi del muro arrivano quasi tutti da più in alto. Il muro li eredita e sono suoi a tutti gli effetti: solo il tipo predefinito nasce nel muro.
- Un attributo non lo crei tu: esiste perché lo schema dice che quell'entità ce l'ha. Puoi lasciarlo vuoto, non puoi aggiungerne uno.
- Attributo, proprietà, quantità e parametro non sono sinonimi. Gli attributi stanno fra le parentesi; proprietà e quantità stanno in contenitori a parte, agganciati al muro da una terza riga; parametro non è una categoria informativa dell'IFC.
Nella prossima puntata
Opereremo sul nostro file muro-01.ifc e modificheremo una riga: quella che dichiara l'unità di misura delle lunghezze. Nel file il muro è lungo 4, spesso 0,2 e alto 3. Quelle cifre non cambiano di una virgola, ma cambiando l'unità diventano quattro millimetri invece di quattro metri.
Vedremo dove si trova l'unità di misura, che cosa vede chi apre il file nel visualizzatore e che cosa succede quando due file della stessa commessa dichiarano cose diverse.
NOTE: Contenuto a cura di Nicola Furcolo, con supporto di strumenti di IA.
FAQ TECNICHE: Schema IFC: leggere attributi, proprietà e versioni del modello BIM
Che cos’è lo schema IFC e quale rapporto ha con il file .ifc?
Lo schema definisce formalmente entità, attributi, relazioni e vincoli del modello informativo. Il file contiene istanze e valori organizzati secondo lo schema dichiarato.
Nell’esempio dell’articolo, la struttura è IFC4 e la rappresentazione testuale utilizza la codifica STEP.
Quando serve consultare lo schema IFC durante una commessa BIM?
Serve quando occorre interpretare un dato esportato, riconoscere un attributo o controllare un valore ammesso.
È utile anche per distinguere le informazioni previste dallo standard dalle proprietà richieste dal capitolato.
La lettura del file aiuta a verificare ciò che è stato scambiato, oltre alla sola rappresentazione geometrica.
Quali norme riguardano lo schema IFC e la sua rappresentazione testuale?
La UNI EN ISO 16739-1:2024 riguarda lo schema dati IFC per lo scambio informativo nelle costruzioni e nel facility management.
La ISO 10303-11 definisce il linguaggio EXPRESS; la ISO 10303-21 riguarda la codifica testuale della struttura di scambio.
Sono livelli distinti: modello dei dati, linguaggio di definizione e rappresentazione nel file.
Quale vantaggio offre distinguere attributi, proprietà e quantità?
Permette di cercare ogni informazione nella struttura appropriata e formulare richieste di consegna più precise.
Gli attributi appartengono alla definizione dell’entità; proprietà e quantità sono organizzate in strutture dedicate.
Un parametro del software di authoring richiede una regola di esportazione: il suo nome nell’interfaccia non dimostra dove finirà nel file IFC.
Come si leggono i 9 attributi di IfcWall in IFC4?
Si confronta l’ordine dei valori con gli attributi espliciti indicati nella documentazione della versione scelta.
Otto attributi provengono dai supertipi, mentre PredefinedType è definito in IfcWall e occupa la nona posizione.
Gli attributi inversi non aggiungono posizioni alla dichiarazione; se PredefinedType vale USERDEFINED, deve essere valorizzato ObjectType.
Quali controlli mantenere quando cambiano software o impostazioni di esportazione?
Registrare versione dello schema, configurazione di esportazione e requisiti informativi della consegna.
Ripetere il controllo di attributi, proprietà, quantità e unità su un campione rappresentativo dopo gli aggiornamenti.
L’apertura nel visualizzatore non dimostra, da sola, la completezza dei dati richiesti: nel contributo manca un esempio documentato di controllo prima e dopo l’esportazione.
AI - Intelligenza Artificiale
Tutto sull’intelligenza artificiale nel settore AEC: progettazione, BIM, cantiere, manutenzione e gestione tecnica. Scopri come l’AI sta cambiando il lavoro dei professionisti delle costruzioni.
BIM
Il BIM è il metodo digitale che sta rivoluzionando il mondo delle costruzioni. Su INGENIO trovi articoli e guide su normativa, ruoli, interoperabilità e innovazioni per la progettazione e la gestione dell’opera.
Costruzioni
Costruzioni: su INGENIO articoli tecnici, normative e innovazioni per progettare, realizzare e gestire opere edilizie e infrastrutture.
Digitalizzazione
Scopri la digitalizzazione in edilizia: BIM, digital twin, cantiere digitale, piattaforme collaborative e normative. Su INGENIO articoli tecnici e casi reali per innovare il mondo delle costruzioni.
Condividi su: Facebook LinkedIn Twitter WhatsApp
