IfcPlusPlus
Description
IFC++ ou IfcPlusPlus est une bibliothèque C++ open source (licence MIT) du projet IfcQuery pour la lecture, l'écriture et la visualisation de fichiers IFC .
La bibliothèque IFC++ peut être utilisée à des fins générales et comprend également un exemple d'application de visualisation IFC. Cette visionneuse est basée sur Qt 5 et OpenSceneGraph (OSG) et peut charger de gros fichiers IFC très rapidement. Elle peut donc être utilisée pour comparer les performances d'autres visionneuses IFC, comme Blender et FreeCAD, qui utilisent en interne la bibliothèque IfcOpenShell.
L'exemple de visionneuse IFC inclus dans la distribution source des bibliothèques IfcQuery/IFC ++.
Remarque: dans l'usage courant, les noms "IfcQuery", "IFC++" et "IfcPlusPlus" peuvent être utilisés de manière interchangeable pour désigner la même chose, la bibliothèque C++, ou plus spécifiquement le visualiseur IFC gratuit.
Installation
La distribution IFC++ est fournie sous forme de code source, donc pour utiliser la bibliothèque et le visualiseur, le code doit être compilé.
IFC ++ est développé principalement sur une plate-forme Windows aussi il inclut des fichiers solution (.snl) et projet (.vcxproj) pour compiler la bibliothèque dynamique IfcPlusPlus.dll à l'aide de Visual Studio. Une bibliothèque statique libIfcPlusPlus.a peut également être produite pour Linux en utilisant CMake.
Remarque: il existe un visualiseur plus complet qui utilise des bibliothèques IFC++ précompilées destinées à Windows. Cette visionneuse est gratuite mais n'est pas open source. Il est disponible en téléchargeant le package SimpleViewerExampleQt.zip depuis http://www.ifcquery.com/ et en exécutant SimpleViewerExampleQt.exe. Ce visualiseur est autonome, tout ce dont il a besoin pour s'exécuter est inclus dans l'archive .zip.
Compilation sous Windows
Suivez les instructions du dépôt officiel ifcplusplus.
Compilation sous Linux
Les instructions générales sont les suivantes:
- Récupérez le code source d'IFC ++ depuis son dépôt principal.
- Rassemblez toutes les dépendances pour la compilation, y compris un compilateur C++, CMake et Make, et les fichiers de développement pour Boost, Qt 5, ainsi que la bibliothèque OpenSceneGraph (OSG) pour la visualisation.
- Exécutez
cmakepour générer unMakefile, puis démarrez la compilation en exécutantmake. - Installez les bibliothèques
libIfcPlusPlus.aetlibcarve.sodans le chemin de bibliothèque approprié afin qu'elles soient trouvées par le visualiseur d'exemples IFC++.
Prérequis
Dans une distribution basée sur Debian/Ubuntu, obtenir les fichiers de développement requis est généralement simple.
sudo apt install git cmake gcc g++ libboost-all-dev
sudo apt install qt5-qmake qtbase5-dev qttools5-dev libqt5widgets5 libqt5opengl5-dev
Obtenez le code source du projet et placez-le dans un répertoire personnalisé auquel vous avez un accès en écriture complet.
git clone https://github.com/ifcquery/ifcplusplus ifcplusplus-source
OpenSceneGraph
OpenSceneGraph (OSG) est une collection de bibliothèques C++ qui utilise OpenGL pour la visualisation 3D. Elle il peut être utilisée dans les jeux, la réalité virtuelle, la visualisation scientifique et la modélisation.
sudo apt install libopenscenegraph-3.4-dev
Si les fichiers sont trop anciens dans votre distribution, vous pouvez également compiler les bibliothèques vous-même. La procédure est décrite dans le dépôt principal, openscenegraph/OpenSceneGraph. La compilation est simple, bien que vous puissiez avoir besoin de diverses dépendances telles que Qt 5, Freetype, Inventor, OpenEXR, COLLADA, ZLIB, GDAL, FFmpeg, Gstreamer, SDL, Cairo et Poppler.
git clone https://github.com/openscenegraph/OpenSceneGraph OpenSceneGraph-source
mkdir -p OpenSceneGraph-build
cd OpenSceneGraph-build
cmake ../OpenSceneGraph-source
make -j 3
sudo make install
Carve
Carve est une bibliothèque C++ Géométrie Solide Constructive (CSG) conçue pour effectuer des opérations booléennes entre deux maillages polygonaux arbitraires. Avec la bibliothèque IFC++, libIfcPlusPlus.a, Carve est utilisé par le visualiseur d'exemples IFC++ pour ouvrir et afficher les fichiers IFC.
- Dépôt d'origine: carve, GPL2, de 2009 à 2011.
- Nouveau dépôt: folded / carve, à partir de 2011; le projet est passé à la licence MIT à partir d'octobre 2015.
Le projet étant désormais sous licence MIT, des copies des fichiers source Carve sont désormais incluses dans le référentiel IFC++. Cela signifie que lors de la compilation IFC++, libcarve.so sera également compilé. Cette bibliothèque doit être disponible dans le système pour que la visionneuse d'exemples IFC++ fonctionne correctement.
Configuration de CMake
Il est recommandé d'effectuer la configuration et la compilation dans un répertoire build spécifique séparé du répertoire source.
mkdir -p ifcplusplus-build
cd ifcplusplus-build
cmake ../ifcplusplus-source/
Par défaut, le type de compilation est Release mais il peut également être défini sur Debug.
cmake -DCMAKE_BUILD_TYPE=Debug ../ifcplusplus-source/
Compilation réelle
S'il n'y avait pas de message d'erreur lors de la configuration avec CMake, un Makefile aurait dû être créé dans le répertoire build, vous pouvez donc procéder à la compilation des bibliothèques en exécutant make.
make -j N
N est le nombre de processeurs que vous attribuez au processus de compilation; choisissez au moins un de moins que le nombre total de cœurs de processeur dont vous disposez.
Test de la compilation dans le répertoire build
Si la compilation réussit, vous devriez avoir un sous-répertoire Release/ avec les bibliothèques nouvellement compilées.
Release/libcarve.so
Release/libIfcPlusPlus.a
Release/SimpleViewerExample
Vous pouvez lancer l'exécutable SimpleViewerExample avec un fichier IFC comme entrée.
Release/SimpleViewerExample IfcOpenHouse.ifc
Si le type de build a été défini sur Debug, alors les bibliothèques compilées apparaîtront dans le sous-répertoire Debug/ à la place.
Installation des bibliothèques compilées
Si la compilation ne signale aucune erreur, vous pouvez exécuter make install pour copier les en-têtes, les bibliothèques compilées et les binaires dans leurs répertoires d'installation correspondants.
sudo make install
Par défaut, CMAKE_INSTALL_PREFIX est /usr/local/, donc tous les fichiers compilés seront mis sous ce répertoire, qui nécessite normalement des privilèges élevés.
/usr/local/bin/SimpleViewerExample
/usr/local/lib/libcarve.so
/usr/local/lib/libIfcPlusPlus.a
/usr/local/include/carve/*.{h, hpp}
/usr/local/include/ifcpp/geometry/*.h
/usr/local/include/ifcpp/geometry/Carve/*.h
/usr/local/include/ifcpp/geometry/OCC/*.h
/usr/local/include/ifcpp/IFC4/*.h
/usr/local/include/ifcpp/IFC4/include/*.h
/usr/local/include/ifcpp/model/*.h
/usr/local/include/ifcpp/reader/*.h
/usr/local/include/ifcpp/writer/*.h
/usr/local/share/IFCPP/cmake/*.cmake
Chemin de la bibliothèque
Une fois SimpleViewerExample placé dans /usr/local/bin, l'exécutable sera disponible dans tout le système. Cependant, sur certaines plates-formes, libcarve.so peut ne pas être trouvé s'il est installé dans le répertoire par défaut /usr/local/lib.
SimpleViewerExample: error while loading shared libraries: libcarve.so: cannot open shared object file: No such file or directory
Si tel est le cas, il peut suffire de mettre à jour le cache du chargeur de bibliothèque ld.so en appelant ldconfig:
sudo ldconfig
Ou vous devrez peut-être d'abord déplacer la bibliothèque vers le bon répertoire:
sudo mkdir -p /usr/local/lib/x86_64-linux-gnu/
sudo mv /usr/local/lib/libcarve.so /usr/local/lib/x86_64-linux-gnu/libcarve.so
sudo ldconfig
Vous pouvez également définir la variable LD_LIBRARY_PATH sur le répertoire contenant libcarve.so, avant de lancer l'exécutable:
LD_LIBRARY_PATH=/usr/local/lib SimpleViewerExample
Pour rendre cet effet persistant, cette variable d'environnement peut être définie dans le fichier de ressources du shell, par exemple, .bashrc, afin qu'elle soit propagée à toutes les instances de terminal au démarrage:
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
Suppression des bibliothèques compilées
Pour supprimer les bibliothèques installées, supprimez simplement les fichiers correspondants qui ont été installés.
sudo rm -rf /usr/local/bin/SimpleViewerExample
sudo rm -rf /usr/local/lib/libcarve.so
sudo rm -rf /usr/local/lib/libIfcPlusPlus.a
sudo rm -rf /usr/local/include/carve
sudo rm -rf /usr/local/include/ifcpp
sudo rm -rf /usr/local/share/IFCPP/cmake/
Corrections pour Linux
La bibliothèque IFC++ est développée par son auteur sur un système Windows. Cela signifie que même si le code dépend de bibliothèques multiplateformes telles que Boost, Qt et OpenSceneGraph, le code est principalement testé pour être compilé et exécuté sous Windows. Néanmoins, au fil des ans, d'autres développeurs ont fourni des correctifs au projet afin que IFC++ puisse être compilé et exécuté sur des distributions Linux.
En particulier, un fork du projet principal est maintenu avec de petits correctifs pour mieux compiler et mieux fonctionner dans Debian.
Si le code du dépôt officiel ne fonctionne pas ou semble avoir des problèmes sous Linux, essayez de suivre les mêmes instructions de compilation mais en utilisant les sources de ce dépôt alternatif. Ce dépôt contient souvent des commits derrière la distribution principale, mais il vise à rester à jour et en même temps à fournir des correctifs spécifiques à Linux. Ces améliorations sont normalement renvoyées au dépôt principal afin de permettre à la branche officielle de se compiler sous Linux sans problème.
Le développeur principal d'IFC++ ne prend pas en charge Linux directement, les développeurs Linux doivent donc être prêts à résoudre les problèmes et à soumettre des correctifs lors de l'utilisation d'IFC++ sous Linux.
Icônes invisibles
Pour SimpleViewerExample, il y a deux boutons dans l'interface principale qui sont invisibles si la feuille de style personnalisée n'est pas trouvée.
QIODevice::read (QFile, ":styles.css"): device not open
Le style doit être inclus dans la configuration de CMake dans la section consacrée aux bibliothèques Qt:
# ifcplusplus-source/examples/SimpleViewerExampleQt/CMakeLists.txt
...
ADD_DEFINITIONS(${Qt5Widgets_DEFINITIONS})
SET(viewer_dir ${IFCPP_SOURCE_DIR}/examples/SimpleViewerExampleQt)
SET(RESOURCES ${viewer_dir}/Resources/ifcplusplus.qrc)
QT5_ADD_RESOURCES(SimpleViewerExample_RESOURCES_RCC ${RESOURCES})
Plus d'informations
- projet IFC++
- ifcquery/ifcplusplus dépôt
- Dépôt alternatif, en particulier pour Debian : berndhahnebach/ifcplusplus
- Fil du forum : IFC Viewer ifcplusplus (2013 to 2020)
- IfcPlusPlus compilé sur Gentoo - questions et alternatives?
- Fil allemand : IfcQuery / IfcPlusPlus selber kompilieren
- Ébauche 2D : Esquisse, Ligne, Polyligne, Rectangle, Arc, Arc par 3 points, Cercle, Ellipse, Polygone, B-Spline, Courbe de Bézier, Courbe de Bézier cubique, Point, Congé
- 3D/BIM : Site, Bâtiment, Niveau, Espace, Mur, Mur-rideau, Colonne, Poutre, Dalle, Porte, Fenêtre, Revêtement, Conduite, Raccord, Escaliers, Toit, Panneau, Ossature, Clôture, Treillis, Équipement
- Outils de renforcement : Armature personnalisée, Armature droite, Armature en U, Armature en L, Armature en étrier, Armature cintrée, Armature hélicoïdale, Armature pour colonne, Armature pour poutre, Armature de dalle, Armature de semelle
- Outils 3D génériques : Profilé, Boîte, Générateur de formes, Surface liée, Bibliothèque d'objets, Composant, Référence externe
- Annotation : Dimension alignée, Dimension horizontale, Dimension verticale, Texte, Ligne de référence, Étiquette, hachure, Axes, Système d'axes, Grille, Plan de coupe, Dessin 2D, Vue 2D, Coupe 2D, Feuille TechDraw, Nouvelle vue
- Aimantation : Verrouiller l'aimantation, Aimantation Extrémité, Aimantation Milieu, Aimantation Centre, Aimantation Angle, Aimantation Intersection, Aimantation Perpendiculaire, Aimantation Extension, Aimantation Parallèle, Aimantation Spécial, Aimantation Au plus proche, Aimantation Orthogonal, Aimantation Grille, Aimantation Au plan de travail, Aimantation Dimensions, Basculer la grille, Plan de travail de devant, Plan de travail en haut, Plan de travail de côté, Plan de travail
- Modifier : Déplacer, Pivoter, Échelle, Miroir, Cloner, Lien, Copier, Copie simple, Composé, Décaler en 2D, Décaler, Ajuster ou prolonger, Joindre, Scinder, Étirer, Draft <=> Esquisse, Agréger, Désagréger, Ajouter, Supprimer, Réseau orthogonal, Réseau selon une courbe, Réseau polaire, Réseau de points, Couper selon un plan, Extrusion, Union, Soustraction, Intersection
- Gérer : Configurer les BIM, Configurer un projet, Fenêtres & portes, Éléments IFC, Quantités IFC, Propriétés IFC, Classification, Calques, Matériaux, BIM Rapport, Nomenclature, Contrôle en amont, Éditer style d'annotation
- Utilitaires : Corbeille, Vue du plan de travail, Sélection groupée, Définir la Pente, Proxy de plan de travail, Ajouter au groupe de construction, Diviser un maillage, Maillage vers forme, Sélection de maillages non-manifold, Supprimer la forme, Boucher des trous, Fusionner des murs, Vérification, Basculer en B-rep IFC, Bascule des sous composants, Prendre des cotes, Comparateur d'IFC, Explorateur d'IFC, Tableur IFC, Plan pour image, Cloner libre, Reconnecter, Coller, Re-extruder
- Outils des panneaux : Panneau, Découpe de panneau, Feuille de panneaux, Calepinage
- Outils des structures : Structure, Système structurel, Multiples structures
- Outils IFC : Projet IFC, IFC Diff, IFC Expand, Convert to IFC Project, IfcOpenShell Update
- Nudge: Nudge Switch, Nudge Up, Nudge Down, Nudge Left, Nudge Right, Nudge Rotate Left, Nudge Rotate Right, Nudge Extend, Nudge Shrink
- Additionnel : Préférences, Réglage fin, Importer/Exporter, IFC, DAE, OBJ, JSON, 3DS, SHP
- Matériaux : Matériau pour solide, Matériau pour fluide, Matériau mécanique non linéaire, Matériau renforcé (type béton) ; Éditeur de matériaux
- Géométrie de l'élement : Élément 1D, Rotation d'élément 1D, Épaisseur d'un élément 2D, Section fluide 1D
- Conditions limites électromagnétiques : de potentiel électrostatique, de densité de courant, de magnétisation, Densité de charge électrique
- Conditions limites de fluide : de vitesse d'écoulement initial, de pression initiale, Vitesse d'écoulement comme condition limite
- Fonctions d'analyse géométrique : Contrainte multi-points selon un plan, Enregistrer les résultats par section, Système de coordonnées locales
- Conditions limites et charges mécaniques : de limite fixe, Contrainte de corps rigide, de limite de déplacement, Contrainte de contact, Contrainte de liaison, de ressort, Charge d'effort, Charge de pression, Charge centrifuge, Charge de gravité
- Conditions limites et charges thermiques : Température initiale, Charge de flux thermique, Condition limite de température, Source de chaleur du corps
- Remplacer les constantes : Constante de permittivité du vide
- Maillage : avec Netgen, avec GMSH, Couche limite de maillage, Mailler plus finement, Grouper un maillage, Masquer des éléments, Convertir un maillage FEM en surfacique
- Solveur : CalculiX Standard, Elmer, Mystran, Z88 ; Équations Mécaniques : d'élasticité, de déformation ; Équations électromagnétiques : électrostatique, de force électrique, de magnétodynamique, de magnétodynamique 2D, de courant statique ; d'écoulement, de flux, de chaleur ; Solveur : Réglage du solveur, Calcul du solveur
- Résultats : Purger, Afficher, Appliquer les modifications, Pipeline du résultat, Filtre des déformations, Filtre d'écrêtage scalaire, Filtre de fonction de découpe, Filtre d'écrêtage selon une région, Filtre par contours, Filtre par symboles, Filtre d'écrêtage selon une ligne, Graphique de linéarisation des critères, Données du filtre d'écrêtage du point, Champs personnalisés de résultats ; Fonctions de filtrage : Plan, Sphère, Cylindre, Boîte ; Visualisation des données : Courbe, Histogramme, Tableau
- Utilitaires : Plan de coupe, Supprimer les plans de coupe, Exemples ; Supprimer le maillage, Affichage des informations du maillage
- Additionnel : Préférences ; Installation, FEM Maillage, Solveur, CalculiX, FEM Béton ; FEM Types d'élements
- Démarrer avec FreeCAD
- Installation : Téléchargements, Windows, Linux, Mac, Logiciels supplémentaires, Docker, AppImage, Ubuntu Snap
- Bases : À propos de FreeCAD, Interface, Navigation par la souris, Méthodes de sélection, Objet name, Préférences, Ateliers, Structure du document, Propriétés, Contribuer à FreeCAD, Faire un don
- Aide : Tutoriels, Tutoriels vidéo
- Ateliers : Std Base, Assembly, BIM, CAM, Draft, FEM, Inspection, Material, Mesh, OpenSCAD, Part, PartDesign, Points, Reverse Engineering, Robot, Sketcher, Spreadsheet, Surface, TechDraw, Test