BIM | Costruzioni | Digitalizzazione | Progettazione
Data Pubblicazione:

Leggere un file IFC: la grammatica che il 3D non mostra

Che cosa c’è dentro un file IFC? In questa prima puntata di “IFC in pratica” partiamo da un solo muro per imparare a leggere il formato e capire le regole di base. Poi facciamo un esperimento: cancelliamo una relazione e osserviamo che cosa cambia. Un percorso guidato per capire perché guardare il 3D non basta a comprendere un modello BIM.

Aggiungi Ingenio alle tue fonti preferite Direttamente su Google, senza notifiche o iscrizioni Aggiungi Ingenio su Google

Dopo aver introdotto nella Puntata 0 gli strumenti e il metodo per iniziare a leggere un file IFC, entriamo ora nel vivo lavorando direttamente sul modello.

Quello che proponiamo è un modello IFC volutamente elementare: un edificio, un solo piano, un solo muro. Proprio per questo possiamo aprirlo, leggerlo e capire come è costruito, senza perderci nella complessità di un progetto reale.

Impareremo a riconoscere gli elementi fondamentali della sintassi, seguiremo i riferimenti che collegano tra loro le diverse istanze e vedremo come le informazioni del modello si tengono insieme. Poi faremo una piccola modifica: cancelleremo una relazione e riapriremo il file nel visualizzatore. A prima vista non sarà cambiato nulla. La vista 3D resterà identica. Il modello informativo, no.


La grammatica minima per iniziare a leggere un IFC

Per seguire passo dopo passo l’esempio di questa puntata, scarica il modello .ifc [muro-01.ifc]. É il modello su cui lavoreremo e che utilizzeremo per comprendere concretamente come è strutturato un file IFC.

Il modello IFC rappresenta un edificio volutamente elementare, composto da un solo piano e un unico muro. È stato scritto a mano per rendere ogni riga leggibile e comprensibile e contiene appena 35 dichiarazioni, destinate ad aumentare progressivamente nelle prossime puntate.

Per seguire l’esempio, tuttavia ti serviranno due strumenti:

  • un editor di testo, per leggere il contenuto del file;
  • un visualizzatore IFC, per osservarne il modello 3D.

Non li hai ancora? Nella Puntata 0 trovi gli strumenti necessari e le indicazioni per prepararli prima di proseguire.

Tieni aperti sia l’editor sia il visualizzatore: nel corso dell’esempio li utilizzeremo insieme.

Più avanti creerai anche un secondo file modificando direttamente direttamente muro-01.ifc. Non devi scaricarlo: lo produrrai tu in pochi passaggi, ed è proprio questo confronto che ci permetterà di capire che cosa cambia.

Apriamo il file IFC nell'editor di testo

Apri muro-01.ifc nell’editor di testo. Tieni aperto anche il visualizzatore IFC: ci servirà nell’ultima prova.

A prima vista, un file IFC può sembrare una sequenza quasi indecifrabile di lettere, numeri e simboli. In realtà segue una sintassi molto regolare. Non serve conoscerla tutta per cominciare. Basta imparare a riconoscere alcuni elementi ricorrenti: identificatori, parole chiave, riferimenti, valori e segni di punteggiatura sintattica.

Le prime righe che vedi non descrivono ancora l'edificio: sono l'intestazione del file, cioè le informazioni sul file stesso e le leggeremo fra poco.

Scorri fino alla riga DATA: da lì in avanti comincia il modello.

Il file muro-01.ifc aperto in un editor di testo: l'intestazione nelle prime righe, la sezione DATA con le 35 dichiarazioni e, evidenziata, la riga #31 che dichiara il muro.
Il file muro-01.ifc aperto in un editor di testo: l'intestazione nelle prime righe, la sezione DATA con le 35 dichiarazioni e, evidenziata, la riga #31 che dichiara il muro. (Credits: Nicola Furcolo)

La sintassi della dichiarazione del muro nel file IFC

Partiamo dalla dichiarazione del nostro muro (riga 39):

#31=IFCWALL('0AkzbjHkf4w8BmisasztBE',#5,'Muro 01',$,$,#29,#35,$,.STANDARD.);

Ci sono una dichiarazione e 9 attributi (quelli tra parentesi). Non proviamo ancora a capire che cosa significhino i nove attributi.

Prima impariamo semplicemente a riconoscere come è costruita la dichiarazione.

✎ Nota: la sintassi STEP in breve
La grammatica che stai imparando a riconoscere non appartiene all'IFC: è la codifica testuale definita dalla ISO 10303-21, nota come STEP Physical File e usata anche da altri modelli dati basati su STEP.
L'IFC ci scrive dentro le proprie entità.
Nella terminologia STEP, #31 (che trovi di seguito) è un entity instance name, IFCWALL è una keyword, 'Muro 01' è una string e .STANDARD. è una enumeration.
I valori fra parentesi sono i parametri della dichiarazione e la loro posizione stabilisce a quale attributo dell'entità ciascuno si riferisce.

La dichiarazione #31 di IfcWall: identificatore, tipo di entità, attributi e riferimenti che descrivono il muro nel file IFC.
La dichiarazione #31 di IfcWall: identificatore, tipo di entità, attributi e riferimenti che descrivono il muro nel file IFC. (Credits: Nicola Furcolo)

Dichiarazione

Elemento
Esempio
Cosa significa
Come ci aiuta a leggere il file
identificatore dell’istanza (entity instance name)
#31
identifica questa istanza all’interno del file
quando #31 compare in un’altra dichiarazione, quella dichiarazione sta facendo riferimento a questa istanza
assegnazione
=
associa l’identificatore alla dichiarazione che segue
separa il nome dell’istanza dalla sua definizione
parola chiave (keyword)
IFCWALL
indica quale entità viene istanziata
ci dice che #31 è un’istanza di IfcWall
parentesi
( ... )
racchiudono i parametri della dichiarazione
delimitano la sequenza dei valori assegnati agli attributi
virgola
,
separa un parametro dal successivo
permette di distinguere valori la cui posizione è significativa
stringa (string)
'Muro 01'
rappresenta un valore testuale
permette di riconoscere nomi, descrizioni e altri testi
riferimento
#29
richiama un’altra istanza del file
permette di seguire la rete dei collegamenti
valore non fornito
$
indica che in quella posizione non è stato fornito un valore
segnala un attributo non valorizzato nell’exchange file
enumerazione (enumeration)
.STANDARD.
rappresenta uno dei valori previsti da un insieme definito
esprime una scelta codificata dallo schema
punto e virgola
;
termina la dichiarazione
indica dove finisce l’istanza

La distinzione è utile anche per non confondere due identificatori che vedremo spesso: #31 identifica un’istanza dentro questo specifico file; il GlobalId dell’oggetto, invece, è pensato per identificarlo globalmente.

Più avanti incontreremo anche l’asterisco *. Nella sintassi STEP ha un significato diverso da $: indica un valore derivato secondo le regole dello schema.

La riga del muro in dettaglio

Ora rileggiamo la stessa dichiarazione, questa volta concentrandoci su cosa è contenuto tra parentesi e in particolare sulla posizione.

#31=IFCWALL('0AkzbjHkf4w8BmisasztBE',#5,'Muro 01',$,$,#29,#35,$,.STANDARD.);

I nove valori corrispondono agli attributi espliciti di IfcWall, compresi quelli ereditati dalle entità da cui IfcWall discende.

Posizione
Attributo
Valore
Cosa ci dice
1
GlobalId
'0AkzbjHkf4w8BmisasztBE'
l’identificativo globale dell’oggetto
2
OwnerHistory
#5
rimanda alle informazioni sull’origine e sulla storia dell’oggetto
3
Name
'Muro 01'
il nome assegnato al muro
4
Description
$
nessuna descrizione è stata fornita
5
ObjectType
$
nessun tipo definito dall’utente è stato specificato
6
ObjectPlacement
#29
dove sta: vai a #29
7
Representation
#35
che forma ha: vai a #35
8
Tag
$
nessun identificativo o tag aggiuntivo è stato indicato
9
PredefinedType
.STANDARD.
il tipo predefinito dichiarato è STANDARD

Sono i nomi che gli attributi hanno nello schema. Impararli qui è utile perché li ritroverai, con modalità diverse a seconda del software, anche nei pannelli delle proprietà del visualizzatore.

GlobalId, IfcGloballyUniqueId e GUID

Il primo campo merita una nota.

Nello schema l’attributo si chiama GlobalId e il suo tipo si chiama IfcGloballyUniqueId. Nell’uso quotidiano sentirai molto spesso parlare di GUID o IFC GUID riferendosi a quel valore.

Conviene quindi tenere distinti i concetti:

  • GlobalId è il nome dell’attributo;
  • IfcGloballyUniqueId è il suo tipo;
  • GUID è il termine comunemente usato quando si parla dell’identificativo.

✎ Nota sul "tipo"
Il tipo è la definizione di che cosa può essere scritto in quel campo: quali valori sono ammessi e in quale forma. IfcGloballyUniqueId stabilisce che il valore è una stringa di 22 caratteri esatti. Ogni attributo dello schema ha un proprio tipo e da lì passa una parte della verifica: se in GlobalId finisse una stringa di quindici caratteri, il file non rispetterebbe più la definizione del tipo. Ci torneremo dopo.

E soprattutto GlobalId non va confuso con #31.

#31 identifica l’istanza all’interno di questo specifico exchange file e può cambiare quando il file viene riscritto. Il GlobalId, invece, è pensato per identificare globalmente l’oggetto.

Qui cambia la prospettiva. I campi 6 e 7 non contengono direttamente la posizione e la forma: contengono riferimenti ad altre istanze che le descrivono.

Un IFC quindi non è un elenco di oggetti.

È una rete di istanze collegate da riferimenti.

🧐 Tips!
L’IFC non si legge dall’alto in basso come un documento: si segue come una mappa!

E adesso guarda meglio quei 9 campi: c’è scritto a quale piano appartiene il muro?

No! L’appartenenza al piano non sta nella riga del muro. La ritroveremo più avanti, con le relazioni.

Un oggetto IFC non contiene tutto: posizione, forma e appartenenza emergono dalla rete delle istanze e delle relazioni. (Credits: Nicola Furcolo)
Un oggetto IFC non contiene tutto: posizione, forma e appartenenza emergono dalla rete delle istanze e delle relazioni. (Credits: Nicola Furcolo)

L’intestazione IFC

Ora che sai orientarti con la terminologia (sai quasi leggere un IFC), torna in cima al file.

ISO-10303-21;

HEADER;

FILE_DESCRIPTION((''),'2;1');

FILE_NAME('muro-01.ifc','2026-08-29T10:00:00',('Nicola Furcolo'),('IFC in pratica'),'Editor manuale','Notepad++','');

FILE_SCHEMA(('IFC4'));

ENDSEC;

DATA;

  • ISO-10303-21; dichiara che il file usa la codifica testuale STEP Physical File. È la regola con cui il file è scritto, non una regola specifica dell’IFC: la stessa sintassi è utilizzata anche da altri modelli dati basati su STEP.
  • HEADER; apre l’intestazione.
  • ENDSEC; la chiude.
  • FILE_DESCRIPTION e FILE_NAME descrivono il file: la prima dichiara come è strutturato lo scambio, la seconda riporta nome, data, autore, organizzazione e programmi usati.
  • DATA; apre la sezione che contiene le istanze del modello.
  • FILE_SCHEMA(('IFC4')); ti dice quale versione dello schema stai leggendo: cambiando schema possono cambiare entità, attributi, tipi e regole.

🧐 Tips!
Prenditi qualche minuto per leggere attentamente l’intestazione. Fallo più di una volta. Prova a dare un significato a ogni elemento.
Ricorda: FILE_SCHEMA è una delle prime verifiche da fare quando ricevi un IFC. In base alla versione IFC possono cambiare entità, attributi, tipi e regole.

Ricorda! → L'intestazione descrive il file, non il modello. Nome, data, autore e applicazioni dichiarate in FILE_NAME sono metadati, cioè dati sul file e non sul suo contenuto: dicono come e da chi quel file è stato prodotto, non che cosa c'è dentro. Sono l'equivalente della targhetta su una scatola, che riporta chi l'ha imballata e quando, non l'elenco di ciò che contiene. Per sapere che cosa c'è nel modello devi entrare nella sezione DATA.

L’ordine non conta: contano i riferimenti!

Il nostro file mette le dichiarazioni in questo ordine.

Dichiarazioni
Cosa c’è
#1-#5
persona, organizzazione, applicazione e OwnerHistory
#6-#10
origine e contesto geometrico, compresa la tolleranza
#11-#14
unità di misura
#15
il progetto, radice della struttura spaziale
#16-#19
il sito e la relazione che lo lega al progetto
#20-#23
l’edificio e la relazione che lo lega al sito
#24-#27
il piano e la relazione che lo lega all’edificio
#28-#29
il posizionamento del muro
#30
la relazione che contiene il muro nel piano
#31
il muro
#32-#35
la rappresentazione geometrica del muro

Guarda le ultime tre righe della tabella e nota due cose che possono sembrare errori, ma non lo sono.

La relazione #30 nomina il muro #31 prima che il muro sia dichiarato. E il muro #31 rimanda a #35 per la propria rappresentazione, che arriva più avanti nel testo.

Nessuna delle due è un problema. All’interno della sezione DATA i riferimenti vengono risolti attraverso gli identificatori delle istanze, non in base alla loro posizione testuale. Per questo puoi incontrare sia riferimenti all’indietro sia riferimenti in avanti.

È la ragione per cui leggere un IFC semplicemente dall’alto in basso funziona poco: conviene partire da un’istanza e seguirne i rimandi.

Per questo può essere utile un tool come IFC Language Tools, l'estensione per Visual Studio Code che abbiamo visto nella puntata 0. Fa per te quello che finora hai fatto a mano: porti il cursore su un riferimento, per esempio #26 dentro la relazione #27 e hai:

  • "Go to Definition" salti direttamente alla riga che dichiara il piano.
  • "Find All References" ti mostra tutte le dichiarazioni che nominano l'istanza su cui sei: partendo dal muro scopri in un colpo solo chi lo richiama.
IFC Language Tools in Visual Studio Code: dal menu contestuale si seguono i riferimenti tra le istanze senza cercarli a mano.
IFC Language Tools in Visual Studio Code: dal menu contestuale si seguono i riferimenti tra le istanze senza cercarli a mano. (Credits: Nicola Furcolo)

Le unità: 4 righe che valgono per tutto il progetto

Presta attenzione a queste 4 righe.

#11=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.);
#12=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.);
#13=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.);
#14=IFCUNITASSIGNMENT((#11,#12,#13));

Leggiamo la prima. Ha quattro parametri.

Posizione
Valore
Cosa ci dice
1
*
le dimensioni fisiche dell'unità non sono scritte nel file: le ricava lo schema
2
.LENGTHUNIT.
è un’unità di lunghezza
3
$
il prefisso non è fornito
4
.METRE.
l’unità è il metro

Nella stessa riga convivono i due simboli che la prima tabella teneva distinti e adesso si vede bene la differenza.

  • $ segnala un valore che non è stato fornito ma che potrebbe esserci.
  • * segnala un valore che non va scritto affatto, perché lo schema lo ricava da sé.

Il primo è un'assenza, il secondo una regola.

Presta attenzione al terzo campo: se al posto di $ ci fosse .MILLI., l'unità diventerebbe il millimetro: i numeri scritti nella geometria resterebbero identici, ma il muro da 4 metri diventerebbe un muro da 4 millimetri.

Le altre due righe fanno lo stesso lavoro per le aree e per i volumi.

#14 le raccoglie in un unico insieme, che il progetto richiama come proprio riferimento per le grandezze corrispondenti.

Nelle puntate successive cambieremo quel $ e verificheremo cosa accade. Per ora ci basta sapere dov'è.

Dove sta il muro? La “catena” dei posizionamenti

Il meccanismo della catena dei posizionamenti ricorda molto (almeno a me!) i rimandi normativi, quando una nuova disposizione rimanda a una precedente, che a sua volta fa riferimento ad un’altra…

Il campo 6 del muro diceva #29. Ricordi?

L’istanza #29 si trova alla riga 37.

Cerca #29

#29=IFCLOCALPLACEMENT(#25,#28);

Ritroviamo IfcLocalPlacement, che ha due argomenti:

  • il primo indica il posizionamento rispetto al quale si colloca l’oggetto;
  • il secondo descrive il posizionamento relativo.

Il muro è collocato rispetto a #25.

Cerca #25 e prosegui, ricostruendo la catena.

#29=IFCLOCALPLACEMENT(#25,#28); -> il muro, rispetto al piano
#25=IFCLOCALPLACEMENT(#21,#24); -> il piano, rispetto all’edificio
#21=IFCLOCALPLACEMENT(#17,#20); -> l’edificio, rispetto al sito
#17=IFCLOCALPLACEMENT($,#16); -> il sito, senza PlacementRelTo

Osserva che in IfcLocalPlacement gli argomenti sono due:

  1. PlacementRelTo: è un riferimento a un altro posizionamento, quello rispetto al quale ci si colloca. Nel caso del muro è #25, cioè il posizionamento del piano. Quando vale $ la catena finisce e il posizionamento è riferito al sistema di coordinate del contesto.
  2. RelativePlacement: è la collocazione vera e propria, espressa rispetto al riferimento indicato dal primo: origine e orientamento. Nel caso del muro è #28, che infatti è un IfcAxis2Placement3D.

In pratica: il primo dice rispetto a che cosa, il secondo dice dove e come.

Nel tuo file lo puoi verificare subito. #28=IFCAXIS2PLACEMENT3D(#8,$,$) e #8=IFCCARTESIANPOINT((0.,0.,0.)), quindi il muro sta nell'origine del piano, senza rotazione; e siccome anche gli altri anelli usano tutti #8, ogni livello coincide con l'origine di quello sopra.

In definitiva, il muro finisce nell'origine assoluta, ma per una catena di quattro passaggi, non perché sia stato collocato lì direttamente.

Abbiamo ricostruito i quattro anelli. Il muro non sa dove si trova in assoluto: sa dove si trova rispetto al piano. Il piano lo sa rispetto all'edificio, l'edificio rispetto al sito.

La posizione vera si ottiene solo percorrendo tutta la catena.

Nell'ultimo anello il primo campo è $: questo campo non è una mancanza, è la fine della catena.

Il sito non si posiziona rispetto a nient'altro, perché è riferito direttamente al sistema di coordinate del contesto in cui viene interpretato.

La logica di base

Ha una conseguenza pratica che vale la pena tenere a mente. Se sposti il piano cambiandone il posizionamento, il muro lo segue: la sua posizione è definita rispetto a quella catena, non in assoluto. Per questo, quando un modello si apre con elementi fuori posto, la geometria non è l'unico indiziato: il problema può stare nei riferimenti di posizionamento.

Ricorda la logica di base
Tutta questa catena ha una conseguenza pratica: se sposti il piano cambiandone il posizionamento, il muro lo segue; la sua posizione è definita rispetto a quella catena, non in assoluto. Per questo, quando un modello si apre con elementi fuori posto, la geometria non è l'unico indiziato: il problema può stare nei riferimenti di posizionamento.

La posizione del muro è relativa: dal muro si risale al piano, all’edificio e al sito lungo la catena dei posizionamenti. (Credits: Nicola Furcolo)

La “ricetta” che costruisce il muro

Da dove si ricava la lunghezza del muro di 4 m?

Il campo 7 diceva #35. Seguiamo anche questo, perché sono le quattro dichiarazioni che producono la geometria che vediamo a schermo.

#32=IFCRECTANGLEPROFILEDEF(.AREA.,$,$,4.0,0.2);
#33=IFCEXTRUDEDAREASOLID(#32,#9,#6,3.0);
#34=IFCSHAPEREPRESENTATION(#10,'Body','SweptSolid',(#33));
#35=IFCPRODUCTDEFINITIONSHAPE($,$,(#34));

In pratica:

  • #32 definisce un profilo rettangolare di 4,00 per 0,20.
  • #33 lo estrude di 3,00 nella direzione #6.
  • #34 dichiara quel solido come rappresentazione Body dell’oggetto.
  • #35 raccoglie la rappresentazione e viene richiamata dal muro.

Nel nostro file la geometria non è memorizzata come un semplice elenco di vertici: è costruita secondo una precisa ricetta: un rettangolo definisce il profilo, un’estrusione gli dà altezza e le rappresentazioni successive collegano quel solido al muro.

E i numeri sono interpretati in metri perché lo stabiliscono le unità assegnate al progetto, non perché la parola “metri” compaia nella riga della geometria.

Le 4 dichiarazioni che costruiscono la forma del muro: un profilo rettangolare, la sua estrusione, la rappresentazione Body e la definizione richiamata dal muro. (Credits: Nicola Furcolo)

Aggregare non significa contenere

Nel file ci sono due tipi di relazione che a prima vista sembrano fare la stessa cosa, mettere qualcosa dentro qualcos'altro. In realtà dicono cose diverse e la differenza conta.

Cerca IFCRELAGGREGATES.

Sono tre:

#19=IFCRELAGGREGATES('1Fn4ntlX9D2xvUHtgTyAYK',#5,$,$,#15,(#18));
#23=IFCRELAGGREGATES('24OxC3D3959fHiM4O7B1bi',#5,$,$,#18,(#22));
#27=IFCRELAGGREGATES('12FLdAXmTBI8F0YjNP1E4c',#5,$,$,#22,(#26));

Guarda gli ultimi due campi di #19: #15 e (#18), cioè il progetto e un insieme che contiene il sito. La relazione descrive una decomposizione parte-tutto: il sito fa parte del progetto. Le altre due fanno lo stesso per l'edificio e per il piano.

Tre relazioni e la struttura spaziale del modello è costruita.

Adesso cerca IFCRELCONTAINEDINSPATIALSTRUCTURE. È una sola.

#30=IFCRELCONTAINEDINSPATIALSTRUCTURE('3sEgWBMS14TgCC3XUsytoq',#5,$,$,(#31),#26);

Anche qui contano gli ultimi due campi:

  • (#31) è l’insieme degli elementi correlati, cioè il muro;
  • #26 è la struttura spaziale che li contiene, cioè il piano terra.
relazione
significato
esempio nel nostro file
IfcRelAggregates
decomposizione parte-tutto
il piano fa parte dell’edificio
IfcRelContainedInSpatialStructure
contenimento spaziale
il muro è contenuto nel piano terra

La differenza è la seguente: l'aggregazione costruisce la struttura spaziale, incastrando progetto, sito, edificio e piano uno dentro l'altro come scatole cinesi.

Il contenimento fa un'altra cosa: prende un elemento fisico - il muro - e lo assegna a una di quelle scatole.

La prima dice di che cosa è fatto il modello, la seconda dice dove stanno le cose.

Ed ecco la risposta alla domanda rimasta aperta all'inizio. Cercavamo il piano dentro la riga del muro e non lo trovavamo, perché non è lì che sta scritto.

L'appartenenza del muro al piano non è un attributo di IFCWALL, è una relazione separata che vive in un'altra riga del file e nomina il muro dal di fuori.

IfcRelAggregates descrive la decomposizione parte-tutto; IfcRelContainedInSpatialStructure assegna gli elementi a una struttura spaziale. (Credits: Nicola Furcolo)

Cancelliamo una relazione? Il 3D non cambia!

Adesso facciamo una prova.

Cancella la dichiarazione #30 per intero, fino al punto e virgola compreso. Non toccare nient'altro.

Salva con il nome “muro-01-senza-contenimento.ifc” e apri anche questo nel visualizzatore.

Guarda il 3D.

Il muro è ancora lì, allo stesso posto, della stessa forma. Nulla lascia sospettare che il file sia cambiato.

Guarda anche l'albero della struttura di progetto, quello con Progetto, Sito, Edificio e Piano terra.

Il muro non c'è più sotto il piano. A seconda del programma può sparire del tutto oppure ricomparire in un ramo a parte, fra gli elementi orfani o non assegnati.

Il perché dovresti già saperlo. Posizione e rappresentazione restano raggiungibili da IFCWALL attraverso #29 e #35: cancellando #30 non hai toccato né il posizionamento né la geometria. Hai tolto il contenimento spaziale che collegava il muro al piano.

Hai cancellato una relazione del modello senza toccare la geometria. Il 3D non è il modello: è una delle rappresentazioni che il modello permette di ottenere.

Una avvertenza: il comportamento dell’albero dipende dal programma. Alcuni visualizzatori raccolgono gli elementi orfani in un ramo separato. Se il tuo lo fa, la conclusione non cambia. Ricorda inoltre di riaprire il file dopo averlo salvato: molti visualizzatori non si accorgono automaticamente che il file su disco è cambiato.

Cancellando #30 il 3D resta identico, ma il muro perde il collegamento con il piano nella struttura spaziale. (Credits: Nicola Furcolo)

[...] CONTINUA LA LETTURA IN PDF IN ALLEGATO.

La lettura non si ferma alla geometria. Nel PDF allegato l’approfondimento prosegue distinguendo tra leggibilità del file, rappresentazione 3D e validità del modello.

Si entra nel merito del GlobalId, della differenza tra numero di righe e istanze effettive, dell’importanza di verificare la versione dello schema IFC e dei controlli che possono essere eseguiti con strumenti diversi come Web-ifc e IfcOpenShell.

L’ultima parte propone inoltre alcune indicazioni da trasferire nei requisiti di capitolato e una breve esercitazione su un file IFC reale, per iniziare a riconoscere autonomamente struttura, attributi e relazioni.

Scarica il PDF per proseguire la lettura e completare l’esercitazione. Il documento è disponibile gratuitamente previa registrazione o accesso al portale INGENIO.

Contenuto a cura di Nicola Furcolo, con supporto di strumenti di IA.


FAQ tecniche - File IFC: struttura, relazioni e verifica del modello BIM

Che cos’è realmente un file IFC?
Un IFC non è semplicemente un contenitore di geometrie 3D. È un modello dati costituito da istanze collegate mediante attributi e riferimenti. Posizione, rappresentazione geometrica e appartenenza alla struttura spaziale possono essere descritte in dichiarazioni differenti: per questo l’IFC deve essere seguito come una rete di informazioni.

A cosa serve leggere direttamente il testo di un file IFC?
La lettura testuale permette di verificare informazioni che una vista 3D non rende evidenti: versione dello schema, unità, identificatori, posizionamenti e relazioni fra oggetti. È utile per comprendere anomalie di interoperabilità, predisporre requisiti verificabili e distinguere problemi geometrici da problemi informativi.

Quali norme definiscono la struttura di un file IFC?
Lo schema IFC è normato dalla UNI EN ISO 16739-1:2024, mentre la rappresentazione testuale STEP utilizzata nell’exchange file è definita dalla ISO 10303-21:2016. Quest’ultima rimane vigente ed è stata confermata da ISO nel 2022. 

Perché vedere correttamente il modello in 3D non significa che l’IFC sia corretto?
Geometria e struttura informativa sono controlli differenti. Nell’esempio, eliminando IfcRelContainedInSpatialStructure il muro mantiene forma e posizione, perché continuano a esistere i riferimenti alla geometria e al posizionamento; perde però l’assegnazione al piano.

Come viene determinata la posizione di un elemento IFC?
La posizione può dipendere da una catena di IfcLocalPlacement. Nell’esempio il muro è posizionato rispetto al piano, il piano rispetto all’edificio e l’edificio rispetto al sito. La posizione assoluta emerge quindi percorrendo l’intera catena dei riferimenti, non necessariamente da una singola coordinata associata direttamente all’oggetto.

Articolo integrale in PDF

L’articolo nella sua forma integrale è disponibile attraverso il LINK riportato di seguito.
Il file PDF è salvabile e stampabile.

Per scaricare l’articolo devi essere iscritto e accedere al portale tramite login.

Iscriviti Accedi

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.

Scopri di più

Costruzioni

Costruzioni: su INGENIO articoli tecnici, normative e innovazioni per progettare, realizzare e gestire opere edilizie e infrastrutture.

Scopri di più

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.

Scopri di più

Progettazione

La progettazione costituisce un passaggio fondamentale nell’intero processo edilizio, poiché determina in maniera significativa la qualità, la...

Scopri di più

Leggi anche