diff --git a/src/Mod/TechDraw/App/DrawViewDetail.cpp b/src/Mod/TechDraw/App/DrawViewDetail.cpp index b02d295408..abafc89f6a 100644 --- a/src/Mod/TechDraw/App/DrawViewDetail.cpp +++ b/src/Mod/TechDraw/App/DrawViewDetail.cpp @@ -84,6 +84,7 @@ #include "DrawUtil.h" #include "DrawViewDetail.h" #include "DrawProjGroupItem.h" +#include "DrawViewSection.h" using namespace TechDraw; using namespace std; @@ -172,7 +173,18 @@ App::DocumentObjectExecReturn *DrawViewDetail::execute(void) dpgi= static_cast(dvp); } - TopoDS_Shape shape = dvp->getSourceShapeFused(); + DrawViewSection* dvs = nullptr; + if (dvp->isDerivedFrom(TechDraw::DrawViewSection::getClassTypeId())) { + dvs= static_cast(dvp); + } + + TopoDS_Shape shape; + if (dvs != nullptr) { + shape = dvs->getCutShape(); + } else { + shape = dvp->getSourceShapeFused(); + } + if (shape.IsNull()) { return new App::DocumentObjectExecReturn("DVD - Linked shape object is invalid"); } diff --git a/src/Mod/TechDraw/App/DrawViewSection.cpp b/src/Mod/TechDraw/App/DrawViewSection.cpp index 497c8dcb99..bcb69e00d1 100644 --- a/src/Mod/TechDraw/App/DrawViewSection.cpp +++ b/src/Mod/TechDraw/App/DrawViewSection.cpp @@ -250,6 +250,7 @@ App::DocumentObjectExecReturn *DrawViewSection::execute(void) return DrawView::execute(); } + m_cutShape = rawShape; gp_Pnt inputCenter; try { inputCenter = TechDrawGeometry::findCentroid(rawShape, diff --git a/src/Mod/TechDraw/App/DrawViewSection.h b/src/Mod/TechDraw/App/DrawViewSection.h index 66efda6a81..de28b28a1f 100644 --- a/src/Mod/TechDraw/App/DrawViewSection.h +++ b/src/Mod/TechDraw/App/DrawViewSection.h @@ -30,6 +30,7 @@ #include #include +#include #include #include "DrawViewPart.h" @@ -94,6 +95,8 @@ public: std::vector getDrawableLines(int i = 0); std::vector getDecodedSpecsFromFile(std::string fileSpec, std::string myPattern); + TopoDS_Shape getCutShape(void) {return m_cutShape;} + static const char* SectionDirEnums[]; protected: @@ -108,6 +111,7 @@ protected: gp_Pnt faceCenter, const Base::Vector3d &direction); void getParameters(void); + TopoDS_Shape m_cutShape; }; typedef App::FeaturePythonT DrawViewSectionPython;