From 847263fa5eafa51cc6be5737eac9af427ee82497 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Tue, 13 Jan 2026 00:07:47 +0100 Subject: [PATCH] PartDesign: Extrude: Fix upToShape document not recomputing correctly (#26696) * PartDesign: Extrude: Fix dir for upToShape * Update FeatureExtrude.h * Update FeatureExtrude.h * Update FeatureExtrude.cpp * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update FeatureExtrude.cpp * Update FeatureExtrude.h --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/Mod/PartDesign/App/FeatureExtrude.cpp | 30 +++++++++++++++-------- src/Mod/PartDesign/App/FeatureExtrude.h | 4 ++- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/Mod/PartDesign/App/FeatureExtrude.cpp b/src/Mod/PartDesign/App/FeatureExtrude.cpp index d3fd2304b9..41f36ed19f 100644 --- a/src/Mod/PartDesign/App/FeatureExtrude.cpp +++ b/src/Mod/PartDesign/App/FeatureExtrude.cpp @@ -494,7 +494,8 @@ App::DocumentObjectExecReturn* FeatureExtrude::buildExtrusion(ExtrudeOptions opt dir, offset1, makeface, - base + base, + invObjLoc ); prisms.push_back(prism1); } @@ -517,7 +518,8 @@ App::DocumentObjectExecReturn* FeatureExtrude::buildExtrusion(ExtrudeOptions opt dir, offset1, makeface, - base + base, + invObjLoc ); if (!prism1.isNull() && !prism1.getShape().IsNull()) { prisms.push_back(prism1); @@ -535,7 +537,8 @@ App::DocumentObjectExecReturn* FeatureExtrude::buildExtrusion(ExtrudeOptions opt dir2, offset1, makeface, - base + base, + invObjLoc ); if (!prism2.isNull() && !prism2.getShape().IsNull()) { prisms.push_back(prism2); @@ -561,7 +564,8 @@ App::DocumentObjectExecReturn* FeatureExtrude::buildExtrusion(ExtrudeOptions opt dir, offset1, makeface, - base + base, + invObjLoc ); if (!prism1.isNull() && !prism1.getShape().IsNull()) { prisms.push_back(prism1); @@ -580,7 +584,8 @@ App::DocumentObjectExecReturn* FeatureExtrude::buildExtrusion(ExtrudeOptions opt dir, offset1, makeface, - base + base, + invObjLoc ); prisms.push_back(prism1); @@ -624,7 +629,8 @@ App::DocumentObjectExecReturn* FeatureExtrude::buildExtrusion(ExtrudeOptions opt dir2, offset2, makeface, - base + base, + invObjLoc ); if (!prism.isNull() && !prism.getShape().IsNull()) { prisms.push_back(prism); @@ -646,7 +652,8 @@ App::DocumentObjectExecReturn* FeatureExtrude::buildExtrusion(ExtrudeOptions opt dir, offset1, makeface, - base + base, + invObjLoc ); if (!prism.isNull() && !prism.getShape().IsNull()) { prisms.push_back(prism); @@ -663,7 +670,8 @@ App::DocumentObjectExecReturn* FeatureExtrude::buildExtrusion(ExtrudeOptions opt dir, offset1, makeface, - base + base, + invObjLoc ); if (!prism1.isNull() && !prism1.getShape().IsNull()) { prisms.push_back(prism1); @@ -680,7 +688,8 @@ App::DocumentObjectExecReturn* FeatureExtrude::buildExtrusion(ExtrudeOptions opt dir2, offset2, makeface, - base + base, + invObjLoc ); if (!prism2.isNull() && !prism2.getShape().IsNull()) { prisms.push_back(prism2); @@ -830,7 +839,8 @@ TopoShape FeatureExtrude::generateSingleExtrusionSide( gp_Dir dir, double offsetVal, bool makeFace, - const TopoShape& base + const TopoShape& base, + TopLoc_Location& invObjLoc ) { TopoShape prism(0, getDocument()->getStringHasher()); diff --git a/src/Mod/PartDesign/App/FeatureExtrude.h b/src/Mod/PartDesign/App/FeatureExtrude.h index 2fe73a8531..70cdd827fa 100644 --- a/src/Mod/PartDesign/App/FeatureExtrude.h +++ b/src/Mod/PartDesign/App/FeatureExtrude.h @@ -31,6 +31,7 @@ class gp_Dir; class TopoDS_Face; class TopoDS_Shape; +class TopLoc_Location; namespace PartDesign { @@ -115,7 +116,8 @@ protected: gp_Dir dir, double offsetVal, bool makeFace, - const TopoShape& base // The base shape for context (global CS) + const TopoShape& base, // The base shape for context (global CS) + TopLoc_Location& invObjLoc // MUST be passed. Cannot be re-accessed, see #26677 ); };