Here are some notes on the IfcOS repo I made while exploring the code base. These might give an outside view of a newcomer to the source base and trying to understanding it as opposed to someone who is intimate familiar with it.
-
there are several subfolders for different build systems directly under root, like cmake, conda, nix etc. -> these folders should live under a common /tools
folder to make the use case clearer
-
most of the subfolders do not have a basic README
file to help understanding the content and usage
-
/choco/blenderbim - tools to build the BlenderBim add-on as a chocolates package
-
/cmake - main CMakeLists.txt file to build the IfcOS library with 1000+ LOC -> split up into smaller modules?
-
/conda - build setup files to use Conda
-
/docs - build the documentation using Sphinx and Doxygen, seems to be outdated, as some links within the Spinx setup point to an obsolete src/ifcblenderexport
folder
-
/nix - build setup files to use NixOS
-
/pyodide - build setup to use the Pyodide Python distribution for use with Node.js and WebAssembly
-
/test - downloads a lot of external .ifc
and .zip
files and perform tests on them, but partially also relies on external Blender installed
-
/win - windows build tools and scripts for use with Visual Studio
-
/bcf - simple Python implementation to handle bcf-xml files, has a dependency on ifcopenshell (Python API), but in my view not necessary for the core functionality of IfcOS
-
/blenderbim - the Blender add-on to use IFC -> should be a separate repo and use IfcOpenShell-core as a dependency
-
/bsdd - experimental wip library to interact with the buildingSMART Data Dictionary (bSDD) API, last commit
-
examples - C++ examples using IfcOS -> the folder should be located under /root
, most files lack an explanation or comments on what they do
-
/ifc2ca - use Code Aster in IFC-driven FEM analysis -> not a core functionality of IfcOS, rather an extension to use the IfcOS Python bindings with Code Aster
-
/ifc4d - utilities for converting to and from various 4 D software, uses the IfcOS python bindings
-
/ifc5d - utilities to import or export cost-related date from ifc files
-
/ifcbimtester - utility to test if an ifc files satisfies certain requirements, actually a standalone app and add-on
-
/ifcblender - legacy Blender import add-in -> should moved into a separate repositiory aligned with the BlenderBim source
-
/ifccityjson - utility converter CityJSON files to IFC
-
/ifcclash - utility for IFC-based clash detection
-
/ifccobie - utility to extract COBie data from IFC to spreadsheets
-
/ifcconvert - single C++ file to convert geometry from an IFC file to other tesselated and topological formats, basically a file converter, 1600+ LOC, no README
-
/ifccsv - utility to interact with IFC data through CSV
-
/ifcdiff - utility to compare IFC files
-
/ifcfm - prototype utility to supersede ifccobie, extract and analyse IFC data for the purpose of facility management
-
ifcgeom - core C++ files for IFC geometric types, converting IFC schema types to Opencascade geometry types? Needs investigation!
-
ifcgeom_schema_agnostic - ???
-
/ifcgeomserver - C++ example to expose IfcOS API through a cli-based stdin interface, 650+ LOC -> not part of the core library rather an external app
-
/ifcjni - JNI (Java Native Interface) to IfcOS for use with BIMserver.org
-
/ifcmax - outdated legacy extension for IFC support in 3DS Max -> just as the BlenderBim add-on an external project
-
/ifcopenshell-python - Python bindings and high-level API for IfcOS
-
/ifcopenshell
-
/api - python high-level functionality build on top of IfcOS C++ base functionality -> is this functionality also available from C++? If not, why not?
-
/express - this seems to be the source folder to extract C++ files from the IFC Express schema -> but why burried down into such a deep subfolder if it is integral to create the IfcOS functionality? -> this should be moved under a /tools
folder under /root
, as this is used to create IfcOS C++ code, but not for the actual use of IfcOS
-
/mvd - mvdXML checker and w3c SPARQL converter, as an IfcOpenShell submodule or stand-alone
-
/ifcparse - not yet explored, missing README
-
/ifcpatch - not yet explored, missing README
-
/ifcsverchok - not yet explored-> this seems to be yet another Blender Add-On
-
/ifctester - not yet explored
-
/ifcwrap - Python wrapper around the IfcOS C++ core build using SWIG
-
/opencdeserver - ???, as far as I can tell from the source code this folder has nothing to do with the IfcOpenShell project -> why is it in /src?
-
/qtviewer - an old sample program to display IFC files, last change 11 years ago, updated to use QT5 1 year ago -> should be a separate repo IfcOpenShell-Viewer with a dependency to IfcOpenShell-core, or at least under a /root/viewer
directory
-
/serializers - lots of serializers into/from different formats, huge files with a lot of LOCs, missing Readme.md
with use-case
-
/svgfill - a git submodule to https://github.com/IfcOpenShell/svgfill -> this should be located under a /root/thirdparty
or /root/external
folder to make the dependency relation clear
-
parts of the c++ code are not build as libraries, they are included via #include "../ifcgeom/IfcGeom.h"
, but should be included as #include "ifcgeom/IfcGeom.h"
to make them path independent