From eb01e31174af6dbe4a7a3c3045df113ffacf81dc Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 10 Mar 2023 16:39:53 +0100 Subject: [PATCH] PD: add unit test for issue #6156 or PR #8748 --- .../PartDesign/PartDesignTests/TestLoft.py | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/src/Mod/PartDesign/PartDesignTests/TestLoft.py b/src/Mod/PartDesign/PartDesignTests/TestLoft.py index 238e7ea444..a75079899a 100644 --- a/src/Mod/PartDesign/PartDesignTests/TestLoft.py +++ b/src/Mod/PartDesign/PartDesignTests/TestLoft.py @@ -22,6 +22,10 @@ import unittest import FreeCAD +from FreeCAD import Base +from FreeCAD import Units +import Part +import Sketcher import TestSketcherApp class TestLoft(unittest.TestCase): @@ -77,6 +81,66 @@ class TestLoft(unittest.TestCase): self.Doc.recompute() self.assertAlmostEqual(self.SubtractiveLoft.Shape.Volume, 1) + def testClosedAdditiveLoftCase(self): + """ Test issue #6156: Loft tool "Closed" option not working """ + body = self.Doc.addObject('PartDesign::Body','Body') + + sketch1 = body.newObject('Sketcher::SketchObject','Sketch') + sketch1.Support = (self.Doc.XZ_Plane,['']) + sketch1.MapMode = 'FlatFace' + sketch1.addGeometry(Part.Circle(Base.Vector(-40.0,0.0,0.0),Base.Vector(0,0,1),10.0), False) + sketch1.addConstraint(Sketcher.Constraint('PointOnObject',0,3,-1)) + sketch1.addConstraint(Sketcher.Constraint('Diameter',0,20.0)) + sketch1.setDatum(1,Units.Quantity('20.000000 mm')) + sketch1.addConstraint(Sketcher.Constraint('Distance',-1,1,0,3,40.0)) + sketch1.setDatum(2,Units.Quantity('40.000000 mm')) + + sketch2 = body.newObject('Sketcher::SketchObject','Sketch001') + sketch2.Support = (self.Doc.YZ_Plane,'') + sketch2.MapMode = 'FlatFace' + sketch2.addGeometry(Part.Circle(Base.Vector(-10.0,0.0,0.0),Base.Vector(0,0,1),10.0),False) + sketch2.addConstraint(Sketcher.Constraint('PointOnObject',0,3,-1)) + sketch2.addConstraint(Sketcher.Constraint('Diameter',0,20.0)) + sketch2.setDatum(1,Units.Quantity('20.000000 mm')) + sketch2.addConstraint(Sketcher.Constraint('Distance',-1,1,0,3,40.0)) + sketch2.setDatum(2,Units.Quantity('40.000000 mm')) + + sketch3 = body.newObject('Sketcher::SketchObject','Sketch002') + sketch3.Support = (self.Doc.getObject('YZ_Plane'),'') + sketch3.MapMode = 'FlatFace' + sketch3.addGeometry(Part.Circle(Base.Vector(40.0,0.0,0.0),Base.Vector(0,0,1),10.0),False) + sketch3.addConstraint(Sketcher.Constraint('PointOnObject',0,3,-1)) + sketch3.addConstraint(Sketcher.Constraint('Distance',-1,1,0,3,40.0)) + sketch3.setDatum(1,Units.Quantity('40.000000 mm')) + sketch3.addConstraint(Sketcher.Constraint('Diameter',0,20.0)) + sketch3.setDatum(2,Units.Quantity('20.000000 mm')) + + sketch4 = body.newObject('Sketcher::SketchObject','Sketch003') + sketch4.Support = (self.Doc.XZ_Plane,'') + sketch4.MapMode = 'FlatFace' + sketch4.addGeometry(Part.Circle(Base.Vector(40.0,0.0,0.0),Base.Vector(0,0,1),10.0),False) + sketch4.addConstraint(Sketcher.Constraint('PointOnObject',0,3,-1)) + sketch4.addConstraint(Sketcher.Constraint('Distance',-1,1,0,3,40.0)) + sketch4.setDatum(1,Units.Quantity('40.000000 mm')) + sketch4.addConstraint(Sketcher.Constraint('Diameter',0,20.0)) + sketch4.setDatum(2,Units.Quantity('20.000000 mm')) + + self.Doc.recompute() + + loft = body.newObject('PartDesign::AdditiveLoft','AdditiveLoft') + loft.Profile = sketch1 + loft.Sections = [sketch2, sketch4, sketch3] + loft.Closed = True + + sketch1.Visibility = False + sketch2.Visibility = False + sketch3.Visibility = False + sketch4.Visibility = False + + self.Doc.recompute() + + self.assertGreater(loft.Shape.Volume, 80000.0) # 85105.5788704151 + def tearDown(self): #closing doc FreeCAD.closeDocument("PartDesignTestLoft")