Biblioteka IfcPlusPlus
Opis
IFC++ lub IfcPlusPlus to biblioteka open source w języku C++ (licencja MIT) z projektu IfcQuery służąca do odczytu, zapisu i przeglądania plików IFC.
Biblioteka IFC++ może być używana do celów ogólnych, a dodatkowo zawiera przykładową aplikację do wizualizacji plików IFC. Przeglądarka ta oparta jest na Qt 5 i OpenSceneGraph (OSG) i potrafi bardzo szybko wczytywać duże pliki IFC, dzięki czemu może być używana do porównywania wydajności innych przeglądarek IFC, takich jak Blender czy FreeCAD, które wewnętrznie korzystają z biblioteki IfcOpenShell.
Przykładowa przeglądarka IFC dołączona do dystrybucji źródłowej bibliotek IfcQuery/IFC++.
Uwaga: w powszechnym użyciu nazwy "IfcQuery", "IFC++" i "IfcPlusPlus" mogą być stosowane wymiennie, odnosząc się do tego samego: biblioteki C++ lub, bardziej precyzyjnie, darmowej przeglądarki IFC.
Instalacja
Dystrybucja IFC++ jest udostępniana jako kod źródłowy, więc aby korzystać z biblioteki i przeglądarki, kod musi zostać skompilowany.
IFC++ jest rozwijany głównie na platformie Windows, dlatego zawiera pliki rozwiązania (.sln) i projektu (.vcxproj), umożliwiające kompilację biblioteki dynamicznej IfcPlusPlus.dll przy użyciu Visual Studio. Bibliotekę statyczną libIfcPlusPlus.a można również wygenerować dla systemu Linux za pomocą CMake.
Uwaga: istnieje bardziej rozbudowana przeglądarka, która wykorzystuje wstępnie skompilowane biblioteki IFC++ przeznaczone na Windows. Przeglądarka ta jest darmowa w użyciu, ale nie jest open source. Można ją pobrać, pobierając pakiet SimpleViewerExampleQt.zip ze strony http://www.ifcquery.com/ i uruchamiając SimpleViewerExampleQt.exe. Przeglądarka jest samodzielna - wszystko, co potrzebne do jej uruchomienia, jest zawarte w archiwum .zip.
Kompilacja w systemie Windows
Skorzystaj z instrukcji w oficjalnym repozytorium ifcplusplus.
Kompilacja w systemie Linux
Ogólne instrukcje przedstawiają się następująco:
- Pobierz kod źródłowy IFC++ z jego głównego repozytorium.
- Zgromadź wszystkie zależności potrzebne do kompilacji, w tym kompilator C++, CMake, Make oraz pliki developerskie dla Boost, Qt 5, a także bibliotekę OpenSceneGraph (OSG) do wizualizacji.
- Uruchom
cmake, aby wygenerowaćMakefile, a następnie rozpocznij kompilację, wydając poleceniemake. - Zainstaluj biblioteki
libIfcPlusPlus.ailibcarve.sow odpowiedniej ścieżce bibliotek, aby były wykrywane przez przykładową przeglądarkę IFC++.
Wymagania wstępne
W dystrybucjach opartych na Debian/Ubuntu uzyskanie wymaganych plików developerskich zwykle jest proste.
sudo apt install git cmake gcc g++ libboost-all-dev
sudo apt install qt5-qmake qtbase5-dev qttools5-dev libqt5widgets5 libqt5opengl5-dev
Uzyskaj kod źródłowy projektu i umieść go w katalogu użytkownika, w którym masz pełne prawa do zapisu.
git clone https://github.com/ifcquery/ifcplusplus ifcplusplus-source
OpenSceneGraph
OpenSceneGraph (OSG) to zbiór bibliotek C++, który wykorzystuje OpenGL do wizualizacji 3D; może być używany w grach, rzeczywistości wirtualnej, wizualizacji naukowej i modelowaniu.
sudo apt install libopenscenegraph-3.4-dev
Jeżeli pliki w twojej dystrybucji są zbyt stare, możesz także skompilować biblioteki samodzielnie. Procedura jest opisana w głównym repozytorium, openscenegraph/OpenSceneGraph. Kompilacja jest stosunkowo prosta, chociaż mogą być potrzebne różne zależności, takie jak Qt 5, Freetype, Inventor, OpenEXR, COLLADA, ZLIB, GDAL, FFmpeg, Gstreamer, SDL, Cairo oraz 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 to biblioteka C++ do geometrycznej budowy brył (CSG), przeznaczona do wykonywania operacji boolowskich między dowolnymi siatkami wielokątnymi. Wraz z biblioteką IFC++ (libIfcPlusPlus.a), Carve jest używana przez przykładową przeglądarkę IFC++ do otwierania i wyświetlania plików IFC.
- Oryginalne repozytorium: carve, licencja GPL2, w latach 2009–2011.
- Nowe repozytorium: folded/carve, od 2011 roku; projekt przeszedł na licencję MIT od października 2015.
Ponieważ projekt jest obecnie objęty licencją MIT, kopie plików źródłowych Carve są dołączone do repozytorium IFC++. Oznacza to, że podczas kompilacji IFC++ zostanie również skompilowana biblioteka libcarve.so. Biblioteka ta musi być dostępna w systemie, aby przykładowa przeglądarka IFC++ działała poprawnie.
Konfiguracja CMake
Zaleca się wykonywanie konfiguracji i kompilacji w osobnym katalogu build, oddzielonym od katalogu źródłowego.
mkdir -p ifcplusplus-build
cd ifcplusplus-build
cmake ../ifcplusplus-source/
Domyślnie typ kompilacji to Release, ale można go również ustawić na Debug.
cmake -DCMAKE_BUILD_TYPE=Debug ../ifcplusplus-source/
Właściwa kompilacja
Jeżeli podczas konfiguracji za pomocą CMake nie pojawiły się żadne komunikaty o błędach, w katalogu build powinien zostać utworzony Makefile, dzięki czemu możesz przystąpić do kompilacji bibliotek, wydając polecenie make.
make -j N
N to liczba procesorów przypisana do procesu kompilacji; wybierz co najmniej o jeden mniej niż całkowita liczba rdzeni CPU, które posiadasz.
Testowanie kompilacji w katalogu build
Jeżeli kompilacja zakończyła się sukcesem, powinien powstać podkatalog Release/ z nowo skompilowanymi bibliotekami.
Release/libcarve.so
Release/libIfcPlusPlus.a
Release/SimpleViewerExample
Możesz uruchomić plik wykonywalny SimpleViewerExample, podając jako wejście plik IFC.
Release/SimpleViewerExample IfcOpenHouse.ifc
Jeżeli typ kompilacji został ustawiony na Debug, skompilowane biblioteki pojawią się w podkatalogu Debug/.
Instalacja skompilowanych bibliotek
Jeżeli kompilacja nie zgłosiła żadnych błędów, możesz uruchomić make install, aby skopiować nagłówki, skompilowane biblioteki oraz pliki wykonywalne do odpowiednich katalogów instalacyjnych.
sudo make install
Domyślnie CMAKE_INSTALL_PREFIX jest ustawiony na /usr/local/, więc wszystkie skompilowane pliki zostaną umieszczone w tym katalogu, co zazwyczaj wymaga uprawnień administratora.
/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
Ścieżka biblioteki
Gdy SimpleViewerExample zostanie umieszczony w /usr/local/bin, plik wykonywalny będzie dostępny w całym systemie. Jednak na niektórych platformach libcarve.so może nie zostać odnaleziony, jeśli jest zainstalowany w domyślnym katalogu /usr/local/lib.
SimpleViewerExample: error while loading shared libraries: libcarve.so: cannot open shared object file: No such file or directory
Jeżeli tak jest, może wystarczyć zaktualizowanie pamięci podręcznej loadera bibliotek ld.so poprzez wywołanie ldconfig:
sudo ldconfig
Lub może być konieczne najpierw przeniesienie biblioteki do właściwego katalogu:
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
Alternatywnie możesz ustawić zmienną LD_LIBRARY_PATH na katalog zawierający libcarve.so przed uruchomieniem pliku wykonywalnego:
LD_LIBRARY_PATH=/usr/local/lib SimpleViewerExample
Aby efekt ten był trwały, tę zmienną środowiskową można ustawić w pliku zasobów powłoki, na przykład w .bashrc, tak aby była propagowana do wszystkich instancji terminala podczas uruchamiania:
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
Usuwanie skompilowanych bibliotek
Aby usunąć zainstalowane biblioteki, wystarczy usunąć odpowiadające im pliki, które zostały zainstalowane.
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/
Poprawki dla systemu Linux
Biblioteka IFC++ jest rozwijana przez jej autora na systemie Windows. Oznacza to, że choć kod zależy od bibliotek wieloplatformowych, takich jak Boost, Qt i OpenSceneGraph, w większości testowany jest pod kątem kompilacji i działania na Windows. Niemniej jednak, z biegiem lat inni deweloperzy wprowadzili poprawki do projektu, dzięki czemu IFC++ można kompilować i uruchamiać również w dystrybucjach Linuxa.
W szczególności utrzymywany jest fork głównego projektu, zawierający drobne poprawki umożliwiające lepszą kompilację i działanie w Debianie.
Jeżeli kod z oficjalnego repozytorium nie działa lub wydaje się mieć problemy w systemie Linux, spróbuj postępować zgodnie z tymi samymi instrukcjami kompilacji, używając źródeł z tego alternatywnego repozytorium. Repozytorium to często pozostaje kilka commitów w tyle za główną dystrybucją, ale jego celem jest pozostanie aktualnym oraz wprowadzenie poprawek specyficznych dla Linuksa. Ulepszenia te są zwykle przesyłane z powrotem do głównego repozytorium, aby oficjalna gałąź kompilowała się w systemie Linux bez problemów.
Główny deweloper IFC++ nie wspiera bezpośrednio systemu Linux, więc deweloperzy korzystający z IFC++ na Linuksie powinni być przygotowani na rozwiązywanie problemów, ich naprawianie oraz przesyłanie poprawek do projektu.
Niewidoczne ikony
W przypadku SimpleViewerExample w głównym interfejsie znajdują się dwa przyciski, które są niewidoczne, jeśli nie zostanie odnaleziony niestandardowy arkusz stylów.
QIODevice::read (QFile, ":styles.css"): device not open
Styl musi być uwzględniony w konfiguracji CMake w sekcji poświęconej bibliotekom 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})
Więcej informacji
- Strona projektu IFC++
- Repozytorium ifcquery/ifcplusplus
- Alternatywne repozytorium, szczególnie dla Debiana: berndhahnebach/ifcplusplus
- Wątek na forum: IFC Viewer ifcplusplus (2013 do 2020)
- IfcPlusPlus compiled on Gentoo - questions and alternatives?
- Wątek na forum po niemiecku: IfcQuery / IfcPlusPlus selber kompilieren
- 2D Drafting: Sketch, Line, Polyline, Rectangle, Arc, Arc From 3 Points, Circle, Ellipse, Polygon, B-Spline, Bézier Curve, Cubic Bézier Curve, Point, Fillet
- 3D/BIM: Site, Building, Level, Space, Wall, Curtain Wall, Column, Beam, Slab, Door, Window, Covering, Pipe, Connector, Stairs, Roof, Panel, Frame, Fence, Truss, Equipment
- Reinforcement Tools: Custom Rebar, Straight Rebar, U-Shape Rebar, L-Shape Rebar, Stirrup, Bent-Shape Rebar, Helical Rebar, Column Reinforcement, Beam Reinforcement, Slab Reinforcement, Footing Reinforcement
- Generic 3D Tools: Profile, Box, Shape Builder, Facebinder, Objects Library, Component, External Reference
- Annotation: Aligned Dimension, Horizontal Dimension, Vertical Dimension, Text, Leader, Label, Hatch, Axis, Axis System, Grid, Section Plane, 2D Drawing, Section View, Section Cut, New Page, New View
- Snapping: Snap Lock, Snap Endpoint, Snap Midpoint, Snap Center, Snap Angle, Snap Intersection, Snap Perpendicular, Snap Extension, Snap Parallel, Snap Special, Snap Near, Snap Ortho, Snap Grid, Snap Working Plane, Snap Dimensions, Toggle Grid, Working Plane Front, Working Plane Top, Working Plane Side, Working Plane
- Modify: Move, Rotate, Scale, Mirror, Clone, Make Link, Copy, Simple Copy, Compound, 2D Offset, Offset, Trimex, Join, Split, Stretch, Draft to Sketch, Upgrade, Downgrade, Add Component, Remove Component, Array, Path Array, Polar Array, Point Array, Cut With Plane, Extrude, Union, Difference, Intersection
- Manage: BIM Setup, Setup Project, Manage Doors and Windows, Manage IFC Elements, Manage IFC Quantities, Manage IFC Properties, Manage Classification, Manage Layers, Material, BIM Report, Schedule, Preflight Checks, Annotation Styles
- Utils: Move to Trash, Working Plane View, Select Group, Set Slope, Working Plane Proxy, Add to Construction Group, Split Mesh, Mesh to Shape, Select Non-Manifold Meshes, Remove Shape From BIM, Close Holes, Merge Walls, Check, Toggle IFC B-Rep Flag, Toggle Subcomponents, Survey, IFC Diff, IFC Explorer, New IFC Spreadsheet, Image Plane, Unclone, Rewire, Glue, Re-Extrude
- Panel Tools: Panel, Panel Cut, Panel Sheet, Nest
- Structure Tools: Structure, Structural System, Multiple Structures
- IFC Tools: IFC Project, 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
- Additional: Preferences, Fine tuning, Import Export Preferences, IFC, DAE, OBJ, JSON, 3DS, SHP
- Materiał: Bryła, Ciecz, Nieliniowy materiał mechaniczny, Materiał zbrojony (beton), Edytor materiału
- Geometria elementu: Geometria elementu, Obrót w okół osi, Geometria elementu 2D, Element przepływu
Wiązania
- Elektromagnetyczne: Potencjał elektryczny, Gęstość prądu, Magnetyzacja
- Geometryczne: Obrót w płaszczyźnie, Zapis wyników z przekroju, Zdefiniuj odkształcenie
- Mechaniczne: Zdefiniuj przytwierdzenie, Zdefiniuj przemieszczenie, Zdefiniuj kontakt, Zdefiniuj powiązanie, Wiązanie sprężyny, Zdefiniuj siłę, Zdefiniuj obciążenie ciśnieniem, Zdefiniuj siłę odśrodkową, Zdefiniuj obciążenie ciężarem własnym
- Termiczne: Warunek początkowy temperatury, Zdefiniuj strumień ciepła, Zdefiniuj temperaturę, Zdefiniuj objętościowe źródło ciepła
- Zmieniające wiązania: Zdefiniuj przenikalność elektryczną próżni
- Siatki: Siatka Netgen, Siatka GMSH, Warstwa graniczna siatki, Obszar siatki, Grupa siatki, Utwórz zestaw węzłów, Siatka MES na obiekt środowiska Siatka
- Solver: Narzędzia CalculiX, Elmer, Mystran, Z88; Równania: Elastyczności, Elektrostatyczne, Siły elektrostatycznej, Magnetodynamiczne, RMagnetodynamiczne 2D, Przepływu, Strumienia, Ciepła; Solver: Kontrola pracy solvera, Uruchom solver
- Wyniki: Oczyszczanie z wyników, Prezentacja wyników; Postprocessing: Zastosuj zmiany, Prezentacja graficzna, Filtr rozpraszający, Skalarny filtr obcinający, Filtr odcięcia funkcji, Filtr odcięcia obszaru, Filtr konturów, Filtr danych wzdłuż linii, Wykres liniowości naprężeń, Filtr obcinania danych w punkcie, Utwórz funkcję, Filtr funkcji płaszczyzny, Filtr funkcji sfery, Filtr funkcji walca, Filtr funkcji prostopadłościanu
- Dodatkowe: Konfiguracja, Instalacja środowiska MES, Siatka, FEM Solver, CalculiX, Beton, Rodzaje elementów
- Jak zacząć
- Instalacja: Pobieranie programu, Windows, Linux, Mac, Dodatkowych komponentów, Docker, AppImage, Ubuntu Snap
- Podstawy: Informacje na temat FreeCAD, Interfejs użytkownika, Profil nawigacji myszką, Metody wyboru, Nazwa obiektu, Edytor ustawień, Środowiska pracy, Struktura dokumentu, Właściwości, Pomóż w rozwoju FreeCAD, Dotacje
- Pomoc: Poradniki, Wideo poradniki
- Środowiska pracy: Strona Startowa, Złożenie, BIM, CAM, Rysunek Roboczy, MES, Inspekcja, Siatka, OpenSCAD, Część, Projekt Części, Punkty, Inżynieria Wsteczna, Robot, Szkicownik, Arkusz Kalkulacyjny, Powierzchnia 3D, Rysunek Techniczny, Test Framework