diff --git a/CMakeLists.txt b/CMakeLists.txt index bde6067..4376185 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,24 @@ set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) find_package(Qt6 COMPONENTS Widgets OpenGLWidgets REQUIRED) +find_package(TBB REQUIRED) + +find_package(OpenCASCADE REQUIRED + COMPONENTS + FoundationClasses + ModelingData + ModelingAlgorithms + Visualization +) + +# Workaround for Debian's OpenCASCADE package not setting INCLUDE_DIRS correctly +if(NOT OpenCASCADE_INCLUDE_DIRS) + set(OpenCASCADE_INCLUDE_DIRS "/usr/include/opencascade") + message(STATUS "OpenCASCADE_INCLUDE_DIRS was not set. Forcing to /usr/include/opencascade") +endif() + +message(STATUS "OpenCASCADE_INCLUDE_DIRS: ${OpenCASCADE_INCLUDE_DIRS}") +message(STATUS "OpenCASCADE_LIBRARIES: ${OpenCASCADE_LIBRARIES}") add_executable(OpenCAD src/main.cpp @@ -24,4 +42,13 @@ add_executable(OpenCAD resources.qrc ) -target_link_libraries(OpenCAD PRIVATE Qt6::Widgets Qt6::OpenGLWidgets) +target_include_directories(OpenCAD PRIVATE ${OpenCASCADE_INCLUDE_DIRS}) +target_link_libraries(OpenCAD PRIVATE + Qt6::Widgets + Qt6::OpenGLWidgets + ${OpenCASCADE_FoundationClasses_LIBRARIES} + ${OpenCASCADE_ModelingData_LIBRARIES} + ${OpenCASCADE_ModelingAlgorithms_LIBRARIES} + ${OpenCASCADE_Visualization_LIBRARIES} + TBB::tbb +) diff --git a/src/SketchFeature.cpp b/src/SketchFeature.cpp index edc9129..c664988 100644 --- a/src/SketchFeature.cpp +++ b/src/SketchFeature.cpp @@ -20,6 +20,11 @@ SketchFeature::SketchPlane SketchFeature::plane() const return m_plane; } +const TopoDS_Shape& SketchFeature::shape() const +{ + return m_shape; +} + void SketchFeature::read(const QJsonObject& json) { Feature::read(json); diff --git a/src/SketchFeature.h b/src/SketchFeature.h index 8009028..4e32f79 100644 --- a/src/SketchFeature.h +++ b/src/SketchFeature.h @@ -1,6 +1,7 @@ #ifndef SKETCHFEATURE_H #define SKETCHFEATURE_H +#include #include "Feature.h" class SketchFeature : public Feature @@ -19,11 +20,14 @@ public: void setPlane(SketchPlane plane); SketchPlane plane() const; + const TopoDS_Shape& shape() const; + void read(const QJsonObject &json) override; void write(QJsonObject &json) const override; private: SketchPlane m_plane; + TopoDS_Shape m_shape; }; #endif // SKETCHFEATURE_H