IfcPlusPlus/fr: Difference between revisions

From FreeCAD Documentation
(Created page with "{{Caption|L'exemple de visionneuse IFC inclus dans la distribution source des bibliothèques IfcQuery/IFC ++.}}")
(Created page with "* [https://www.ifcquery.com/ projet IFC++] * [https://github.com/ifcquery/ifcplusplus ifcquery/ifcplusplus] dépôt * Dépôt alternatif, en particulier pour Debian: [https://...")
 
(41 intermediate revisions by the same user not shown)
Line 13: Line 13:
{{Caption|L'exemple de visionneuse IFC inclus dans la distribution source des bibliothèques IfcQuery/IFC ++.}}
{{Caption|L'exemple de visionneuse IFC inclus dans la distribution source des bibliothèques IfcQuery/IFC ++.}}


{{Emphasis|Note:}} in common usage, the names "IfcQuery", "IFC++", and "IfcPlusPlus" may be used interchangeably to refer to the same thing, the C++ library, or more specifically the free IFC viewer.
{{Emphasis|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.


== Installing ==
== Installation ==


The IFC++ distribution is provided as source code, so to use the library and the viewer, the code must be compiled.
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++ is developed mostly on a Windows platform, so it includes solution ({{incode|.snl}}) and project ({{incode|.vcxproj}}) files to compile the {{incode|IfcPlusPlus.dll}} dynamic library using Visual Studio. A static library {{incode|libIfcPlusPlus.a}} can also be produced for Linux using CMake.
IFC ++ est développé principalement sur une plate-forme Windows aussi il inclut des fichiers solution ({{incode|.snl}}) et projet ({{incode|.vcxproj}}) pour compiler la bibliothèque dynamique {{incode|IfcPlusPlus.dll}} à l'aide de Visual Studio. Une bibliothèque statique {{incode|libIfcPlusPlus.a}} peut également être produite pour Linux en utilisant CMake.


{{Emphasis|Note:}} there is a more complete viewer that uses pre-compiled IFC++ libraries intended for Windows. This viewer is free for use but is not open source. It is available by downloading the {{incode|SimpleViewerExampleQt.zip}} package from {{URL|http://www.ifcquery.com/}}, and running {{incode|SimpleViewerExampleQt.exe}}. This viewer is self-contained, everything that it requires to run is included in the {{incode|.zip}} archive.
{{Emphasis|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 {{incode|SimpleViewerExampleQt.zip}} depuis {{URL|http://www.ifcquery.com/}} et en exécutant {{incode|SimpleViewerExampleQt.exe}}. Ce visualiseur est autonome, tout ce dont il a besoin pour s'exécuter est inclus dans l'archive {{incode|.zip}}.


== Compiling in Windows ==
== Compilation sous Windows ==


Follow the instructions in the official [https://github.com/ifcquery/ifcplusplus ifcplusplus] repository.
Suivez les instructions du dépôt officiel [https://github.com/ifcquery/ifcplusplus ifcplusplus].


== Compiling in Linux ==
== Compilation sous Linux ==


The general instructions are as follows:
Les instructions générales sont les suivantes:
# Get the source code of IFC++ from its main repository.
# Récupérez le code source d'IFC ++ depuis son dépôt principal.
# Gather all dependencies for compiling, including a C++ compiler, CMake, and Make, and the development files for Boost, Qt 5, as well as the OpenSceneGraph (OSG) library for visualization.
# 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.
# Run {{incode|cmake}} to generate a {{incode|Makefile}}, then start the compilation by running {{incode|make}}.
# Exécutez {{incode|cmake}} pour générer un {{incode|Makefile}}, puis démarrez la compilation en exécutant {{incode|make}}.
# Install the {{incode|libIfcPlusPlus.a}} and {{incode|libcarve.so}} libraries to the appropriate library path so that they are found by the IFC++ sample viewer.
# Installez les bibliothèques {{incode|libIfcPlusPlus.a}} et {{incode|libcarve.so}} dans le chemin de bibliothèque approprié afin qu'elles soient trouvées par le visualiseur d'exemples IFC++.


=== Prerequisites ===
=== Prérequis ===


In a Debian/Ubuntu based distribution, getting the required development files is usually simple.
Dans une distribution basée sur Debian/Ubuntu, obtenir les fichiers de développement requis est généralement simple.
{{Code|code=
{{Code|code=
sudo apt install git cmake gcc g++ libboost-all-dev
sudo apt install git cmake gcc g++ libboost-all-dev
Line 43: Line 43:
}}
}}


Obtenez le code source du projet et placez-le dans un répertoire personnalisé auquel vous avez un accès en écriture complet.
Get the source code of the project and place it in a custom directory to which you have full write access.
{{Code|code=
{{Code|code=
git clone https://github.com/ifcquery/ifcplusplus ifcplusplus-source
git clone https://github.com/ifcquery/ifcplusplus ifcplusplus-source
Line 50: Line 50:
=== OpenSceneGraph ===
=== OpenSceneGraph ===


[http://www.openscenegraph.org/ OpenSceneGraph] (OSG) is a collection of C++ libraries that uses OpenGL for 3D visualization; it can be used in games, virtual reality, scientific visualization and modelling.
[http://www.openscenegraph.org/ 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.


{{Code|code=
{{Code|code=
Line 56: Line 56:
}}
}}


If the files are too old in your distribution, you may also compile the libraries yourself. The procedure is outlined in the main repository, [https://github.com/openscenegraph/OpenSceneGraph openscenegraph/OpenSceneGraph]. Compiling is straight forward, although you may need various dependencies like Qt 5, Freetype, Inventor, OpenEXR, COLLADA, ZLIB, GDAL, FFmpeg, Gstreamer, SDL, Cairo, and Poppler.
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, [https://github.com/openscenegraph/OpenSceneGraph 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.


{{Code|code=
{{Code|code=
Line 71: Line 71:
=== Carve ===
=== Carve ===


Carve is a [[constructive_solid_geometry|constructive solid geometry]] (CSG) C++ library designed to perform boolean operations between two arbitrary polygonal meshes. Together with the IFC++ library, {{incode|libIfcPlusPlus.a}}, Carve is used by the IFC++ sample viewer to open and display IFC files.
Carve est une bibliothèque C++ [[constructive_solid_geometry/fr|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++, {{incode|libIfcPlusPlus.a}}, Carve est utilisé par le visualiseur d'exemples IFC++ pour ouvrir et afficher les fichiers IFC.


* Original repository: [https://code.google.com/archive/p/carve/ carve], GPL2, from 2009 to 2011.
* Dépôt d'origine: [https://code.google.com/archive/p/carve/ carve], GPL2, de 2009 à 2011.
* New repository: [https://github.com/folded/carve folded/carve], from 2011 onwards; the project changed to the MIT License starting on October, 2015.
* Nouveau dépôt: [https://github.com/folded/carve folded / carve], à partir de 2011; le projet est passé à la licence MIT à partir d'octobre 2015.


As the project is now MIT licensed, copies of the Carve source files are now included in the IFC++ repository. This means that when compiling IFC++, {{incode|libcarve.so}} will be compiled as well. This library must be available in the system for the IFC++ sample viewer to work properly.
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++, {{incode|libcarve.so}} sera également compilé. Cette bibliothèque doit être disponible dans le système pour que la visionneuse d'exemples IFC++ fonctionne correctement.


=== CMake configuration ===
=== Configuration de CMake ===


It is recommended to perform the configuration and compilation in a specific build directory separate from the source directory.
Il est recommandé d'effectuer la configuration et la compilation dans un répertoire build spécifique séparé du répertoire source.


{{Code|code=
{{Code|code=
Line 89: Line 89:
}}
}}


By default the type of build is {{incode|Release}} but it can also be set to {{incode|Debug}}.
Par défaut, le type de compilation est {{incode|Release}} mais il peut également être défini sur {{incode|Debug}}.
{{Code|code=
{{Code|code=
cmake -DCMAKE_BUILD_TYPE=Debug ../ifcplusplus-source/
cmake -DCMAKE_BUILD_TYPE=Debug ../ifcplusplus-source/
}}
}}


=== Actual compilation ===
=== Compilation réelle ===


If there were no error messages during configuration with CMake, a {{incode|Makefile}} should have been created in the build directory, so you can proceed to compile the libraries by running {{incode|make}}.
S'il n'y avait pas de message d'erreur lors de la configuration avec CMake, un {{incode|Makefile}} aurait être créé dans le répertoire build, vous pouvez donc procéder à la compilation des bibliothèques en exécutant {{incode|make}}.


{{Code|code=
{{Code|code=
Line 102: Line 102:
}}
}}


{{incode|N}} is the number of processors that you assign to the compilation process; choose at least one fewer than the total number of CPU cores that you have.
{{incode|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.


=== Testing the compilation in the build directory ===
=== Test de la compilation dans le répertoire build ===


If the build was successful you should have a {{incode|Release/}} subdirectory with the newly compiled libraries.
Si la compilation réussit, vous devriez avoir un sous-répertoire {{incode|Release/}} avec les bibliothèques nouvellement compilées.
{{Code|code=
{{Code|code=
Release/libcarve.so
Release/libcarve.so
Line 113: Line 113:
}}
}}


You can launch the {{incode|SimpleViewerExample}} executable with an [[Arch_IFC|IFC]] file as input.
Vous pouvez lancer l'exécutable {{incode|SimpleViewerExample}} avec un fichier [[Arch_IFC/fr|IFC]] comme entrée.
{{Code|code=
{{Code|code=
Release/SimpleViewerExample IfcOpenHouse.ifc
Release/SimpleViewerExample IfcOpenHouse.ifc
}}
}}


If the build type was set to {{incode|Debug}}, then the compiled libraries will appear in the {{incode|Debug/}} subdirectory instead.
Si le type de build a été défini sur {{incode|Debug}}, alors les bibliothèques compilées apparaîtront dans le sous-répertoire {{incode|Debug/}} à la place.


=== Installation of the compiled libraries ===
=== Installation des bibliothèques compilées ===


If the compilation doesn't report any errors, you may run {{incode|make install}} to copy the headers, compiled libraries, and binaries to their corresponding installation directories.
Si la compilation ne signale aucune erreur, vous pouvez exécuter {{incode|make install}} pour copier les en-têtes, les bibliothèques compilées et les binaires dans leurs répertoires d'installation correspondants.
{{Code|code=
{{Code|code=
sudo make install
sudo make install
}}
}}


By default, the {{incode|CMAKE_INSTALL_PREFIX}} is {{incode|/usr/local/}}, so all compiled files will be placed under this directory, which normally requires elevated privileges.
Par défaut, {{incode|CMAKE_INSTALL_PREFIX}} est {{incode|/usr/local/}}, donc tous les fichiers compilés seront mis sous ce répertoire, qui nécessite normalement des privilèges élevés.
{{Code|lang=sh|code=
{{Code|lang=sh|code=
/usr/local/bin/SimpleViewerExample
/usr/local/bin/SimpleViewerExample
Line 144: Line 144:
}}
}}


=== Library path ===
=== Chemin de la bibliothèque ===


Once {{incode|SimpleViewerExample}} is placed in {{incode|/usr/local/bin}}, the executable will be available in the entire system. However, in certain platforms {{incode|libcarve.so}} may not be found if it is installed in the default {{incode|/usr/local/lib}} directory.
Une fois {{incode|SimpleViewerExample}} placé dans {{incode|/usr/local/bin}}, l'exécutable sera disponible dans tout le système. Cependant, sur certaines plates-formes, {{incode|libcarve.so}} peut ne pas être trouvé s'il est installé dans le répertoire par défaut {{incode|/usr/local/lib}}.
{{Code|lang=md|code=
{{Code|lang=md|code=
SimpleViewerExample: error while loading shared libraries: libcarve.so: cannot open shared object file: No such file or directory
SimpleViewerExample: error while loading shared libraries: libcarve.so: cannot open shared object file: No such file or directory
}}
}}


If this is the case, it may be enough to update the cache of the {{incode|ld.so}} library loader by calling {{incode|ldconfig}}:
Si tel est le cas, il peut suffire de mettre à jour le cache du chargeur de bibliothèque {{incode|ld.so}} en appelant {{incode|ldconfig}}:
{{Code|code=
{{Code|code=
sudo ldconfig
sudo ldconfig
}}
}}


Ou vous devrez peut-être d'abord déplacer la bibliothèque vers le bon répertoire:
Or you may have to move the library to the correct directory first:
{{Code|code=
{{Code|code=
sudo mkdir -p /usr/local/lib/x86_64-linux-gnu/
sudo mkdir -p /usr/local/lib/x86_64-linux-gnu/
Line 163: Line 163:
}}
}}


Alternatively, you may set the {{incode|LD_LIBRARY_PATH}} variable to the directory containing {{incode|libcarve.so}}, before launching the executable:
Vous pouvez également définir la variable {{incode|LD_LIBRARY_PATH}} sur le répertoire contenant {{incode|libcarve.so}}, avant de lancer l'exécutable:
{{Code|code=
{{Code|code=
LD_LIBRARY_PATH=/usr/local/lib SimpleViewerExample
LD_LIBRARY_PATH=/usr/local/lib SimpleViewerExample
}}
}}


To make this effect persistent, this environmental variable can be set in the shell resource file, for example, {{incode|.bashrc}}, so that it is propagated to all terminal instances on startup:
Pour rendre cet effet persistant, cette variable d'environnement peut être définie dans le fichier de ressources du shell, par exemple, {{incode|.bashrc}}, afin qu'elle soit propagée à toutes les instances de terminal au démarrage:
{{Code|code=
{{Code|code=
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
}}
}}


=== Removing the compiled libraries ===
=== Suppression des bibliothèques compilées ===


Pour supprimer les bibliothèques installées, supprimez simplement les fichiers correspondants qui ont été installés.
To remove the installed libraries, just remove the corresponding files that were installed.
{{Code|lang=sh|code=
{{Code|lang=sh|code=
sudo rm -rf /usr/local/bin/SimpleViewerExample
sudo rm -rf /usr/local/bin/SimpleViewerExample
Line 185: Line 185:
}}
}}


== Fixes for Linux ==
== Corrections pour Linux ==


The IFC++ library is developed by its author on a Windows system. This means that even if the code depends on multiplatform libraries like Boost, Qt, and OpenSceneGraph, the code is mostly tested to compile and run on Windows. Nevertheless, over the years other developers have provided fixes to the project so that IFC++ can be compiled and run on Linux distributions.
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.


In particular, a fork of the main project is maintained with small fixes to compile and run better in Debian.
En particulier, un fork du projet principal est maintenu avec de petits correctifs pour mieux compiler et mieux fonctionner dans Debian.
* [https://github.com/berndhahnebach/ifcplusplus/ berndhahnebach/ifcplusplus]
* [https://github.com/berndhahnebach/ifcplusplus/ berndhahnebach/ifcplusplus]


If the code of the official repository does not work or seems to have issues in Linux, try following the same compilation instructions but using the sources from this alternative repository. This repository is often some commits behind the main distribution, but it aims to remain up to date, and at the same time provide some Linux specific fixes. These improvements are normally submitted back to the main repository in order to make the official branch compile on Linux without issues.
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.


The main developer of IFC++ does not support Linux directly, so Linux developers should be prepared to troubleshoot problems, fix them, and submit patches when using IFC++ in Linux.
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.


=== Invisible icons ===
=== Icônes invisibles ===


For the {{incode|SimpleViewerExample}}, there are two buttons in the main interface which are invisible if the custom style sheet is not found.
Pour {{incode|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.
{{Code|lang=cpp|code=
{{Code|lang=cpp|code=
QIODevice::read (QFile, ":styles.css"): device not open
QIODevice::read (QFile, ":styles.css"): device not open
}}
}}


The style must be included in the CMake configuration in the section devoted to the Qt libraries:
Le style doit être inclus dans la configuration de CMake dans la section consacrée aux bibliothèques Qt:
{{Code|lang=cmake|code=
{{Code|lang=cmake|code=
# ifcplusplus-source/examples/SimpleViewerExampleQt/CMakeLists.txt
# ifcplusplus-source/examples/SimpleViewerExampleQt/CMakeLists.txt
Line 214: Line 214:
}}
}}


== More information ==
== Plus d'informations ==


* [https://www.ifcquery.com/ IFC++ project page]
* [https://www.ifcquery.com/ projet IFC++]
* [https://github.com/ifcquery/ifcplusplus ifcquery/ifcplusplus] repository
* [https://github.com/ifcquery/ifcplusplus ifcquery/ifcplusplus] dépôt
* Alternative repository, especially for Debian: [https://github.com/berndhahnebach/ifcplusplus/ berndhahnebach/ifcplusplus]
* Dépôt alternatif, en particulier pour Debian: [https://github.com/berndhahnebach/ifcplusplus/ berndhahnebach/ifcplusplus]
* Forum thread: [https://forum.freecadweb.org/viewtopic.php?f=39&t=5101 IFC Viewer ifcplusplus] (2013 to 2020)
* Fil du forum: [https://forum.freecadweb.org/viewtopic.php?f=39&t=5101 IFC Viewer ifcplusplus] (2013 to 2020)
* [https://forum.freecadweb.org/viewtopic.php?f=39&t=33254 IfcPlusPlus compiled on Gentoo - questions and alternatives?]
* [https://forum.freecadweb.org/viewtopic.php?f=39&t=33254 IfcPlusPlus compilé sur Gentoo - questions et alternatives?]
* German thread: [https://forum.freecadweb.org/viewtopic.php?f=13&t=48648 IfcQuery / IfcPlusPlus selber kompilieren]
* Fil allemand: [https://forum.freecadweb.org/viewtopic.php?f=13&t=48648 IfcQuery / IfcPlusPlus selber kompilieren]


{{Arch Tools navi{{#translation:}}}}
{{Arch Tools navi{{#translation:}}}}

Latest revision as of 13:38, 6 September 2020

Other languages:

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:

  1. Récupérez le code source d'IFC ++ depuis son dépôt principal.
  2. 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.
  3. Exécutez cmake pour générer un Makefile, puis démarrez la compilation en exécutant make.
  4. Installez les bibliothèques libIfcPlusPlus.a et libcarve.so dans 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