From 0b4e01047f824fc8a7e62906818efadea610f56a Mon Sep 17 00:00:00 2001 From: Florian Foinant-Willig Date: Mon, 10 Jun 2024 18:21:32 +0200 Subject: [PATCH] Fix can't pad a sketch on datum plane (#14397) * Fix can't pad a sketch on datum plane * Add a unit test for Pad a sketch on datum plane --- src/Mod/PartDesign/App/FeatureExtrude.cpp | 2 +- src/Mod/PartDesign/PartDesignTests/TestPad.py | 20 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/Mod/PartDesign/App/FeatureExtrude.cpp b/src/Mod/PartDesign/App/FeatureExtrude.cpp index bba40c1425..c54309ecc1 100644 --- a/src/Mod/PartDesign/App/FeatureExtrude.cpp +++ b/src/Mod/PartDesign/App/FeatureExtrude.cpp @@ -708,7 +708,7 @@ App::DocumentObjectExecReturn* FeatureExtrude::buildExtrusion(ExtrudeOptions opt prism = refineShapeIfActive(prism); this->AddSubShape.setValue(prism); - if (!base.isNull() && fuse) { + if (base.shapeType(true) <= TopAbs_SOLID && fuse) { prism.Tag = -this->getID(); // Let's call algorithm computing a fuse operation: diff --git a/src/Mod/PartDesign/PartDesignTests/TestPad.py b/src/Mod/PartDesign/PartDesignTests/TestPad.py index a5231c8962..6cc89baff2 100644 --- a/src/Mod/PartDesign/PartDesignTests/TestPad.py +++ b/src/Mod/PartDesign/PartDesignTests/TestPad.py @@ -37,7 +37,7 @@ class TestPad(unittest.TestCase): self.Doc.recompute() self.assertEqual(len(self.Pad.Shape.Faces), 6) - def testSketchOnPlane(self): + def testSketchOnBasePlane(self): self.Body = self.Doc.addObject('PartDesign::Body','Body') self.PadSketch = self.Doc.addObject('Sketcher::SketchObject','SketchPad') self.PadSketch.AttachmentSupport = (self.Doc.XY_Plane, ['']) @@ -51,6 +51,24 @@ class TestPad(unittest.TestCase): self.Doc.recompute() self.assertEqual(len(self.Pad.Shape.Faces), 6) + def testSketchOnDatumPlane(self): + self.Body = self.Doc.addObject('PartDesign::Body','Body') + self.DatumPlane = self.Doc.addObject('PartDesign::Plane','DatumPlane') + self.DatumPlane.AttachmentSupport = (self.Doc.XY_Plane, ['']) + self.DatumPlane.MapMode = 'FlatFace' + self.Body.addObject(self.DatumPlane) + self.PadSketch = self.Doc.addObject('Sketcher::SketchObject','SketchPad') + self.PadSketch.AttachmentSupport = (self.DatumPlane, ['']) + self.PadSketch.MapMode = 'FlatFace' + self.Body.addObject(self.PadSketch) + TestSketcherApp.CreateSlotPlateSet(self.PadSketch) + self.Doc.recompute() + self.Pad = self.Doc.addObject("PartDesign::Pad","Pad") + self.Pad.Profile = self.PadSketch + self.Body.addObject(self.Pad) + self.Doc.recompute() + self.assertEqual(len(self.Pad.Shape.Faces), 6) + def testPadToFirstCase(self): self.Body = self.Doc.addObject('PartDesign::Body','Body') # Make first offset cube Pad