diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index efaad7e931..338355fa43 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -18,7 +18,7 @@ ################################################################################ cmake_minimum_required(VERSION 3.1.3) -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # not necessary, but encouraged project (IfcOpenShell VERSION 0.7.0) @@ -149,6 +149,8 @@ UNIFY_ENVVARS_AND_CACHE(MPFR_INCLUDE_DIR) UNIFY_ENVVARS_AND_CACHE(MPFR_LIBRARY_DIR) endif() +UNIFY_ENVVARS_AND_CACHE(EIGEN_DIR) + if (NOT MINIMAL_BUILD AND GLTF_SUPPORT AND BUILD_CONVERT) UNIFY_ENVVARS_AND_CACHE(JSON_INCLUDE_DIR) FIND_FILE(json_hpp "json.hpp" ${JSON_INCLUDE_DIR}/nlohmann) @@ -161,6 +163,14 @@ add_definitions(-DWITH_GLTF) set(SWIG_DEFINES ${SWIG_DEFINES} -DWITH_GLTF) endif() + +list(APPEND GEOMETRY_KERNELS opencascade) + +if (NOT MINIMAL_BUILD) +add_definitions(-DIFOPSH_USE_CGAL) +list(APPEND GEOMETRY_KERNELS cgal) +endif() + # Set INSTALL_RPATH for target MACRO(SET_INSTALL_RPATHS _target _paths) SET(${_target}_rpaths "") @@ -607,6 +617,7 @@ ENDIF() INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} ${OCC_INCLUDE_DIR} ${OPENCOLLADA_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${LIBXML2_INCLUDE_DIR} ${JSON_INCLUDE_DIR} ${HDF5_INCLUDE_DIR} + ${EIGEN_DIR} ) function(files_for_ifc_version IFC_VERSION RESULT_NAME) @@ -695,7 +706,7 @@ endif() set(IFCOPENSHELL_LIBRARIES IfcParse) if (BUILD_IFCGEOM) foreach(s ${SCHEMA_VERSIONS}) - set(IFCGEOM_SCHEMA_LIBRARIES ${IFCGEOM_SCHEMA_LIBRARIES} IfcGeom_ifc${s}) + set(IFCGEOM_SCHEMA_LIBRARIES ${IFCGEOM_SCHEMA_LIBRARIES} geometry_mapping_ifc${s}) endforeach() set(IFCOPENSHELL_LIBRARIES ${IFCOPENSHELL_LIBRARIES} IfcGeom ${IFCGEOM_SCHEMA_LIBRARIES} IfcGeom ${IFCGEOM_SCHEMA_LIBRARIES}) endif() @@ -739,36 +750,52 @@ endforeach() set(IFCPARSE_FILES ${IFCPARSE_CPP_FILES} ${IFCPARSE_H_FILES}) add_library(IfcParse ${IFCPARSE_FILES}) -set_target_properties(IfcParse PROPERTIES COMPILE_FLAGS -DIFC_PARSE_EXPORTS VERSION "0.6.0" SOVERSION "0.6") +set_target_properties(IfcParse PROPERTIES COMPILE_FLAGS -DIFC_PARSE_EXPORTS VERSION "0.8.0" SOVERSION "0.8") TARGET_LINK_LIBRARIES(IfcParse ${Boost_LIBRARIES} ${BCRYPT_LIBRARIES} ${LIBXML2_LIBRARIES}) if (BUILD_IFCGEOM) -# IfcGeom -file(GLOB IFCGEOM_H_FILES ../src/ifcgeom/*.h ../src/ifcgeom/*.i) -file(GLOB IFCGEOM_CPP_FILES ../src/ifcgeom/*.cpp) +foreach(kernel ${GEOMETRY_KERNELS}) + +string(TOUPPER ${kernel} KERNEL_UPPER) +file(GLOB IFCGEOM_H_FILES ../src/ifcgeom/kernels/${kernel}/*.h) +file(GLOB IFCGEOM_CPP_FILES ../src/ifcgeom/kernels/${kernel}/*.cpp) set(IFCGEOM_FILES ${IFCGEOM_CPP_FILES} ${IFCGEOM_H_FILES}) -foreach(s ${SCHEMA_VERSIONS}) - add_library(IfcGeom_ifc${s} STATIC ${IFCGEOM_FILES}) - set_target_properties(IfcGeom_ifc${s} PROPERTIES COMPILE_FLAGS "-DIFC_GEOM_EXPORTS -DIfcSchema=Ifc${s}") - TARGET_LINK_LIBRARIES(IfcGeom_ifc${s} IfcParse ${OPENCASCADE_LIBRARIES}) +add_library(geometry_kernel_${kernel} ${IFCGEOM_FILES}) +set_target_properties(geometry_kernel_${kernel} PROPERTIES COMPILE_FLAGS "-DIFC_GEOM_EXPORTS") +target_link_libraries(geometry_kernel_${kernel} ${${KERNEL_UPPER}_LIBRARIES}) +list(APPEND kernel_libraries geometry_kernel_${kernel}) + endforeach() -# IfcGeom (schema agnostic) -file(GLOB SCHEMA_AGNOSTIC_H_FILES ../src/ifcgeom_schema_agnostic/*.h) -file(GLOB SCHEMA_AGNOSTIC_CPP_FILES ../src/ifcgeom_schema_agnostic/*.cpp) +foreach(schema ${SCHEMA_VERSIONS}) + +file(GLOB IFCGEOM_I_FILES ../src/ifcgeom/mapping/*.i) +file(GLOB IFCGEOM_H_FILES ../src/ifcgeom/mapping/*.h) +file(GLOB IFCGEOM_CPP_FILES ../src/ifcgeom/mapping/*.cpp) +set(IFCGEOM_FILES ${IFCGEOM_CPP_FILES} ${IFCGEOM_H_FILES} ${IFCGEOM_I_FILES}) + +add_library(geometry_mapping_ifc${schema} STATIC ${IFCGEOM_FILES}) +set_target_properties(geometry_mapping_ifc${schema} PROPERTIES COMPILE_FLAGS "-DIFC_GEOM_EXPORTS -DIfcSchema=Ifc${schema}") +target_link_libraries(geometry_mapping_ifc${schema} IfcParse) +list(APPEND mapping_libraries geometry_mapping_ifc${schema}) + +endforeach() + +file(GLOB SCHEMA_AGNOSTIC_H_FILES ../src/ifcgeom/*.h) +file(GLOB SCHEMA_AGNOSTIC_CPP_FILES ../src/ifcgeom/*.cpp) set(SCHEMA_AGNOSTIC_FILES ${SCHEMA_AGNOSTIC_H_FILES} ${SCHEMA_AGNOSTIC_CPP_FILES}) add_library(IfcGeom ${SCHEMA_AGNOSTIC_FILES}) -set_target_properties(IfcGeom PROPERTIES COMPILE_FLAGS -DIFC_GEOM_EXPORTS VERSION "0.6.0" SOVERSION "0.6") +set_target_properties(IfcGeom PROPERTIES COMPILE_FLAGS -DIFC_GEOM_EXPORTS VERSION "0.8.0" SOVERSION "0.8") if (UNIX) find_package(Threads) endif() -TARGET_LINK_LIBRARIES(IfcGeom IfcParse ${IFCGEOM_SCHEMA_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) +target_link_libraries(IfcGeom ${kernel_libraries} ${mapping_libraries} ${CMAKE_THREAD_LIBS_INIT}) endif(BUILD_IFCGEOM) @@ -789,7 +816,7 @@ foreach(s ${SCHEMA_VERSIONS}) endforeach() add_library(Serializers ${SERIALIZERS_FILES}) -set_target_properties(Serializers PROPERTIES COMPILE_FLAGS "-DIFC_GEOM_EXPORTS ${CONVERT_PRECISION}" VERSION "0.6.0" SOVERSION "0.6") +set_target_properties(Serializers PROPERTIES COMPILE_FLAGS "-DIFC_GEOM_EXPORTS ${CONVERT_PRECISION}" VERSION "0.8.0" SOVERSION "0.8") TARGET_LINK_LIBRARIES(Serializers ${SERIALIZER_SCHEMA_LIBRARIES} ${OPENCOLLADA_LIBRARIES}) @@ -908,10 +935,6 @@ INSTALL(FILES ${IFCGEOM_H_FILES} DESTINATION ${INCLUDEDIR}/ifcgeom ) -INSTALL(FILES ${SCHEMA_AGNOSTIC_H_FILES} - DESTINATION ${INCLUDEDIR}/ifcgeom_schema_agnostic -) - INSTALL(TARGETS ${IFCGEOM_SCHEMA_LIBRARIES} IfcGeom ARCHIVE DESTINATION ${LIBDIR} LIBRARY DESTINATION ${LIBDIR} @@ -929,10 +952,6 @@ INSTALL(TARGETS Serializers ${SERIALIZER_SCHEMA_LIBRARIES} INSTALL(FILES ${SERIALIZERS_FILES} DESTINATION ${INCLUDEDIR}/serializers/ ) - -INSTALL(FILES ${SERIALIZERS_S_FILES} - DESTINATION ${INCLUDEDIR}/serializers/schema_dependent -) endif() IF(BUILD_QTVIEWER) diff --git a/nix/build-all.py b/nix/build-all.py index b052db4ae5..d206e20e0b 100644 --- a/nix/build-all.py +++ b/nix/build-all.py @@ -177,7 +177,7 @@ cecho(""" - How many compiler processes may be run in parallel. dependency_tree = { 'IfcParse': ('boost', 'libxml2', 'hdf5'), - 'IfcGeom': ('IfcParse', 'occ', 'json', 'cgal'), + 'IfcGeom': ('IfcParse', 'occ', 'json', 'cgal', 'eigen'), 'IfcConvert': ('IfcGeom',), 'OpenCOLLADA': ('libxml2', 'pcre'), 'IfcGeomServer': ('IfcGeom',), @@ -190,7 +190,8 @@ dependency_tree = { 'pcre': (), 'json': (), 'hdf5': (), - 'cgal': () + 'cgal': (), + 'eigen': (), } def v(dep): @@ -482,6 +483,9 @@ if "json" in targets: os.makedirs(os.path.dirname(json_install_path)) if not os.path.exists(json_install_path): urlretrieve(json_url, json_install_path) + +if "eigen" in targets: + git_clone_or_pull_repository("https://gitlab.com/libeigen/eigen.git", "{DEPS_DIR}/install/eigen-3.3.7".format(**locals()), revision="3.3.7") if "pcre" in targets: build_dependency( @@ -698,6 +702,7 @@ cmake_args = [ "-DBOOST_ROOT=" f"{DEPS_DIR}/install/boost-{BOOST_VERSION}", "-DGLTF_SUPPORT=" "ON", "-DJSON_INCLUDE_DIR=" f"{DEPS_DIR}/install/json", + "-DEIGEN_DIR=" f"{DEPS_DIR}/install/eigen-3.3.7", "-DBoost_NO_BOOST_CMAKE=" "On", "-DADD_COMMIT_SHA=" +("On" if ADD_COMMIT_SHA else "Off") ] diff --git a/src/ifcgeom_schema_agnostic/IfcRepresentationShapeItem.h b/src/ifcgeom/ConversionResult.h similarity index 100% rename from src/ifcgeom_schema_agnostic/IfcRepresentationShapeItem.h rename to src/ifcgeom/ConversionResult.h diff --git a/src/ifcgeom_schema_agnostic/Kernel.h b/src/ifcgeom/ConversionSettings.h similarity index 99% rename from src/ifcgeom_schema_agnostic/Kernel.h rename to src/ifcgeom/ConversionSettings.h index d78c89f79e..aeccb4c10a 100644 --- a/src/ifcgeom_schema_agnostic/Kernel.h +++ b/src/ifcgeom/ConversionSettings.h @@ -17,6 +17,7 @@ // unroll the loop with at least the amount of schemas we'd like support // for and then overflow into an existing empty include file. +/* #define INCLUDE_SCHEMA(n) \ BOOST_PP_IIF(BOOST_PP_GREATER(BOOST_PP_SEQ_SIZE(SCHEMA_SEQ), n), BOOST_PP_STRINGIZE(../ifcparse/BOOST_PP_CAT(Ifc,BOOST_PP_SEQ_ELEM(BOOST_PP_MIN(n, BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_POP_BACK(SCHEMA_SEQ))),SCHEMA_SEQ)).h), "empty.h") @@ -30,6 +31,7 @@ #include INCLUDE_SCHEMA(7) #include INCLUDE_SCHEMA(8) #include INCLUDE_SCHEMA(9) +*/ #include diff --git a/src/ifcgeom_schema_agnostic/GeometrySerializer.h b/src/ifcgeom/GeometrySerializer.h similarity index 100% rename from src/ifcgeom_schema_agnostic/GeometrySerializer.h rename to src/ifcgeom/GeometrySerializer.h diff --git a/src/ifcgeom_schema_agnostic/IfcGeomElement.h b/src/ifcgeom/IfcGeomElement.h similarity index 100% rename from src/ifcgeom_schema_agnostic/IfcGeomElement.h rename to src/ifcgeom/IfcGeomElement.h diff --git a/src/ifcgeom_schema_agnostic/IfcGeomFilter.h b/src/ifcgeom/IfcGeomFilter.h similarity index 100% rename from src/ifcgeom_schema_agnostic/IfcGeomFilter.h rename to src/ifcgeom/IfcGeomFilter.h diff --git a/src/ifcgeom_schema_agnostic/IfcGeomIterator.h b/src/ifcgeom/IfcGeomIterator.h similarity index 100% rename from src/ifcgeom_schema_agnostic/IfcGeomIterator.h rename to src/ifcgeom/IfcGeomIterator.h diff --git a/src/ifcgeom_schema_agnostic/IfcGeomIteratorSettings.cpp b/src/ifcgeom/IfcGeomIteratorSettings.cpp similarity index 100% rename from src/ifcgeom_schema_agnostic/IfcGeomIteratorSettings.cpp rename to src/ifcgeom/IfcGeomIteratorSettings.cpp diff --git a/src/ifcgeom_schema_agnostic/IfcGeomIteratorSettings.h b/src/ifcgeom/IfcGeomIteratorSettings.h similarity index 100% rename from src/ifcgeom_schema_agnostic/IfcGeomIteratorSettings.h rename to src/ifcgeom/IfcGeomIteratorSettings.h diff --git a/src/ifcgeom_schema_agnostic/IfcGeomMaterial.cpp b/src/ifcgeom/IfcGeomMaterial.cpp similarity index 100% rename from src/ifcgeom_schema_agnostic/IfcGeomMaterial.cpp rename to src/ifcgeom/IfcGeomMaterial.cpp diff --git a/src/ifcgeom_schema_agnostic/IfcGeomMaterial.h b/src/ifcgeom/IfcGeomMaterial.h similarity index 100% rename from src/ifcgeom_schema_agnostic/IfcGeomMaterial.h rename to src/ifcgeom/IfcGeomMaterial.h diff --git a/src/ifcgeom_schema_agnostic/IfcGeomRenderStyles.h b/src/ifcgeom/IfcGeomRenderStyles.h similarity index 100% rename from src/ifcgeom_schema_agnostic/IfcGeomRenderStyles.h rename to src/ifcgeom/IfcGeomRenderStyles.h diff --git a/src/ifcgeom_schema_agnostic/IfcGeomRepresentation.cpp b/src/ifcgeom/IfcGeomRepresentation.cpp similarity index 100% rename from src/ifcgeom_schema_agnostic/IfcGeomRepresentation.cpp rename to src/ifcgeom/IfcGeomRepresentation.cpp diff --git a/src/ifcgeom_schema_agnostic/IfcGeomRepresentation.h b/src/ifcgeom/IfcGeomRepresentation.h similarity index 100% rename from src/ifcgeom_schema_agnostic/IfcGeomRepresentation.h rename to src/ifcgeom/IfcGeomRepresentation.h diff --git a/src/ifcgeom/IfcGeomIteratorImplementation.cpp b/src/ifcgeom/Iterator.cpp similarity index 100% rename from src/ifcgeom/IfcGeomIteratorImplementation.cpp rename to src/ifcgeom/Iterator.cpp diff --git a/src/ifcgeom/IfcGeomIteratorImplementation.h b/src/ifcgeom/Iterator.h similarity index 100% rename from src/ifcgeom/IfcGeomIteratorImplementation.h rename to src/ifcgeom/Iterator.h diff --git a/src/ifcgeom_schema_agnostic/Serialization.cpp b/src/ifcgeom/Serialization/Serialization.cpp similarity index 100% rename from src/ifcgeom_schema_agnostic/Serialization.cpp rename to src/ifcgeom/Serialization/Serialization.cpp diff --git a/src/ifcgeom_schema_agnostic/Serialization.h b/src/ifcgeom/Serialization/Serialization.h similarity index 100% rename from src/ifcgeom_schema_agnostic/Serialization.h rename to src/ifcgeom/Serialization/Serialization.h diff --git a/src/ifcgeom/Serialization.cpp b/src/ifcgeom/Serialization/schema/Serialization.cpp similarity index 100% rename from src/ifcgeom/Serialization.cpp rename to src/ifcgeom/Serialization/schema/Serialization.cpp diff --git a/src/ifcgeom_schema_agnostic/Serializer.h b/src/ifcgeom/Serializer.h similarity index 100% rename from src/ifcgeom_schema_agnostic/Serializer.h rename to src/ifcgeom/Serializer.h diff --git a/src/ifcgeom_schema_agnostic/SurfaceStyle.cpp b/src/ifcgeom/SurfaceStyle.cpp similarity index 100% rename from src/ifcgeom_schema_agnostic/SurfaceStyle.cpp rename to src/ifcgeom/SurfaceStyle.cpp diff --git a/src/ifcgeom_schema_agnostic/empty.h b/src/ifcgeom/empty.h similarity index 100% rename from src/ifcgeom_schema_agnostic/empty.h rename to src/ifcgeom/empty.h diff --git a/src/ifcgeom_schema_agnostic/ifc_geom_api.h b/src/ifcgeom/ifc_geom_api.h similarity index 100% rename from src/ifcgeom_schema_agnostic/ifc_geom_api.h rename to src/ifcgeom/ifc_geom_api.h diff --git a/src/ifcgeom_schema_agnostic/IfcGeomTree.h b/src/ifcgeom/kernels/opencascade/IfcGeomTree.h similarity index 100% rename from src/ifcgeom_schema_agnostic/IfcGeomTree.h rename to src/ifcgeom/kernels/opencascade/IfcGeomTree.h diff --git a/src/ifcgeom/IfcGeom.cpp b/src/ifcgeom/kernels/opencascade/OpencascadeKernel.cpp similarity index 100% rename from src/ifcgeom/IfcGeom.cpp rename to src/ifcgeom/kernels/opencascade/OpencascadeKernel.cpp diff --git a/src/ifcgeom/IfcGeom.h b/src/ifcgeom/kernels/opencascade/OpencascadeKernel.h similarity index 100% rename from src/ifcgeom/IfcGeom.h rename to src/ifcgeom/kernels/opencascade/OpencascadeKernel.h diff --git a/src/ifcgeom_schema_agnostic/base_utils.cpp b/src/ifcgeom/kernels/opencascade/base_utils.cpp similarity index 100% rename from src/ifcgeom_schema_agnostic/base_utils.cpp rename to src/ifcgeom/kernels/opencascade/base_utils.cpp diff --git a/src/ifcgeom_schema_agnostic/base_utils.h b/src/ifcgeom/kernels/opencascade/base_utils.h similarity index 100% rename from src/ifcgeom_schema_agnostic/base_utils.h rename to src/ifcgeom/kernels/opencascade/base_utils.h diff --git a/src/ifcgeom_schema_agnostic/boolean_utils.cpp b/src/ifcgeom/kernels/opencascade/boolean_utils.cpp similarity index 100% rename from src/ifcgeom_schema_agnostic/boolean_utils.cpp rename to src/ifcgeom/kernels/opencascade/boolean_utils.cpp diff --git a/src/ifcgeom_schema_agnostic/boolean_utils.h b/src/ifcgeom/kernels/opencascade/boolean_utils.h similarity index 100% rename from src/ifcgeom_schema_agnostic/boolean_utils.h rename to src/ifcgeom/kernels/opencascade/boolean_utils.h diff --git a/src/ifcgeom_schema_agnostic/face_definition.cpp b/src/ifcgeom/kernels/opencascade/face_definition.cpp similarity index 100% rename from src/ifcgeom_schema_agnostic/face_definition.cpp rename to src/ifcgeom/kernels/opencascade/face_definition.cpp diff --git a/src/ifcgeom_schema_agnostic/face_definition.h b/src/ifcgeom/kernels/opencascade/face_definition.h similarity index 100% rename from src/ifcgeom_schema_agnostic/face_definition.h rename to src/ifcgeom/kernels/opencascade/face_definition.h diff --git a/src/ifcgeom_schema_agnostic/layerset.cpp b/src/ifcgeom/kernels/opencascade/layerset.cpp similarity index 100% rename from src/ifcgeom_schema_agnostic/layerset.cpp rename to src/ifcgeom/kernels/opencascade/layerset.cpp diff --git a/src/ifcgeom_schema_agnostic/layerset.h b/src/ifcgeom/kernels/opencascade/layerset.h similarity index 100% rename from src/ifcgeom_schema_agnostic/layerset.h rename to src/ifcgeom/kernels/opencascade/layerset.h diff --git a/src/ifcgeom_schema_agnostic/sweep_utils.cpp b/src/ifcgeom/kernels/opencascade/sweep_utils.cpp similarity index 100% rename from src/ifcgeom_schema_agnostic/sweep_utils.cpp rename to src/ifcgeom/kernels/opencascade/sweep_utils.cpp diff --git a/src/ifcgeom_schema_agnostic/sweep_utils.h b/src/ifcgeom/kernels/opencascade/sweep_utils.h similarity index 100% rename from src/ifcgeom_schema_agnostic/sweep_utils.h rename to src/ifcgeom/kernels/opencascade/sweep_utils.h diff --git a/src/ifcgeom_schema_agnostic/wire_builder.cpp b/src/ifcgeom/kernels/opencascade/wire_builder.cpp similarity index 100% rename from src/ifcgeom_schema_agnostic/wire_builder.cpp rename to src/ifcgeom/kernels/opencascade/wire_builder.cpp diff --git a/src/ifcgeom_schema_agnostic/wire_builder.h b/src/ifcgeom/kernels/opencascade/wire_builder.h similarity index 100% rename from src/ifcgeom_schema_agnostic/wire_builder.h rename to src/ifcgeom/kernels/opencascade/wire_builder.h diff --git a/src/ifcgeom_schema_agnostic/wire_utils.cpp b/src/ifcgeom/kernels/opencascade/wire_utils.cpp similarity index 100% rename from src/ifcgeom_schema_agnostic/wire_utils.cpp rename to src/ifcgeom/kernels/opencascade/wire_utils.cpp diff --git a/src/ifcgeom_schema_agnostic/wire_utils.h b/src/ifcgeom/kernels/opencascade/wire_utils.h similarity index 100% rename from src/ifcgeom_schema_agnostic/wire_utils.h rename to src/ifcgeom/kernels/opencascade/wire_utils.h diff --git a/src/ifcgeom/IfcAdvancedBrep.cpp b/src/ifcgeom/mapping/IfcAdvancedBrep.cpp similarity index 100% rename from src/ifcgeom/IfcAdvancedBrep.cpp rename to src/ifcgeom/mapping/IfcAdvancedBrep.cpp diff --git a/src/ifcgeom/IfcAnnotationFillArea.cpp b/src/ifcgeom/mapping/IfcAnnotationFillArea.cpp similarity index 100% rename from src/ifcgeom/IfcAnnotationFillArea.cpp rename to src/ifcgeom/mapping/IfcAnnotationFillArea.cpp diff --git a/src/ifcgeom/IfcArbitraryClosedProfileDef.cpp b/src/ifcgeom/mapping/IfcArbitraryClosedProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcArbitraryClosedProfileDef.cpp rename to src/ifcgeom/mapping/IfcArbitraryClosedProfileDef.cpp diff --git a/src/ifcgeom/IfcArbitraryOpenProfileDef.cpp b/src/ifcgeom/mapping/IfcArbitraryOpenProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcArbitraryOpenProfileDef.cpp rename to src/ifcgeom/mapping/IfcArbitraryOpenProfileDef.cpp diff --git a/src/ifcgeom/IfcArbitraryProfileDefWithVoids.cpp b/src/ifcgeom/mapping/IfcArbitraryProfileDefWithVoids.cpp similarity index 100% rename from src/ifcgeom/IfcArbitraryProfileDefWithVoids.cpp rename to src/ifcgeom/mapping/IfcArbitraryProfileDefWithVoids.cpp diff --git a/src/ifcgeom/IfcAxis1Placement.cpp b/src/ifcgeom/mapping/IfcAxis1Placement.cpp similarity index 100% rename from src/ifcgeom/IfcAxis1Placement.cpp rename to src/ifcgeom/mapping/IfcAxis1Placement.cpp diff --git a/src/ifcgeom/IfcAxis2Placement2D.cpp b/src/ifcgeom/mapping/IfcAxis2Placement2D.cpp similarity index 100% rename from src/ifcgeom/IfcAxis2Placement2D.cpp rename to src/ifcgeom/mapping/IfcAxis2Placement2D.cpp diff --git a/src/ifcgeom/IfcAxis2Placement3D.cpp b/src/ifcgeom/mapping/IfcAxis2Placement3D.cpp similarity index 100% rename from src/ifcgeom/IfcAxis2Placement3D.cpp rename to src/ifcgeom/mapping/IfcAxis2Placement3D.cpp diff --git a/src/ifcgeom/IfcBSplineCurveWithKnots.cpp b/src/ifcgeom/mapping/IfcBSplineCurveWithKnots.cpp similarity index 100% rename from src/ifcgeom/IfcBSplineCurveWithKnots.cpp rename to src/ifcgeom/mapping/IfcBSplineCurveWithKnots.cpp diff --git a/src/ifcgeom/IfcBSplineSurfaceWithKnots.cpp b/src/ifcgeom/mapping/IfcBSplineSurfaceWithKnots.cpp similarity index 100% rename from src/ifcgeom/IfcBSplineSurfaceWithKnots.cpp rename to src/ifcgeom/mapping/IfcBSplineSurfaceWithKnots.cpp diff --git a/src/ifcgeom/IfcBlock.cpp b/src/ifcgeom/mapping/IfcBlock.cpp similarity index 100% rename from src/ifcgeom/IfcBlock.cpp rename to src/ifcgeom/mapping/IfcBlock.cpp diff --git a/src/ifcgeom/IfcBooleanResult.cpp b/src/ifcgeom/mapping/IfcBooleanResult.cpp similarity index 100% rename from src/ifcgeom/IfcBooleanResult.cpp rename to src/ifcgeom/mapping/IfcBooleanResult.cpp diff --git a/src/ifcgeom/IfcBoundingBox.cpp b/src/ifcgeom/mapping/IfcBoundingBox.cpp similarity index 100% rename from src/ifcgeom/IfcBoundingBox.cpp rename to src/ifcgeom/mapping/IfcBoundingBox.cpp diff --git a/src/ifcgeom/IfcCShapeProfileDef.cpp b/src/ifcgeom/mapping/IfcCShapeProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcCShapeProfileDef.cpp rename to src/ifcgeom/mapping/IfcCShapeProfileDef.cpp diff --git a/src/ifcgeom/IfcCartesianPoint.cpp b/src/ifcgeom/mapping/IfcCartesianPoint.cpp similarity index 100% rename from src/ifcgeom/IfcCartesianPoint.cpp rename to src/ifcgeom/mapping/IfcCartesianPoint.cpp diff --git a/src/ifcgeom/IfcCartesianTransformationOperator2D.cpp b/src/ifcgeom/mapping/IfcCartesianTransformationOperator2D.cpp similarity index 100% rename from src/ifcgeom/IfcCartesianTransformationOperator2D.cpp rename to src/ifcgeom/mapping/IfcCartesianTransformationOperator2D.cpp diff --git a/src/ifcgeom/IfcCartesianTransformationOperator2DnonUniform.cpp b/src/ifcgeom/mapping/IfcCartesianTransformationOperator2DnonUniform.cpp similarity index 100% rename from src/ifcgeom/IfcCartesianTransformationOperator2DnonUniform.cpp rename to src/ifcgeom/mapping/IfcCartesianTransformationOperator2DnonUniform.cpp diff --git a/src/ifcgeom/IfcCartesianTransformationOperator3D.cpp b/src/ifcgeom/mapping/IfcCartesianTransformationOperator3D.cpp similarity index 100% rename from src/ifcgeom/IfcCartesianTransformationOperator3D.cpp rename to src/ifcgeom/mapping/IfcCartesianTransformationOperator3D.cpp diff --git a/src/ifcgeom/IfcCartesianTransformationOperator3DnonUniform.cpp b/src/ifcgeom/mapping/IfcCartesianTransformationOperator3DnonUniform.cpp similarity index 100% rename from src/ifcgeom/IfcCartesianTransformationOperator3DnonUniform.cpp rename to src/ifcgeom/mapping/IfcCartesianTransformationOperator3DnonUniform.cpp diff --git a/src/ifcgeom/IfcCenterLineProfileDef.cpp b/src/ifcgeom/mapping/IfcCenterLineProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcCenterLineProfileDef.cpp rename to src/ifcgeom/mapping/IfcCenterLineProfileDef.cpp diff --git a/src/ifcgeom/IfcCircle.cpp b/src/ifcgeom/mapping/IfcCircle.cpp similarity index 100% rename from src/ifcgeom/IfcCircle.cpp rename to src/ifcgeom/mapping/IfcCircle.cpp diff --git a/src/ifcgeom/IfcCircleHollowProfileDef.cpp b/src/ifcgeom/mapping/IfcCircleHollowProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcCircleHollowProfileDef.cpp rename to src/ifcgeom/mapping/IfcCircleHollowProfileDef.cpp diff --git a/src/ifcgeom/IfcCircleProfileDef.cpp b/src/ifcgeom/mapping/IfcCircleProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcCircleProfileDef.cpp rename to src/ifcgeom/mapping/IfcCircleProfileDef.cpp diff --git a/src/ifcgeom/IfcCompositeCurve.cpp b/src/ifcgeom/mapping/IfcCompositeCurve.cpp similarity index 100% rename from src/ifcgeom/IfcCompositeCurve.cpp rename to src/ifcgeom/mapping/IfcCompositeCurve.cpp diff --git a/src/ifcgeom/IfcCompositeProfileDef.cpp b/src/ifcgeom/mapping/IfcCompositeProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcCompositeProfileDef.cpp rename to src/ifcgeom/mapping/IfcCompositeProfileDef.cpp diff --git a/src/ifcgeom/IfcConnectedFaceSet.cpp b/src/ifcgeom/mapping/IfcConnectedFaceSet.cpp similarity index 100% rename from src/ifcgeom/IfcConnectedFaceSet.cpp rename to src/ifcgeom/mapping/IfcConnectedFaceSet.cpp diff --git a/src/ifcgeom/IfcCraneRailAShapeProfileDef.cpp b/src/ifcgeom/mapping/IfcCraneRailAShapeProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcCraneRailAShapeProfileDef.cpp rename to src/ifcgeom/mapping/IfcCraneRailAShapeProfileDef.cpp diff --git a/src/ifcgeom/IfcCsgSolid.cpp b/src/ifcgeom/mapping/IfcCsgSolid.cpp similarity index 100% rename from src/ifcgeom/IfcCsgSolid.cpp rename to src/ifcgeom/mapping/IfcCsgSolid.cpp diff --git a/src/ifcgeom/IfcCurveBoundedPlane.cpp b/src/ifcgeom/mapping/IfcCurveBoundedPlane.cpp similarity index 100% rename from src/ifcgeom/IfcCurveBoundedPlane.cpp rename to src/ifcgeom/mapping/IfcCurveBoundedPlane.cpp diff --git a/src/ifcgeom/IfcCylindricalSurface.cpp b/src/ifcgeom/mapping/IfcCylindricalSurface.cpp similarity index 100% rename from src/ifcgeom/IfcCylindricalSurface.cpp rename to src/ifcgeom/mapping/IfcCylindricalSurface.cpp diff --git a/src/ifcgeom/IfcDerivedProfileDef.cpp b/src/ifcgeom/mapping/IfcDerivedProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcDerivedProfileDef.cpp rename to src/ifcgeom/mapping/IfcDerivedProfileDef.cpp diff --git a/src/ifcgeom/IfcDirection.cpp b/src/ifcgeom/mapping/IfcDirection.cpp similarity index 100% rename from src/ifcgeom/IfcDirection.cpp rename to src/ifcgeom/mapping/IfcDirection.cpp diff --git a/src/ifcgeom/IfcEdge.cpp b/src/ifcgeom/mapping/IfcEdge.cpp similarity index 100% rename from src/ifcgeom/IfcEdge.cpp rename to src/ifcgeom/mapping/IfcEdge.cpp diff --git a/src/ifcgeom/IfcEdgeCurve.cpp b/src/ifcgeom/mapping/IfcEdgeCurve.cpp similarity index 100% rename from src/ifcgeom/IfcEdgeCurve.cpp rename to src/ifcgeom/mapping/IfcEdgeCurve.cpp diff --git a/src/ifcgeom/IfcEdgeLoop.cpp b/src/ifcgeom/mapping/IfcEdgeLoop.cpp similarity index 100% rename from src/ifcgeom/IfcEdgeLoop.cpp rename to src/ifcgeom/mapping/IfcEdgeLoop.cpp diff --git a/src/ifcgeom/IfcEllipse.cpp b/src/ifcgeom/mapping/IfcEllipse.cpp similarity index 100% rename from src/ifcgeom/IfcEllipse.cpp rename to src/ifcgeom/mapping/IfcEllipse.cpp diff --git a/src/ifcgeom/IfcEllipseProfileDef.cpp b/src/ifcgeom/mapping/IfcEllipseProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcEllipseProfileDef.cpp rename to src/ifcgeom/mapping/IfcEllipseProfileDef.cpp diff --git a/src/ifcgeom/IfcExtrudedAreaSolid.cpp b/src/ifcgeom/mapping/IfcExtrudedAreaSolid.cpp similarity index 100% rename from src/ifcgeom/IfcExtrudedAreaSolid.cpp rename to src/ifcgeom/mapping/IfcExtrudedAreaSolid.cpp diff --git a/src/ifcgeom/IfcExtrudedAreaSolidTapered.cpp b/src/ifcgeom/mapping/IfcExtrudedAreaSolidTapered.cpp similarity index 100% rename from src/ifcgeom/IfcExtrudedAreaSolidTapered.cpp rename to src/ifcgeom/mapping/IfcExtrudedAreaSolidTapered.cpp diff --git a/src/ifcgeom/IfcFace.cpp b/src/ifcgeom/mapping/IfcFace.cpp similarity index 100% rename from src/ifcgeom/IfcFace.cpp rename to src/ifcgeom/mapping/IfcFace.cpp diff --git a/src/ifcgeom/IfcFaceBasedSurfaceModel.cpp b/src/ifcgeom/mapping/IfcFaceBasedSurfaceModel.cpp similarity index 100% rename from src/ifcgeom/IfcFaceBasedSurfaceModel.cpp rename to src/ifcgeom/mapping/IfcFaceBasedSurfaceModel.cpp diff --git a/src/ifcgeom/IfcGeometricSet.cpp b/src/ifcgeom/mapping/IfcGeometricSet.cpp similarity index 100% rename from src/ifcgeom/IfcGeometricSet.cpp rename to src/ifcgeom/mapping/IfcGeometricSet.cpp diff --git a/src/ifcgeom/IfcHalfSpaceSolid.cpp b/src/ifcgeom/mapping/IfcHalfSpaceSolid.cpp similarity index 100% rename from src/ifcgeom/IfcHalfSpaceSolid.cpp rename to src/ifcgeom/mapping/IfcHalfSpaceSolid.cpp diff --git a/src/ifcgeom/IfcIShapeProfileDef.cpp b/src/ifcgeom/mapping/IfcIShapeProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcIShapeProfileDef.cpp rename to src/ifcgeom/mapping/IfcIShapeProfileDef.cpp diff --git a/src/ifcgeom/IfcIndexedPolyCurve.cpp b/src/ifcgeom/mapping/IfcIndexedPolyCurve.cpp similarity index 100% rename from src/ifcgeom/IfcIndexedPolyCurve.cpp rename to src/ifcgeom/mapping/IfcIndexedPolyCurve.cpp diff --git a/src/ifcgeom/IfcLShapeProfileDef.cpp b/src/ifcgeom/mapping/IfcLShapeProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcLShapeProfileDef.cpp rename to src/ifcgeom/mapping/IfcLShapeProfileDef.cpp diff --git a/src/ifcgeom/IfcLine.cpp b/src/ifcgeom/mapping/IfcLine.cpp similarity index 100% rename from src/ifcgeom/IfcLine.cpp rename to src/ifcgeom/mapping/IfcLine.cpp diff --git a/src/ifcgeom/IfcManifoldSolidBrep.cpp b/src/ifcgeom/mapping/IfcManifoldSolidBrep.cpp similarity index 100% rename from src/ifcgeom/IfcManifoldSolidBrep.cpp rename to src/ifcgeom/mapping/IfcManifoldSolidBrep.cpp diff --git a/src/ifcgeom/IfcMappedItem.cpp b/src/ifcgeom/mapping/IfcMappedItem.cpp similarity index 100% rename from src/ifcgeom/IfcMappedItem.cpp rename to src/ifcgeom/mapping/IfcMappedItem.cpp diff --git a/src/ifcgeom/IfcObjectPlacement.cpp b/src/ifcgeom/mapping/IfcObjectPlacement.cpp similarity index 100% rename from src/ifcgeom/IfcObjectPlacement.cpp rename to src/ifcgeom/mapping/IfcObjectPlacement.cpp diff --git a/src/ifcgeom/IfcOrientedEdge.cpp b/src/ifcgeom/mapping/IfcOrientedEdge.cpp similarity index 100% rename from src/ifcgeom/IfcOrientedEdge.cpp rename to src/ifcgeom/mapping/IfcOrientedEdge.cpp diff --git a/src/ifcgeom/IfcPlane.cpp b/src/ifcgeom/mapping/IfcPlane.cpp similarity index 100% rename from src/ifcgeom/IfcPlane.cpp rename to src/ifcgeom/mapping/IfcPlane.cpp diff --git a/src/ifcgeom/IfcPolyLoop.cpp b/src/ifcgeom/mapping/IfcPolyLoop.cpp similarity index 100% rename from src/ifcgeom/IfcPolyLoop.cpp rename to src/ifcgeom/mapping/IfcPolyLoop.cpp diff --git a/src/ifcgeom/IfcPolygonalBoundedHalfSpace.cpp b/src/ifcgeom/mapping/IfcPolygonalBoundedHalfSpace.cpp similarity index 100% rename from src/ifcgeom/IfcPolygonalBoundedHalfSpace.cpp rename to src/ifcgeom/mapping/IfcPolygonalBoundedHalfSpace.cpp diff --git a/src/ifcgeom/IfcPolygonalFaceSet.cpp b/src/ifcgeom/mapping/IfcPolygonalFaceSet.cpp similarity index 100% rename from src/ifcgeom/IfcPolygonalFaceSet.cpp rename to src/ifcgeom/mapping/IfcPolygonalFaceSet.cpp diff --git a/src/ifcgeom/IfcPolyline.cpp b/src/ifcgeom/mapping/IfcPolyline.cpp similarity index 100% rename from src/ifcgeom/IfcPolyline.cpp rename to src/ifcgeom/mapping/IfcPolyline.cpp diff --git a/src/ifcgeom/IfcRectangleHollowProfileDef.cpp b/src/ifcgeom/mapping/IfcRectangleHollowProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcRectangleHollowProfileDef.cpp rename to src/ifcgeom/mapping/IfcRectangleHollowProfileDef.cpp diff --git a/src/ifcgeom/IfcRectangleProfileDef.cpp b/src/ifcgeom/mapping/IfcRectangleProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcRectangleProfileDef.cpp rename to src/ifcgeom/mapping/IfcRectangleProfileDef.cpp diff --git a/src/ifcgeom/IfcRectangularPyramid.cpp b/src/ifcgeom/mapping/IfcRectangularPyramid.cpp similarity index 100% rename from src/ifcgeom/IfcRectangularPyramid.cpp rename to src/ifcgeom/mapping/IfcRectangularPyramid.cpp diff --git a/src/ifcgeom/IfcRectangularTrimmedSurface.cpp b/src/ifcgeom/mapping/IfcRectangularTrimmedSurface.cpp similarity index 100% rename from src/ifcgeom/IfcRectangularTrimmedSurface.cpp rename to src/ifcgeom/mapping/IfcRectangularTrimmedSurface.cpp diff --git a/src/ifcgeom/IfcRepresentation.cpp b/src/ifcgeom/mapping/IfcRepresentation.cpp similarity index 100% rename from src/ifcgeom/IfcRepresentation.cpp rename to src/ifcgeom/mapping/IfcRepresentation.cpp diff --git a/src/ifcgeom/IfcRevolvedAreaSolid.cpp b/src/ifcgeom/mapping/IfcRevolvedAreaSolid.cpp similarity index 100% rename from src/ifcgeom/IfcRevolvedAreaSolid.cpp rename to src/ifcgeom/mapping/IfcRevolvedAreaSolid.cpp diff --git a/src/ifcgeom/IfcRightCircularCone.cpp b/src/ifcgeom/mapping/IfcRightCircularCone.cpp similarity index 100% rename from src/ifcgeom/IfcRightCircularCone.cpp rename to src/ifcgeom/mapping/IfcRightCircularCone.cpp diff --git a/src/ifcgeom/IfcRightCircularCylinder.cpp b/src/ifcgeom/mapping/IfcRightCircularCylinder.cpp similarity index 100% rename from src/ifcgeom/IfcRightCircularCylinder.cpp rename to src/ifcgeom/mapping/IfcRightCircularCylinder.cpp diff --git a/src/ifcgeom/IfcRoundedRectangleProfileDef.cpp b/src/ifcgeom/mapping/IfcRoundedRectangleProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcRoundedRectangleProfileDef.cpp rename to src/ifcgeom/mapping/IfcRoundedRectangleProfileDef.cpp diff --git a/src/ifcgeom/IfcShellBasedSurfaceModel.cpp b/src/ifcgeom/mapping/IfcShellBasedSurfaceModel.cpp similarity index 100% rename from src/ifcgeom/IfcShellBasedSurfaceModel.cpp rename to src/ifcgeom/mapping/IfcShellBasedSurfaceModel.cpp diff --git a/src/ifcgeom/IfcSphere.cpp b/src/ifcgeom/mapping/IfcSphere.cpp similarity index 100% rename from src/ifcgeom/IfcSphere.cpp rename to src/ifcgeom/mapping/IfcSphere.cpp diff --git a/src/ifcgeom/IfcSphericalSurface.cpp b/src/ifcgeom/mapping/IfcSphericalSurface.cpp similarity index 100% rename from src/ifcgeom/IfcSphericalSurface.cpp rename to src/ifcgeom/mapping/IfcSphericalSurface.cpp diff --git a/src/ifcgeom/IfcSubedge.cpp b/src/ifcgeom/mapping/IfcSubedge.cpp similarity index 100% rename from src/ifcgeom/IfcSubedge.cpp rename to src/ifcgeom/mapping/IfcSubedge.cpp diff --git a/src/ifcgeom/IfcSurfaceCurve.cpp b/src/ifcgeom/mapping/IfcSurfaceCurve.cpp similarity index 100% rename from src/ifcgeom/IfcSurfaceCurve.cpp rename to src/ifcgeom/mapping/IfcSurfaceCurve.cpp diff --git a/src/ifcgeom/IfcSurfaceCurveSweptAreaSolid.cpp b/src/ifcgeom/mapping/IfcSurfaceCurveSweptAreaSolid.cpp similarity index 100% rename from src/ifcgeom/IfcSurfaceCurveSweptAreaSolid.cpp rename to src/ifcgeom/mapping/IfcSurfaceCurveSweptAreaSolid.cpp diff --git a/src/ifcgeom/IfcSurfaceOfLinearExtrusion.cpp b/src/ifcgeom/mapping/IfcSurfaceOfLinearExtrusion.cpp similarity index 100% rename from src/ifcgeom/IfcSurfaceOfLinearExtrusion.cpp rename to src/ifcgeom/mapping/IfcSurfaceOfLinearExtrusion.cpp diff --git a/src/ifcgeom/IfcSurfaceOfRevolution.cpp b/src/ifcgeom/mapping/IfcSurfaceOfRevolution.cpp similarity index 100% rename from src/ifcgeom/IfcSurfaceOfRevolution.cpp rename to src/ifcgeom/mapping/IfcSurfaceOfRevolution.cpp diff --git a/src/ifcgeom/IfcSweptDiskSolid.cpp b/src/ifcgeom/mapping/IfcSweptDiskSolid.cpp similarity index 100% rename from src/ifcgeom/IfcSweptDiskSolid.cpp rename to src/ifcgeom/mapping/IfcSweptDiskSolid.cpp diff --git a/src/ifcgeom/IfcTShapeProfileDef.cpp b/src/ifcgeom/mapping/IfcTShapeProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcTShapeProfileDef.cpp rename to src/ifcgeom/mapping/IfcTShapeProfileDef.cpp diff --git a/src/ifcgeom/IfcToroidalSurface.cpp b/src/ifcgeom/mapping/IfcToroidalSurface.cpp similarity index 100% rename from src/ifcgeom/IfcToroidalSurface.cpp rename to src/ifcgeom/mapping/IfcToroidalSurface.cpp diff --git a/src/ifcgeom/IfcTrapeziumProfileDef.cpp b/src/ifcgeom/mapping/IfcTrapeziumProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcTrapeziumProfileDef.cpp rename to src/ifcgeom/mapping/IfcTrapeziumProfileDef.cpp diff --git a/src/ifcgeom/IfcTriangulatedFaceSet.cpp b/src/ifcgeom/mapping/IfcTriangulatedFaceSet.cpp similarity index 100% rename from src/ifcgeom/IfcTriangulatedFaceSet.cpp rename to src/ifcgeom/mapping/IfcTriangulatedFaceSet.cpp diff --git a/src/ifcgeom/IfcTrimmedCurve.cpp b/src/ifcgeom/mapping/IfcTrimmedCurve.cpp similarity index 100% rename from src/ifcgeom/IfcTrimmedCurve.cpp rename to src/ifcgeom/mapping/IfcTrimmedCurve.cpp diff --git a/src/ifcgeom/IfcUShapeProfileDef.cpp b/src/ifcgeom/mapping/IfcUShapeProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcUShapeProfileDef.cpp rename to src/ifcgeom/mapping/IfcUShapeProfileDef.cpp diff --git a/src/ifcgeom/IfcVector.cpp b/src/ifcgeom/mapping/IfcVector.cpp similarity index 100% rename from src/ifcgeom/IfcVector.cpp rename to src/ifcgeom/mapping/IfcVector.cpp diff --git a/src/ifcgeom/IfcZShapeProfileDef.cpp b/src/ifcgeom/mapping/IfcZShapeProfileDef.cpp similarity index 100% rename from src/ifcgeom/IfcZShapeProfileDef.cpp rename to src/ifcgeom/mapping/IfcZShapeProfileDef.cpp diff --git a/src/ifcgeom_schema_agnostic/Kernel.cpp b/src/ifcgeom/mapping/Kernel.cpp similarity index 100% rename from src/ifcgeom_schema_agnostic/Kernel.cpp rename to src/ifcgeom/mapping/Kernel.cpp diff --git a/src/ifcgeom_schema_agnostic/profile_helper.cpp b/src/ifcgeom/profile_helper.cpp similarity index 100% rename from src/ifcgeom_schema_agnostic/profile_helper.cpp rename to src/ifcgeom/profile_helper.cpp diff --git a/src/ifcgeom_schema_agnostic/profile_helper.h b/src/ifcgeom/profile_helper.h similarity index 100% rename from src/ifcgeom_schema_agnostic/profile_helper.h rename to src/ifcgeom/profile_helper.h diff --git a/src/ifcgeom_schema_agnostic/shape_item.cpp b/src/ifcgeom/shape_item.cpp similarity index 100% rename from src/ifcgeom_schema_agnostic/shape_item.cpp rename to src/ifcgeom/shape_item.cpp diff --git a/src/ifcgeom_schema_agnostic/IfcGeomShapeType.h b/src/ifcgeom_schema_agnostic/IfcGeomShapeType.h deleted file mode 100644 index 3d2c11233a..0000000000 --- a/src/ifcgeom_schema_agnostic/IfcGeomShapeType.h +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************** -* * -* This file is part of IfcOpenShell. * -* * -* IfcOpenShell is free software: you can redistribute it and/or modify * -* it under the terms of the Lesser GNU General Public License as published by * -* the Free Software Foundation, either version 3.0 of the License, or * -* (at your option) any later version. * -* * -* IfcOpenShell is distributed in the hope that it will be useful, * -* but WITHOUT ANY WARRANTY; without even the implied warranty of * -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -* Lesser GNU General Public License for more details. * -* * -* You should have received a copy of the Lesser GNU General Public License * -* along with this program. If not, see . * -* * -********************************************************************************/ - -#ifndef IFCGEOMSHAPETYPE_H -#define IFCGEOMSHAPETYPE_H - -namespace IfcGeom { - - enum ShapeType { - ST_SHAPELIST, - ST_SHAPE, - ST_FACE, - ST_WIRE, - ST_CURVE, - ST_EDGE, - ST_VERTEX, - ST_OTHER - }; - -} - -#endif \ No newline at end of file diff --git a/src/ifcgeom_schema_agnostic/IteratorCache.h b/src/ifcgeom_schema_agnostic/IteratorCache.h deleted file mode 100644 index 2f92028359..0000000000 --- a/src/ifcgeom_schema_agnostic/IteratorCache.h +++ /dev/null @@ -1,31 +0,0 @@ -/******************************************************************************** - * * - * This file is part of IfcOpenShell. * - * * - * IfcOpenShell is free software: you can redistribute it and/or modify * - * it under the terms of the Lesser GNU General Public License as published by * - * the Free Software Foundation, either version 3.0 of the License, or * - * (at your option) any later version. * - * * - * IfcOpenShell is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * Lesser GNU General Public License for more details. * - * * - * You should have received a copy of the Lesser GNU General Public License * - * along with this program. If not, see . * - * * - ********************************************************************************/ - -#ifndef ITERATOR_CACHE_H -#define ITERATOR_CACHE_H - -namespace IfcGeom { - - class IteratorCache { - - }; - -} - -#endif \ No newline at end of file diff --git a/src/ifcgeom_schema_agnostic/IteratorImplementation.cpp b/src/ifcgeom_schema_agnostic/IteratorImplementation.cpp deleted file mode 100644 index 07c7819635..0000000000 --- a/src/ifcgeom_schema_agnostic/IteratorImplementation.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "IteratorImplementation.h" - -#include -#include -#include - -// Declares the schema-based external iterator initialization routines: -// - extern void init_IteratorImplementation_Ifc2x3(IteratorFactoryImplementation*); -// - ... -#define EXTERNAL_DEFS(r, data, elem) \ - extern void BOOST_PP_CAT(init_IteratorImplementation_Ifc, elem)(IteratorFactoryImplementation*); - -// Declares the schema-based external iterator initialization routines: -// - init_IteratorImplementation_Ifc2x3(this); -// - ... -#define CALL_DEFS(r, data, elem) \ - BOOST_PP_CAT(init_IteratorImplementation_Ifc, elem)(this); - -IFC_GEOM_API IteratorFactoryImplementation& iterator_implementations() { - static IteratorFactoryImplementation impl; - return impl; -} - -BOOST_PP_SEQ_FOR_EACH(EXTERNAL_DEFS, , SCHEMA_SEQ) - -IteratorFactoryImplementation::IteratorFactoryImplementation() { - BOOST_PP_SEQ_FOR_EACH(CALL_DEFS, , SCHEMA_SEQ) -} - -void IteratorFactoryImplementation::bind(const std::string& schema_name, iterator_fn fn) { - const std::string schema_name_lower = boost::to_lower_copy(schema_name); - this->insert(std::make_pair(schema_name_lower, fn)); -} - -IfcGeom::IteratorImplementation* IteratorFactoryImplementation::construct(const std::string& schema_name, const IfcGeom::IteratorSettings& settings, IfcParse::IfcFile* file, const std::vector& filters, int num_threads) { - const std::string schema_name_lower = boost::to_lower_copy(schema_name); - typename std::map::const_iterator it; - it = this->find(schema_name_lower); - if (it == this->end()) { - throw IfcParse::IfcException("No geometry iterator registered for " + schema_name); - } - return it->second(settings, file, filters, num_threads); -} diff --git a/src/ifcgeom_schema_agnostic/IteratorImplementation.h b/src/ifcgeom_schema_agnostic/IteratorImplementation.h deleted file mode 100644 index fc9ca78aeb..0000000000 --- a/src/ifcgeom_schema_agnostic/IteratorImplementation.h +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************************** - * * - * This file is part of IfcOpenShell. * - * * - * IfcOpenShell is free software: you can redistribute it and/or modify * - * it under the terms of the Lesser GNU General Public License as published by * - * the Free Software Foundation, either version 3.0 of the License, or * - * (at your option) any later version. * - * * - * IfcOpenShell is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * Lesser GNU General Public License for more details. * - * * - * You should have received a copy of the Lesser GNU General Public License * - * along with this program. If not, see . * - * * - ********************************************************************************/ - -#ifndef ITERATOR_IMPLEMENTATION_H -#define ITERATOR_IMPLEMENTATION_H - -#include "../ifcparse/IfcFile.h" - -#include "../ifcgeom_schema_agnostic/IfcGeomFilter.h" -#include "../ifcgeom_schema_agnostic/GeometrySerializer.h" -#include "../ifcgeom_schema_agnostic/IfcGeomIteratorSettings.h" - -#include - -#include - -#include -#include - -namespace IfcGeom { - class IteratorImplementation; - - class Element; - - class BRepElement; -} - -typedef boost::function4&, int> iterator_fn; - -class IFC_GEOM_API IteratorFactoryImplementation : public std::map { -public: - IteratorFactoryImplementation(); - void bind(const std::string& schema_name, iterator_fn fn); - IfcGeom::IteratorImplementation* construct(const std::string& schema_name, const IfcGeom::IteratorSettings&, IfcParse::IfcFile*, const std::vector&, int); -}; - -IFC_GEOM_API IteratorFactoryImplementation& iterator_implementations(); - -namespace IfcGeom { - - class IteratorImplementation { - protected: - GeometrySerializer* cache_ = nullptr; - public: - void set_cache(GeometrySerializer* cache) { cache_ = cache; } - - virtual bool initialize() = 0; - virtual void compute_bounds(bool with_geometry) = 0; - virtual const gp_XYZ& bounds_min() const = 0; - virtual const gp_XYZ& bounds_max() const = 0; - virtual int progress() const = 0; - virtual const std::string& getUnitName() const = 0; - virtual double getUnitMagnitude() const = 0; - virtual IfcParse::IfcFile* file() const = 0; - virtual IfcUtil::IfcBaseClass* next() = 0; - virtual Element* get() = 0; - virtual BRepElement* get_native() = 0; - virtual const Element* get_object(int id) = 0; - virtual IfcUtil::IfcBaseClass* create() = 0; - }; - -} - -#endif diff --git a/win/build-deps.cmd b/win/build-deps.cmd index 4c7d1aa591..1aa9508a7f 100644 --- a/win/build-deps.cmd +++ b/win/build-deps.cmd @@ -473,6 +473,15 @@ IF NOT %ERRORLEVEL%==0 GOTO :Error call :InstallCMakeProject "%DEPENDENCY_DIR%\%BUILD_DIR%" %BUILD_CFG% IF NOT %ERRORLEVEL%==0 GOTO :Error +:Eigen +set DEPENDENCY_NAME=eigen +call :DownloadFile http://bitbucket.org/eigen/eigen/get/3.3.7.zip "%DEPS_DIR%" eigen-eigen-323c052e1731.zip +IF NOT %ERRORLEVEL%==0 GOTO :Error +call :ExtractArchive eigen-eigen-323c052e1731.zip "%DEPS_DIR%" "%DEPS_DIR%\eigen" +IF NOT %ERRORLEVEL%==0 GOTO :Error +IF NOT EXIST "%INSTALL_DIR%\Eigen\Eigen". mkdir "%INSTALL_DIR%\Eigen\Eigen" +robocopy /MIR "%DEPS_DIR%\eigen-eigen-323c052e1731\Eigen" "%INSTALL_DIR%\Eigen\Eigen" + :Successful echo. call "%~dp0\utils\cecho.cmd" 0 10 "%PROJECT_NAME% dependencies built." diff --git a/win/run-cmake.bat b/win/run-cmake.bat index 714919ae49..92741419bc 100755 --- a/win/run-cmake.bat +++ b/win/run-cmake.bat @@ -109,6 +109,7 @@ set GMP_INCLUDE_DIR=%INSTALL_DIR%\mpir set GMP_LIBRARY_DIR=%INSTALL_DIR%\mpir set MPFR_INCLUDE_DIR=%INSTALL_DIR%\mpfr set MPFR_LIBRARY_DIR=%INSTALL_DIR%\mpfr +set EIGEN_DIR=%INSTALL_DIR%\Eigen echo. call cecho.cmd 0 10 "Script configuration:" @@ -141,6 +142,7 @@ echo GMP_INCLUDE_DIR = %GMP_INCLUDE_DIR% echo GMP_LIBRARY_DIR = %GMP_LIBRARY_DIR% echo MPFR_INCLUDE_DIR = %MPFR_INCLUDE_DIR% echo MPFR_LIBRARY_DIR = %MPFR_LIBRARY_DIR% +echo EIGEN_DIR = %EIGEN_DIR% echo. echo CMAKE_INSTALL_PREFIX = %CMAKE_INSTALL_PREFIX% echo.