Il modello di dati Industry Foundation Classes (IFC) ha lo scopo di descrivere i dati dell’edilizia e dell’industria delle costruzioni.

Si tratta di un formato file neutrale e aperto che non è controllato da un singolo fornitore o gruppo di fornitori. Si tratta di un formato di file basato su oggetti con un modello di dati sviluppato da buildingSMART (International Alliance for Interoperability, IAI) per facilitare l’interoperabilità tra le discipline di architettura, ingegneria e costruzione dell’industria dell’edilizia, è un formato di collaborazione comunemente utilizzato in progetti basati sulla metodologia di Building Information Modelling (BIM). La specifica del modello dati IFC è aperta e disponibile, ed è stata riconosciuta e registrata dalla ISO come norma internazionale ISO 16739:2013.

Grazie alla capacità di facilitare l’interoperabilità tra tutte le piattaforme software che lo permettono, molti governi stanno imponendo l’uso di file IFC per progetti di costruzione di proprietà dell’amministrazione pubblica.

L’iniziativa IFC ha avuto inizio nel 1994, quando un consorzio industriale investì nello sviluppo di un insieme di classi C ++ in grado di supportare lo sviluppo di applicazioni integrate. Dodici società statunitensi aderirono al consorzio. Queste aziende inizialmente chiamarono il consorzio “Industry Alliance for Interoperability”, nel settembre 1995 l’Alleanza aprì l’adesione a tutte le parti interessate e nel 1997 cambiò  il suo nome in “International Alliance for Interoperability”. La nuova alleanza fu ricostituita come organizzazione non-profit, con l’obiettivo di sviluppare e promuovere l’”Industry Fondation Class” (IFC) come modello dati neutro di prodotto dell’edilizia utile a raccogliere informazioni lungo tutto il ciclo di vita di un edificio/impianto. Dal 2005 l’Alleanza porta avanti le proprie attività tramite dei capitoli nazionali chiamati, buildingSMART.

Formati file

IFC definisce più formati di file che possono essere utilizzati, sostenendo varie codifiche degli stessi dati sottostanti.

IFC-SPF è un formato di testo definito dalla ISO 10303-21 (“STEP-File“), in cui ogni riga consiste tipicamente di un singolo oggetto registrato e ha estensione “.ifc”. Questo è il formato IFC più utilizzato, con il vantaggio di avere dimensioni compatte ma con un testo ancora leggibile.

IFC-XML è un formato XML definito dalla ISO 10303-28 (“STEP-XML”), con estensione “.ifcXML”. Questo formato è adatto per l’interoperabilità di strumenti XML e lo scambio di modelli di edifici parziali. A causa delle grandi dimensioni dei modelli tipici di un edificio, questo formato è meno comune nella pratica.

IFC-ZIP è un formato ZIP compresso costituito da un file IFC-SPF incorporato e con estensione “.ifcZIP”.

Architettura

IFC definisce un modello entità-relazione basata su EXPRESS composta da diverse centinaia di enti organizzati in maniera gerarchica basati su oggetti. Esempi di entità sono elementi costruttivi come per esempio IfcWall, elementi geometrici, come IfcExtrudedAreaSolid e costrutti di base come IfcCartesianPoint.

Al livello più astratto, IFC divide tutte le entità in “radicate” e “non radicate”. Entità radicate divengono da IfcRoot e hanno un concetto di identità, insieme ad attributi di nome, descrizione, e controllo di revisione. Entità non radicate non hanno un identità e le istanze esistono solo se si fa riferimento, direttamente o indirettamente, ad un’istanza radicata. IfcRoot è suddiviso in tre concetti astratti: definizioni di oggetti, relazioni e insiemi di proprietà:

  • IfcObjectDefinition cattura presenze e tipi di oggetti materiali
  • IfcRelationship cattura le relazioni tra gli oggetti
  • IfcPropertyDefinition cattura proprietà dinamicamente estensibili sugli oggetti

IfcObjectDefinition

IfcObjectDefinition è suddiviso in presenze di oggetti e tipi di oggetti. IfcObject descrive la presenza dell’oggetto come l’installazione del prodotto con il numero di serie e la collocazione fisica nello spazio edificio. IfcTypeObject cattura le definizioni di tipo come il tipo di prodotto che ha un particolare numero di modello e comunemente quella determinata forma. Presenze e tipi sono ulteriormente suddivisi in sei concetti fondamentali: attori (“chi”), controlli (“perché”), gruppi (“cosa”), prodotti (“dove”), processi (“quando”), risorse (” Come”).

  • IfcActor rappresenta persone o organizzazioni.
  • IfcControl rappresenta regole di controllo tempi, i costi e qualità, come l’ordine delle lavorazioni.
  • IfcGroup rappresenta collezioni di oggetti per scopi particolari come i circuiti elettrici, o altro.
  • IfcProduct rappresenta la presenza nello spazio, come elementi costruttivi fisici e posizioni spaziali.
  • IfcProcess rappresenta occorrenze nel tempo quali attività, eventi e procedure.
  • IfcResource rappresenta l’utilizzo di qualcosa con disponibilità limitata, come materiali, manodopera, e le attrezzature.

IfcRelationship

IfcRelationship descrive le relazioni tra gli oggetti. Ci sono cinque tipi di rapporto fondamentali: la composizione, l’assegnazione, la connettività, l’associazione, e la definizione.

  • IfcRelDecomposes cattura un rapporto “parte-di-un-tutto” con contenimento esclusivo come la suddivisione di un edificio in piani e camere.
  • IfcRelAssigns cattura i rapporti di assegnazione in cui un oggetto consuma i servizi di un altro oggetto, come una risorsa di lavoro assegnata a un’attività, o di un compito assegnato a un elemento di costruzione.
  • IfcRelConnects indica la connettività tra oggetti come una soletta collegata ad una trave o un tubo collegato ad un lavandino.
  • IfcRelAssociates indica riferimenti esterni di un oggetto, per esmpio una libreria IFC esterna in cui è definito l’ oggetto.
  • IfcRelDefines indica una relazione “caso-di”, come un segmento di tubo di un particolare tipo.

IfcPropertyDefinition

IfcPropertyDefinition cattura insiemi di proprietà estensibili in modo dinamico. Un insieme di proprietà contiene una o più proprietà che può essere un valore singolo (ad esempio stringa, numero, unità di misura), un valore limitato (avendo minimi e massimi), una enumerazione, un elenco di valori, una tabella di valori o un dato strutturato. Mentre IFC definisce diverse centinaia di insiemi di proprietà per i tipi specifici, insiemi di proprietà personalizzate possono essere definite da fornitori di applicazioni o utenti finali.

  • IfcPropertySet rappresenta un insieme di proprietà associate a un evento oggetto o tipo di oggetto.
  • IfcPropertySetTemplate [IFC2x4] cattura definizioni delle proprietà ei relativi tipi di dati.

Prodotti

IfcProduct è la classe base per tutti gli oggetti fisici ed è suddiviso in elementi spaziali, elementi fisici, elementi di analisi strutturale, e altri concetti. I prodotti possono avere materiali associati, rappresentazioni  di forma, e il posizionamento nello spazio. Elementi spaziali comprendono IfcSite, IfcBuilding, IfcBuildingStorey, e IfcSpace. Elementi fisici di costruzione possono includere IfcWall, IfcBeam, IfcDoor, IfcWindow, IfcStair, ecc elementi di distribuzione (Impianti di aerazione, elettrici, idraulici) hanno un concetto di porte in cui gli elementi possono avere collegamenti specifici per i vari servizi, e collegati tra loro con cavi, tubi, o condotti formano un sistema. Vari rapporti di connettività sono utilizzati per elementi costruttivi, per esempio pareti aventi aperture riempite da porte o finestre.

I materiali possono essere definiti per un insieme di prodotti, o per strati, profili, o loro costituenti per sole parti specificate.

  • IfcMaterial indica un materiale specifico, con caratteristiche opzionali (ad esempio meccanico, termico) e di stili (ad esempio colori, texture).
  • IfcMaterialLayerSet cattura un elenco di strati, ciascuno indica un materiale di spessore specificato.
  • IfcMaterialProfileSet [IFC2x4] cattura un insieme di profili, ciascuno indica un materiale di una sezione specificata.
  • IfcMaterialConstituentSet [IFC2x4] coglie un insieme di componenti, ciascuna indicante un materiale utilizzato con un aspetto modellato nominalmente.

Le rappresentazioni possono essere definite esplicitamente in forma 3D, ed eventualmente con vincoli parametrici. Ogni rappresentazione è identificata da IfcShapeRepresentation con un nome ben definito.

  • ‘Body’ indica una forma 3D. Essa può essere direttamente definita o ricavata dall’applicare definizioni di materiali ad rappresentazioni già esistenti.
  • ‘Axis’ indica un percorso per elementi lineari (ad esempio, muro, trave, tubo) per cui i profili dei materiali o gli strati sono allineati.
  • ‘FootPrint’ indica un limite per elementi piani (per esempio lastra, scale) per le quali strati di materiale sono limitati.
  • ‘Profile’ indica un profilo laterale per gli elementi di apertura (per esempio porte, finestre), ai quale i materiali costituenti vengono limitati.
  • ‘SurveyPoints’ indica un insieme di punti per gli elementi di superficie (ad esempio, sito) per descrivere i contorni.

Posizionamento può indicare la posizione, l’angolo verticale, e l’angolo orizzontale.

  • IfcLocalPlacement indica il posizionamento rispetto ad una gerarchia di elementi di recinzione.
  • IfcGridPlacement indica il posizionamento rispetto ad una griglia con assi definiti dall’utente.

Possono essere definiti le quantità per i computi metrici, come superficie lorda, volume lordo, peso lordo, peso netto, ecc IFC definisce varie quantità specifiche per ciascun tipo di elemento e il metodo di calcolo in base alla geometria e le relazioni.

Processi

IfcProcess è la classe base per i processi ed è suddiviso in attività, eventi e procedure. I processi possono avere durata ed essere programmati per verificarsi in periodi di tempo specificato. I processi possono essere sequenziati in modo tale che un’attività successiva può essere avviata solo dopo che un attività precedente finisce, seguendo il metodo del Critical Path. I processi possono essere annidati in sotto-processi. I processi possono essere assegnati ai prodotti indicandone l’output prodotto dal lavoro svolto.

Risorse

IfcResource è la classe base per le risorse ed è suddiviso in materiali, manodopera, attrezzature, subappalti, equipaggi, e altro ancora. Le risorse possono avere vari costi e calendari di disponibilità. Le risorse possono essere nidificati in sotto-risorse per l’assegnazione granulare. Le risorse possono essere assegnati a processi indicando le funzioni svolte per conto di una risorsa.

Contesti

IfcProject incapsula un progetto globale e indica il nome del progetto, descrizione, unità di default, valuta, sistema di coordinate, e altre informazioni contestuali. Un file IFC valido deve sempre comprendere esattamente un’istanza IfcProject, da cui tutti gli altri oggetti hanno relazione diretta o indiretta. Un progetto può includere più edifici, più partecipanti, e / o più fasi secondo l’uso particolare.

Oltre alle informazioni specifiche di progetto, un IfcProject può anche fare riferimento a progetti esterni da cui condivide le definizioni o possono essere importati tipi di prodotto. Ogni progetto esterno è incapsulato con IfcProjectLibrary [IFC2x4] insieme a IfcRelAssociatesLibrary e IfcLibraryInformation per identificare la particolare versione della libreria di progetto importata.

I progetti supportano un controllo di revisione in cui qualsiasi entità radicata ha un identificatore univoco e può essere contrassegnato come aggiunto, modificato, cancellato, o nessun cambiamento. Tale capacità consente a più file IFC di unirsi in modo deterministico, garantendo l’integrità dei dati senza intervento umano.

IBIMI è il capitolo italiano di buildingSMART, visita la pagina ufficiale del capitolo per maggiori informazioni sugli standard bS, oppure contattaci per maggiori informazioni.