Fonctionnement des IFC

Interprétation géométrique d'un fichier IFC
Le modèle est construit par une succession d'opérations booléennes

Un format ouvert

Fidèle à sa qualité de format ouvert, un fichier IFC est écrit dans un langage non crypté, permettant d’être interprété par n’importe quel logiciel en s’affranchissant des limites imposées par les éditeurs de logiciels et leurs formats propriétaires, cryptés et dont l’utilisation est soumise à l’utilisation de licences logicielles payantes.

Illustrons en ouvrant tout d’abord un fichier RVT dans un éditeur de texte.

Capture d'écran d'un fichier REVIT ouvert dans un éditeur de texte
Le format RVT est crypté

Ouvrons la même maquette, maintenant exportée au format IFC puis ouverte dans un éditeur de texte.

Capture d'écran de la même maquette au format IFC ouverte dans un éditeur de texte
Le format IFC est lisible

Le fichier IFC est lisible et compréhensible à l’œil nu, en tout cas lorsqu’on a été formé à sa manipulation et que l’on maitrise quelques bases en matière de programmation informatique. BuildingSMART tient à jour une documentation détaillée et toute aussi ouverte que le format IFC lui-même sur le site www.buildingsmart-tech.org permettant ainsi à n’importe qui voulant se former à l’exploitation et l’interprétation de ce format de le faire efficacement.

Chaque élément constituant une maquette numérique trouve sa définition au sein du format IFC et les règles syntaxiques à respecter pour que l’interprétation de la maquette soit possible.

Bien que lisible à l’œil nu, la compréhension de ce langage informatique nécessite une formation très poussée et des compétences informatiques généralement propres à des profils de programmateurs ou ingénieurs informaticiens, qui ne sont pas les profils que ce site vise à former. Si toutefois vous projetez de développer des logiciels ou applicatifs exploitant les IFC, le site internet de BuildingSMART reste la source documentaire la plus complète et la plus à jour, à consulter prioritairement.

Sans vouloir donc faire de vous des développeurs informatiques il sera toutefois nécessaire que vous maîtrisiez les bases de ce format afin d’en comprendre le fonctionnement, ce que nous allons maintenant développer. Ouvrons donc notre IFC dans un éditeur de texte.

Les mains dans le moteur

Bloc « Header »

La toute première ligne du fichier désigne la norme utilisée pour l’écriture, qui sera donc la même à utiliser pour l’interprétation du fichier. Cette information peut sembler anodine pour des fichiers écrits puis lus en IFC dans une période de temps courte, mais elle deviendra essentielle dans le cadre d’une maquette numérique DOE exploitée dans 20 ans lors de l’extension d’un bâtiment par exemple.

[su_panel]ISO-10303-21;[/su_panel]

Le bloc Header contient les informations générales sur le fichier et le programme ayant servi à sa génération. Il débute par la balise HEADER et se termine par la balise ENDSEC.

[su_panel]HEADER;

/******************************************************************************************

* STEP Physical File produced by: The EXPRESS Data Manager Version 5.02.0100.07 : 28 Aug 2013

* Module:                         EDMstepFileFactory/EDMstandAlone

* Creation date:                 Sun Jul 19 14:49:07 2015

* Host:                           MBTP

* Database:                      C:\Users\METHODESBTP\AppData\Local\Temp\{294964F8-57B3-4318-8174-F7689B3849BA}\ifc

* Database version:               5507

* Database creation date:         Sun Jul 19 14:46:29 2015

* Schema:                         IFC2X3

* Model:                        DataRepository.ifc

* Model creation date:           Sun Jul 19 14:46:30 2015

* Header model:                   DataRepository.ifc_HeaderModel

* Header model creation date:     Sun Jul 19 14:46:30 2015

* EDMuser:                       mbtp-user

* EDMgroup:                       mbtp-group

* License ID and type:           5605 : Permanent license. Expiry date:

* EDMstepFileFactory options:     020000

******************************************************************************************/

FILE_DESCRIPTION((‘ViewDefinition [CoordinationView_V2.0]’),’2;1′);

FILE_NAME(‘Project Number’,’2015-07-19T14:49:07′,( »),( »),’The EXPRESS Data Manager Version 5.02.0100.07 : 28 Aug 2013′,’20140606_1530(x64) – Exporter 15.4.0.0 – Interface alternative d »export 15.4.0.0′, »);

FILE_SCHEMA((‘IFC2X3’));

ENDSEC;[/su_panel]

Bloc Data

Le bloc suivant contient quant à la lui l’essence même de la maquette : le modèle 3D dans toute sa complexité, c’est-à-dire les objets, leur géométrie, leurs caractéristiques techniques, leur positionnement dans la structure du bâtiment, les relations entre les objets. Il débute par la balise DATA et se termine par la balise ENDSEC.

[su_panel]

#434221= IFCWALL(‘2UMN_OQKrAshZl3dHPuYYp’,#41,’Mur de base:Parapet Wall:168323′,$,’Mur de base:Parapet Wall:167485′,#284133,#434219,’168323′);

#434224= IFCPROPERTYSET(‘2UMN_OQKrAshZl1ObPuYYp’,#41,’Pset_WallCommon’,$,(#129459,#129460,#129461,#283991));

#434226= IFCRELDEFINESBYPROPERTIES(’22do7dlh16KPvfwsc30TaL’,#41,$,$,(#434221),#434224);

#434230= IFCCARTESIANPOINT((7244.50107237486,-12190.3615692476,0.));

#434232= IFCAXIS2PLACEMENT3D(#434230,#19,#15);

#434233= IFCLOCALPLACEMENT(#136,#434232);

#434234= IFCCARTESIANPOINT((31953.2007751463,0.));

#434236= IFCPOLYLINE((#9,#434234));

#434238= IFCSHAPEREPRESENTATION(#95,’Axis’,’Curve2D’,(#434236));

#434246= IFCCARTESIANPOINT((6.35000000000289,-151.350000000002,654.532961930897));

[/su_panel]

Chaque ligne commence par un numéro sous la forme « #xxxxx ». Il s’agit de l’identifiant unique de l’objet concerné, permettant à la fois de rechercher l’élément dans la maquette, mais aussi de créer des « renvois » vers d’autres objets. Ces renvois permettent entre autres de lier les objets entre eux.

[su_panel]

#521723= IFCWALL(‘2UMN_OQKrAshZl3dHPuYiw’,#41,’Mur de base:Parapet Wall:168458′,$,’Mur de base:Parapet Wall:167485′,#434233,#521721,’168458′);

[/su_panel]

Ici, le mur (classe IFCWALL) dont le numéro est #521723 renvoie vers les objets de numéros #41, #434233 et #521721, qui représentent respectivement l’unité de dessin, les coordonnées du point de placement de l’objet (classe IFCLOCALPLACEMENT) et sa composition (classe IFCPRODUCTDEFINITIONSHAPE). Attardons nous sur ce dernier renvoi. Le mur renvoie à la définition #521721.

[su_panel]

#521721= IFCPRODUCTDEFINITIONSHAPE($,$,(#434238,#521719));

[/su_panel]

Cette même définition renvoie également à d’autres définitions (classe IFCSHAPEREPRESENTATION) qui désignent le mode de représentation d’un objet. Ces renvois se déclinement en un nombre très important de « sous-renvois » attestant de la caractéristique majeure et déjà évoquée du BIM : l’intelligence du modèle liée notamment aux liaisons entre les objets.

Structure d’un objet IFC

[su_panel]

#521723= IFCWALL(‘2UMN_OQKrAshZl3dHPuYiw’,#41,’Mur de base:Parapet Wall:168458′,$,’Mur de base:Parapet Wall:167485′,#434233,#521721,’168458′);

[/su_panel]

Décomposons la ligne IFC précédente pour l’analyser.

[su_panel]#521723=[/su_panel]

Il s’agit du numéro de l’objet dans le fichier IFC. Ce sont ces numéros qui permettent les renvois entre objets et donc leur liaison.

[su_panel]IFCWALL([/su_panel]

On désigne le type d’objet (mur, dalle, poteau…) suivant la liste disponible dans la norme IFC elle-même et selon la version de la norme désignée en tête du fichier.

[su_panel]‘2UMN_OQKrAshZl3dHPuYiw’[/su_panel]

Identifiant universellement unique de l’objet. Cet identifiant restera toujours le même y compris en cas de modification du modèle 3D. Cette caractéristique est fondamentale. En cas de mise à jour de la maquette, cet identifiant universel et unique (GUID) permet à tous les logiciels exploitant l’IFC de savoir si un ouvrage est nouveau ou s’il s’agit de la modification d’un ancien ouvrage.

Concrètement, imaginez un logiciel de métré exploitant la maquette. Ce logiciel permet d’associer des préconisations techniques voire des prix à des ouvrages désignés par l’utilisateur. Une fois le métré terminé, si un nouvel indice de la maquette est diffusé, le logiciel saura conserver les saisies de l’utilisateur associées à l’ancien objet pour les ré-attribuer à la nouvelle version de cet objet modifié (à condition que la personne ayant modifié la maquette ait bien effectué une transformation de l’objet existant et non une suppression/remplacement de cet objet).

[su_panel]’Mur de base:Parapet Wall:168458′[/su_panel]

Il s’agit de la définition du type d’objet, celle-là même qui a été choisie par le BIM Modeleur.

La suite des arguments définit la géométrie de l’objet, en faisant parfois référence à d’autres objets (liaisons). Certains argument ne sont pas définis, ils sont alors substitués par le caractère $.

Interprétation géométrique

Le modèle 3D est construit par opérations successives, à mesure que les objets sont définis et que les liaisons entre eux le sont.

L’illustration ci-dessous représente la chronologie d’interprétation du modèle (vue en élévation d’un mur).

Interprétation géométrique d'un fichier IFC
Le modèle est construit par une succession d’opérations booléennes

L’objet #123 est définit : il s’agit d’un mur de base avec une hauteur et des coordonnées, associé à un bâtiment et un étage donné.

L’objet #456 est un toit de géométrie définie.

Le mur #123 est attaché au toit #456, sa hauteur est donc automatiquement projetée pour épouser la forme de la sous-face du toit.

Le dernier objet #789 est un percement. Car oui, en BIM même le vide est un objet ! Cet objet vide, ou percement, est également attaché au mur #123.

A la fin de l’interprétation du modèle, le mur est donc géométriquement définit et les quantités associées (volume, surface, longueur…) sont calculées exactement.

Organisation spatiale du projet

Le format IFC permet de décomposer un projet suivant 4 éléments : le site, le bâtiment, l’étage et la pièce. Ainsi, le schéma de base est donc le suivant :

  1. Des objets (murs etc.) sont définis et liés entre eux
  2. Ces objets servent de délimitation aux objets « pièces »
  3. Ces pièces sont associées à un objet « étage » et à un objet « bâtiment »
  4. Les objets bâtiment sont associés à un objet « site »

La structure ainsi obtenue permet ainsi d’interpréter le modèle en décomposant les informations suivant une logique constructive et permettant aux logiciels tiers (exemple du logiciel de métré IFC) de travailler de manière pertinente.

Cette description suffit à comprendre la logique de fonctionnement d’un fichier IFC et son mode d’interprétation par les logiciels. Ainsi, lorsque vous recevrez une maquette IFC et qu’un voile traversera une toiture ou qu’un poteau traversa une dalle, vous serez à même de comprendre qu’il s’agit d’une perte de liaisons entre les objets et empêchant la chronologie d’interprétation d’aboutir correctement. Cela ne changera certes rien à votre problème : votre maquette ne sera pas exploitable en l’état, mais au moins vous serez à même de comprendre l’origine du problème et d’en discuter avec le BIM Modeleur afin de trouver une solution.

Par Clément VALENTE

Expert en construction numérique

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *