L’automatisation est au cœur des enjeux du BIM aujourd’hui. Pourquoi modéliser manuellement des éléments standardisés quand un script peut s’en charger en une fraction de seconde, sans erreur, et avec toutes les propriétés requises dès la première exécution ?
Cet article vous montre comment utiliser Python et la bibliothèque IfcOpenShell pour générer de A à Z un poteau en béton armé au format IFC4. Nous allons décortiquer le script étape par étape : géométrie du béton, ferraillage 3D (armatures longitudinales et étriers), et métadonnées BIM associées.
Le cahier des charges
Pour cet exemple, nous partons sur un poteau structurel classique aux caractéristiques suivantes :
- Dimensions : section 20 × 20 cm, hauteur 3,00 m
- Matériaux : béton C25/30 et acier HA500
- Ferraillage longitudinal : 4 barres HA 12 droites, placées aux angles
- Ferraillage transversal : étriers HA 8 espacés de 15 cm, avec le premier et le dernier à 5 cm des extrémités
- Enrobage : 3 cm
La hiérarchie spatiale IFC
Un bon fichier IFC n’est pas qu’un assemblage de géométries 3D, c’est avant tout une base de données structurée.
Le script commence donc par établir la hiérarchie spatiale qu’impose la norme IFC4 :
IfcProject → IfcSite → IfcBuilding → IfcBuildingStorey
C’est au niveau de l’étage nommé ici « RDC » que le poteau et ses armatures sont implantés via la relation
IfcRelContainedInSpatialStructure.
La géométrie du béton : l’extrusion de profil
Pour modéliser le volume de béton, l’approche la plus propre en IFC consiste à extruder un profil. Le script définit un profil rectangulaire de 20 × 20 cm (IfcRectangleProfileDef), l’extrude verticalement sur 3 mètres via IfcExtrudedAreaSolid, puis lui assigne le matériau « C25/30 ».
Simple, lisible, et parfaitement conforme à la norme.
Le ferraillage 3D : là où Python révèle sa puissance
Plutôt que de dessiner chaque barre à la main, on exploite des boucles pour positionner automatiquement chaque armature, en tenant compte de l’enrobage.
Armatures longitudinales (HA 12) Le script calcule la position de l’axe de chaque barre aux quatre coins de la section. Il génère ensuite une polyligne droite de 3 mètres (IfcPolyline), autour de laquelle un volume cylindrique est créé avec IfcSweptDiskSolid.
Étriers (HA 8) Une boucle while détermine la position en Z de chaque étrier (tous les 15 cm). Pour chacun, le script trace un chemin rectangulaire fermé en cinq points, puis l’extrude au diamètre de 8 mm.
À l’issue de cette étape, toutes les armatures sont regroupées et associées au poteau via la relation IfcRelAggregates, formant un ensemble logique cohérent : « Ferraillage Poteau P1 ».
Les Property Sets : l’intelligence du modèle
En BIM, un modèle sans données n’est qu’une maquette. Pour que le poteau soit exploitable par un économiste, un ingénieur structure ou un conducteur de travaux le script génère un jeu de propriétés personnalisé baptisé BEIDBA_Poteau, qui contient automatiquement :
- La section (20 × 20 cm)
- La hauteur (3,00 m)
- La classe de béton (C25/30)
- Le type de barres longitudinales (4 HA 12 droits)
- Le détail des étriers (HA 8 / 15 cm)
- Le nombre exact d’étriers générés, calculé dynamiquement par le script
Résultat
En exécutant le script poteau_beton_ifc4.py, vous obtenez un fichier .ifc propre, structuré et immédiatement lisible dans n’importe quelle visionneuse BIM (BIM Vision, Solibri, Navisworks, et bien d’autres.).
Au-delà de la simple modélisation, ce type de script ouvre la voie à des cas d’usage bien plus puissants : génération automatique du ferraillage sur une série de poteaux, extraction de quantitatifs précis (longueurs d’acier, nombre d’étriers), ou standardisation des livrables à l’échelle d’un projet entier.








