Il blog BIM di Archicad

Le Proprietà nel Formato IFC

Scritto da Hilario Bourg | Sep 14, 2020 2:36:04 PM
Tutto quello che c'è da sapere sul formato IFC - pt. 5

Una volta individuati usi e obiettivi del modello, dobbiamo stabilire le caratteristiche del formato IFC: come identificare gli oggetti, quali relazioni attivare e quale tipo di geometria produrre (diretta conseguenza delle relazioni parti/insieme). In IFC sono le proprietà a determinare la natura degli elementi, attraverso le diverse possibili relazioni fra le entità.

Una classe di oggetti nasce dal suo supertipo in base alle proprietà e relazioni ricevute in eredità dalla classe di grado superiore. Vediamo ora che tipo di informazioni sono presenti nel formato IFC e come possono essere gestite.

 

Proprietà e Attributi

Esistono informazioni sempre presenti e che definiscono la natura stessa dell’entità. In altri termini: per il solo fatto di esistere, gli oggetti hanno determinate proprietà, chiamate IfcAttributes.

Gli IfcRoot sono la classe più astratta e generale e sono caratterizzate da un GUID (Global Unique IDentifier), un Nome, una Descrizione, un IfcOwnerHistory (in proposito potete rivedere l’articolo sulla definizione degli oggetti). Le entità acquisiscono via via una maggior definizione attraverso gli attributi ereditati dalle classi superiori.

L’insieme di tutte le proprietà ricade sotto la classe IfcProperty. Le IfcProperty possono essere di due tipi:

  • Semplici (IfcSimpleProperty), generalizzazione di una singola proprietà;
  • Complesse (IfcComplexProperty), cioè costituite da qualunque voce e valore, sia numerico che testuale.

Non ci soffermeremo oltre su questo aspetto, che ha poche ricadute al lato pratico. Piuttosto ci interessa comprendere come un insieme indistinto di dati può dare vita a sistemi omogenei di informazioni. Quando alle IfcProperty associamo delle risorse esterne otteniamo gli IfcPropertySet. Informazioni quali la funzione strutturale (Load-bearing) e la posizione (external, internal e not defined) fanno parte della definizione del tipo e non delle sue proprietà, perché non derivano da fonti esterne. In poche parole, non è l’utente a stabilire che queste informazioni siano incluse o meno e quindi, al pari degli Attributi, queste informazioni competono la definizione del tipo e non delle proprietà.

Le Ifc Property danno origine a due categorie di informazioni:

  • I PropertySet, cioè i dati e le informazioni che l’operatore assegna;
  • I QuantitySet, cioè i dati quantitativi ricavati all’interno del modello stesso, per lo più ottenuti automaticamente anche se è possibile elaborare e combinare i dati fra di loro, ad esempio con delle formule di calcolo.

 

I PropertySet e come si assegnano

I PropertySet sono dei contenitori che riportano le informazioni all’interno di una struttura ad albero. Ogni insieme di proprietà è definito attraverso un nome appropriato individuato attraverso il prefisso “Pset_Xxx”. Nessun’altra entità deve riportare il prefisso Pset. Ogni Pset costituisce un Gruppo di Proprietà che annoverano più Proprietà al loro interno.

I PropertySet sono associati agli elementi in base alle relazioni che intessono con gli oggetti a cui si riferiscono. Distinguiamo quattro forme di relazione:

  • Occurrence Object (istanza oggetto): le proprietà sono associate alla singola istanza dell’elemento, porta, muro o arredo;
  • Type Object (tipo oggetto): le proprietà sono associate al tipo oggetto e condivise fra tutte le istanze che fanno riferimento allo stesso IfctypeObject, ad esempio IfcWallType, IfcSlabType, ecc.;
  • Underlying template: Attraverso la relazione IfcRelDefinesByTemplate stabilisce le relazioni fra un PropertySet e un PropertySetTemplate, cioè un Set predefinito di proprietà (ci torneremo successivamente);
  • External reference: sottotipo di IfcRelAssociates, si usa per collegare le entità a sistemi di classificazione esterni.

Le prime due relazioni sono una l’inversa dell’altra: attraverso la relazione IfcRelDefines, possiamo assegnare le proprietà direttamente al singolo elemento (relazione 1 a 1) o alla categoria di riferimento (relazione 1 a molti), assegnando quindi il tutto agli IfcObjectType. È possibile assegnare delle proprietà sia a livello di tipo che di istanza. Una determinata proprietà può essere in comune alla singola porta o a tutte le porte con date caratteristiche, individuate con un appropriato IfcDoorType.

È possibile assegnare le proprietà a una classe di elementi, ad esempio gli IfcWall, oppure alla classe superiore, IfcBuildingElement che a sua volta trasmetterà le proprietà a tutti i suoi sottotipi, compresi gli IfcWall stessi.

Ricordiamo infine che le proprietà non si riferiscono unicamente ad elementi costruttivi fisici, da IfcProduct in giù, ma anche a entità astratte come attori, processi, ecc. che possono essere gestite attraverso gli IfcAssignment.

Assegnazione di proprietà a diverse classi.

Assegnazione di riferimenti di classificazione esterna (IfcRelAssociates)

Le etichette di proprietà possono assumere valori diversi a seconda del tipo di grandezza che devono esprimere. Le principali categorie sono:

  • IfcIdentifier, utilizzato per identificare l’oggetto tramite dei tag;
  • IfcGlobalUniqueID, il tipo valore associato al GUID;
  • IfcLabel, utilizzato per vari tipi di valore, fra cui il Nome;
  • IfcBoolean, indica un valore che può essere Vero o Falso;
  • IfcText, utilizzato per le descrizioni.

I valori delle etichette sono in realtà molti di più, uno per ogni tipo di elemento.

L’utilizzo dei template nella gestione delle informazioni è un passaggio fondamentale. in IFC esistono già dei template predeterminati per ogni categoria di elementi, quindi per ogni oggetto sono già impostate certe informazioni tipiche. I TypeEnum permettono di specificare meglio la natura dell’elemento, andando a distinguere ad esempio se un muro è un rivestimento, un muro divisorio o un parapetto in muratura. Ma queste operazioni ricadono nel cosiddetto Mappaggio tipo, attraverso cui definiamo "cos’è cosa". Per assegnare le informazioni alle classi, dobbiamo invece operare il cosiddetto Mappaggio Proprietà.

In IFC, ad ogni classe di elementi sono associati dei valori tipici, individuati attraverso la relazione IfcRelDefinesByTemplate. Per ogni Elemento, ad esempio IfcWall, abbiamo delle proprietà generali proprie del muro che prendono il nome di Pset_WallCommon, così come per le finestre avremo le classi di proprietà Pset_WindowCommon, e così via per ognuno degli elementi IFC.

A questi si aggiungono altre categorie che variano di volta in base alle caratteristiche dei materiali utilizzati, generalmente Pset_ConcreteElementGeneral per tutte le opere in cemento gettato in opera, mentre per i serramenti avremo invece, oltre ai Pset_WindowCommon già menzionati, la categoria Pset_DoorWindowGlazingType che riporta un buon numero di informazioni circa le parti vetrate e le loro prestazioni fisiche e meccaniche.

Infine, diverse informazioni provengono dai materiali o stratigrafie di materiali che compongono l‘elemento. Ormai sappiamo molto bene che le proprietà concorrono alla definizione della classe in base al tipo di relazione che intessono con essa. Ad esempio, se a un muro applichiamo una stratigrafia, può essere decomposto nei suoi componenti, oppure possiamo decidere di mantenere l’unitarietà del muro (preservando quindi la parametricità) ma leggere comunque la composizione e le informazioni relative agli strati e i materiali.

 

Product Data Template (PDT)

Sul lato pratico però, è preferibile definire i PropertySet sulla base delle esigenze di commessa piuttosto che sulla caratterizzazione delle classi condotte a priori da BuildingSmart. Queste ultime prendono il nome di Proprietà Standard, mentre per le proprietà definite dall’utente parliamo di Proprietà non Standard.

È necessario affiancare ai Pset di default i propri Pset che assumeranno la denominazione Pset_Nomestudio_Xxx. In molti casi è persino preferibile eliminare ogni Pset preesistente e gestire unicamente le nuove proprietà di commessa.

Gestire consistenti quantità di informazioni per un gran numero di elementi non è semplice, ed è quindi necessario adottare dei template per facilitare il compito e inquadrare meglio i contenuti. Inoltre è necessario gestire le informazioni nella loro progressione lungo la commessa, calibrando quali e quanti dati trasmettere secondo il concetto di LOD (Level Of Development/Detail), o meglio di LOIN (Level Of Information Need) secondo le più recenti evoluzioni della normativa internazionale.

A testimoniare l'interesse attorno al tema, basti pensare che, nel solo anno 2020, sono uscite le norme:

  • UNI EN ISO 23386:2020 Building information modelling e altri processi digitali utilizzati nelle costruzioni - Metodologia per descrivere, creare e mantenere proprietà nei dizionari di dati interconnessi;

  • EN ISO 23387:2020 Building Information Modelling (BIM) – Data templates for construction objects used in the life cycle of any built asset – Concepts and principles;

e un’ulteriore norma a carattere europeo (CEN) è di prossima uscita:

  • prEN 17473  – Building information modelling (BIM) – Data templates for construction objects used in the life cycle of any built asset – Data templates based on harmonised technical specifications under the Construction Products Regulation (CPR).

Non è questa la sede per approfondire un tema molto ampio e che ancora deve essere digerito dagli stessi addetti ai lavori. Sottolineiamo soltanto come sia necessario adottare un Template, sotto forma di tabella relazionale, per gestire l’insieme dei dati, la loro assegnazione agli oggetti e la progressione nel tempo.

Le Model Element Table e le Attributes Table del BIM FORUM costituiscono idealmente la base per lo sviluppo di Template informativi attraverso i quali è possibile allineare i requisiti e le caratteristiche di prodotto di ogni oggetto.

 

I QuantitySet

In maniera analoga ai PropertySet, un QuantitySet è un contenitore che riporta le quantità individuali di un elemento all’interno di un albero gerarchico. Come per i Propertyset esistono delle corrispondenze fra gli elementi e i set di informazioni determinate dalle IfcPropertySetTemplate e generano le già note quattro relazioni:

  • Occurrence Object (istanza oggetto);
  • Type Object (tipo oggetto);
  • Underlying template;
  • External reference.

A differenza dei PropertySet, i QuantitySet acquisiscono il prefisso Qto_Xxx anziché Pset_Xxx. I QuantitySet derivano da template di informazioni che abbinano dei set ad ogni classe di elementi: avremo quindi dei Qto_WallBaseQuantity per gli IfcWall, dei Qto_BeamBaseQuantities per gli IfcBeam, e via dicendo.

Le quantità possono riferirsi tanto all’elemento nel suo complesso che ai suoi componenti costitutivi (gli strati di un elemento murario complesso, ad esempio). È tuttavia possibile mantenere il muro nella sua interezza (e quindi come geometria parametrica estrusa) e leggere comunque le informazioni quantitative circa la composizione di ogni strato. Vale anche in questo caso la relazione fra l’elemento e i materiali che lo compongono, sia esso un unico materiale o una stratigrafia tramite i cosiddetti Material Layer Set. Quindi, oltre alle proprietà dei materiali, possiamo leggere le loro consistenze, quali spessori, volume, ecc.

I dati quantitativi non vengono ricavati dal software in lettura, ma vengono calcolati dal software di scrittura e incorporati all’interno del file stesso: il software in lettura, che sia un visualizzatore o un software di analisi, utilizzerà i dati provenienti da un altro software, giusti o sbagliati che siano.

In particolare, bisogna fare particolare attenzione al calcolo delle quantità in corrispondenza dei nodi, dove i software calcolano le quantità con metodi spesso molto diversi fra loro, sia in alcuni casi un calcolo puntuale e rigoroso o talvolta anche una stima percentuale delle riduzioni dovute alle intersezioni degli strati. A tal proposito suggerisco la lettura di questo ottimo articolo sulla computazione attraverso il formato IFC, a cui l'immagine qui sotto fa riferimento.

Diversamente rispetto a quanto accade per i PropertySet, non è possibile impostare dei QuantitySet personalizzati, ma si possono visualizzare (o meno) unicamente i valori standard. La ragione è facilmente comprensibile, dato che non possaimo inventare delle nuove grandezze fisiche dal nulla!

 

Per una visione d'insieme, ecco i link a tutti gli articoli sul formato IFC:

  1. Introduzione al formato IFC;
  2. L'identità nel formato IFC;
  3. Le relazioni nel formato IFC;
  4. La rappresentazione del formato IFC;
  5. Le proprietà nel formato IFC.