From 544e6587cbae2e82f858e0fa5f2f37aea907de43 Mon Sep 17 00:00:00 2001 From: Kurt Kremitzki Date: Mon, 10 Jul 2017 06:10:47 -0500 Subject: [PATCH] Add linear and polar pattern tests --- src/Mod/PartDesign/App/CMakeLists.txt | 2 + src/Mod/PartDesign/CMakeLists.txt | 2 + .../PartDesignTests/TestLinearPattern.py | 145 ++++++++++++++++++ .../PartDesignTests/TestPolarPattern.py | 145 ++++++++++++++++++ src/Mod/PartDesign/TestPartDesignApp.py | 5 +- 5 files changed, 296 insertions(+), 3 deletions(-) create mode 100644 src/Mod/PartDesign/PartDesignTests/TestLinearPattern.py create mode 100644 src/Mod/PartDesign/PartDesignTests/TestPolarPattern.py diff --git a/src/Mod/PartDesign/App/CMakeLists.txt b/src/Mod/PartDesign/App/CMakeLists.txt index 478c21da24..e9ba001bef 100644 --- a/src/Mod/PartDesign/App/CMakeLists.txt +++ b/src/Mod/PartDesign/App/CMakeLists.txt @@ -161,6 +161,8 @@ SET(PartDesign_Scripts PartDesignTests/TestLoft.py PartDesignTests/TestPipe.py PartDesignTests/TestMirrored.py + PartDesignTests/TestLinearPattern.py + PartDesignTests/TestPolarPattern.py PartDesignTests/TestFillet.py PartDesignTests/TestChamfer.py PartDesignTests/TestDraft.py diff --git a/src/Mod/PartDesign/CMakeLists.txt b/src/Mod/PartDesign/CMakeLists.txt index 5c2078ff5a..3cded19436 100644 --- a/src/Mod/PartDesign/CMakeLists.txt +++ b/src/Mod/PartDesign/CMakeLists.txt @@ -41,6 +41,8 @@ INSTALL( PartDesignTests/TestLoft.py PartDesignTests/TestPipe.py PartDesignTests/TestMirrored.py + PartDesignTests/TestLinearPattern.py + PartDesignTests/TestPolarPattern.py PartDesignTests/TestFillet.py PartDesignTests/TestChamfer.py PartDesignTests/TestDraft.py diff --git a/src/Mod/PartDesign/PartDesignTests/TestLinearPattern.py b/src/Mod/PartDesign/PartDesignTests/TestLinearPattern.py new file mode 100644 index 0000000000..709b8ee037 --- /dev/null +++ b/src/Mod/PartDesign/PartDesignTests/TestLinearPattern.py @@ -0,0 +1,145 @@ +# (c) Juergen Riegel (FreeCAD@juergen-riegel.net) 2011 LGPL * +# * +# This file is part of the FreeCAD CAx development system. * +# * +# This program is free software; you can redistribute it and/or modify * +# it under the terms of the GNU Lesser General Public License (LGPL) * +# as published by the Free Software Foundation; either version 2 of * +# the License, or (at your option) any later version. * +# for detail see the LICENCE text file. * +# * +# FreeCAD is distributed in the hope that it will be useful, * +# but WITHOUT ANY WARRANTY; without even the implied warranty of * +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +# GNU Library General Public License for more details. * +# * +# You should have received a copy of the GNU Library General Public * +# License along with FreeCAD; if not, write to the Free Software * +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +# USA * +#************************************************************************** +import unittest + +import FreeCAD +import TestSketcherApp + +class TestLinearPattern(unittest.TestCase): + def setUp(self): + self.Doc = FreeCAD.newDocument("PartDesignTestLinearPattern") + + def testXAxisLinearPattern(self): + self.Body = self.Doc.addObject('PartDesign::Body','Body') + self.Box = self.Doc.addObject('PartDesign::AdditiveBox','Box') + self.Body.addObject(self.Box) + self.Box.Length=10.00 + self.Box.Width=10.00 + self.Box.Height=10.00 + self.Doc.recompute() + self.LinearPattern = self.Doc.addObject("PartDesign::LinearPattern","LinearPattern") + self.LinearPattern.Originals = [self.Box] + self.LinearPattern.Direction = (self.Doc.X_Axis,[""]) + self.LinearPattern.Length = 90.0 + self.LinearPattern.Occurrences = 10 + self.Body.addObject(self.LinearPattern) + self.Doc.recompute() + self.assertAlmostEqual(self.LinearPattern.Shape.Volume, 1e4) + + def testYAxisLinearPattern(self): + self.Body = self.Doc.addObject('PartDesign::Body','Body') + self.Box = self.Doc.addObject('PartDesign::AdditiveBox','Box') + self.Body.addObject(self.Box) + self.Box.Length=10.00 + self.Box.Width=10.00 + self.Box.Height=10.00 + self.Doc.recompute() + self.LinearPattern = self.Doc.addObject("PartDesign::LinearPattern","LinearPattern") + self.LinearPattern.Originals = [self.Box] + self.LinearPattern.Direction = (self.Doc.Y_Axis,[""]) + self.LinearPattern.Length = 90.0 + self.LinearPattern.Occurrences = 10 + self.Body.addObject(self.LinearPattern) + self.Doc.recompute() + self.assertAlmostEqual(self.LinearPattern.Shape.Volume, 1e4) + + def testZAxisLinearPattern(self): + self.Body = self.Doc.addObject('PartDesign::Body','Body') + self.Box = self.Doc.addObject('PartDesign::AdditiveBox','Box') + self.Body.addObject(self.Box) + self.Box.Length=10.00 + self.Box.Width=10.00 + self.Box.Height=10.00 + self.Doc.recompute() + self.LinearPattern = self.Doc.addObject("PartDesign::LinearPattern","LinearPattern") + self.LinearPattern.Originals = [self.Box] + self.LinearPattern.Direction = (self.Doc.Z_Axis,[""]) + self.LinearPattern.Length = 90.0 + self.LinearPattern.Occurrences = 10 + self.Body.addObject(self.LinearPattern) + self.Doc.recompute() + self.assertAlmostEqual(self.LinearPattern.Shape.Volume, 1e4) + + def testNormalSketchAxisLinearPattern(self): + self.Body = self.Doc.addObject('PartDesign::Body','Body') + self.PadSketch = self.Doc.addObject('Sketcher::SketchObject', 'SketchPad') + self.Body.addObject(self.PadSketch) + TestSketcherApp.CreateRectangleSketch(self.PadSketch, (0, 0), (10, 10)) + self.Doc.recompute() + self.Pad = self.Doc.addObject("PartDesign::Pad", "Pad") + self.Body.addObject(self.Pad) + self.Pad.Profile = self.PadSketch + self.Pad.Length = 10 + self.Doc.recompute() + self.LinearPattern = self.Doc.addObject("PartDesign::LinearPattern","LinearPattern") + self.LinearPattern.Originals = [self.Pad] + self.LinearPattern.Direction = (self.PadSketch,["N_Axis"]) + self.LinearPattern.Length = 90.0 + self.LinearPattern.Occurrences = 10 + self.Body.addObject(self.LinearPattern) + self.Doc.recompute() + self.assertAlmostEqual(self.LinearPattern.Shape.Volume, 1e4) + + def testVerticalSketchAxisLinearPattern(self): + self.Body = self.Doc.addObject('PartDesign::Body','Body') + self.PadSketch = self.Doc.addObject('Sketcher::SketchObject', 'SketchPad') + self.Body.addObject(self.PadSketch) + TestSketcherApp.CreateRectangleSketch(self.PadSketch, (0, 0), (10, 10)) + self.Doc.recompute() + self.Pad = self.Doc.addObject("PartDesign::Pad", "Pad") + self.Body.addObject(self.Pad) + self.Pad.Profile = self.PadSketch + self.Pad.Length = 10 + self.Doc.recompute() + self.LinearPattern = self.Doc.addObject("PartDesign::LinearPattern","LinearPattern") + self.LinearPattern.Originals = [self.Pad] + self.LinearPattern.Direction = (self.PadSketch,["V_Axis"]) + self.LinearPattern.Length = 90.0 + self.LinearPattern.Occurrences = 10 + self.Body.addObject(self.LinearPattern) + self.Doc.recompute() + self.assertAlmostEqual(self.LinearPattern.Shape.Volume, 1e4) + + def testHorizontalSketchAxisLinearPattern(self): + self.Body = self.Doc.addObject('PartDesign::Body','Body') + self.PadSketch = self.Doc.addObject('Sketcher::SketchObject', 'SketchPad') + self.Body.addObject(self.PadSketch) + TestSketcherApp.CreateRectangleSketch(self.PadSketch, (0, 0), (10, 10)) + self.Doc.recompute() + self.Pad = self.Doc.addObject("PartDesign::Pad", "Pad") + self.Body.addObject(self.Pad) + self.Pad.Profile = self.PadSketch + self.Pad.Length = 10 + self.Doc.recompute() + self.LinearPattern = self.Doc.addObject("PartDesign::LinearPattern","LinearPattern") + self.LinearPattern.Originals = [self.Pad] + self.LinearPattern.Direction = (self.PadSketch,["H_Axis"]) + self.LinearPattern.Length = 90.0 + self.LinearPattern.Occurrences = 10 + self.Body.addObject(self.LinearPattern) + self.Doc.recompute() + self.assertAlmostEqual(self.LinearPattern.Shape.Volume, 1e4) + + def tearDown(self): + #closing doc + FreeCAD.closeDocument("PartDesignTestLinearPattern") + # print ("omit closing document for debugging") + diff --git a/src/Mod/PartDesign/PartDesignTests/TestPolarPattern.py b/src/Mod/PartDesign/PartDesignTests/TestPolarPattern.py new file mode 100644 index 0000000000..f95504d888 --- /dev/null +++ b/src/Mod/PartDesign/PartDesignTests/TestPolarPattern.py @@ -0,0 +1,145 @@ +# (c) Juergen Riegel (FreeCAD@juergen-riegel.net) 2011 LGPL * +# * +# This file is part of the FreeCAD CAx development system. * +# * +# This program is free software; you can redistribute it and/or modify * +# it under the terms of the GNU Lesser General Public License (LGPL) * +# as published by the Free Software Foundation; either version 2 of * +# the License, or (at your option) any later version. * +# for detail see the LICENCE text file. * +# * +# FreeCAD is distributed in the hope that it will be useful, * +# but WITHOUT ANY WARRANTY; without even the implied warranty of * +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +# GNU Library General Public License for more details. * +# * +# You should have received a copy of the GNU Library General Public * +# License along with FreeCAD; if not, write to the Free Software * +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +# USA * +#************************************************************************** +import unittest + +import FreeCAD +import TestSketcherApp + +class TestPolarPattern(unittest.TestCase): + def setUp(self): + self.Doc = FreeCAD.newDocument("PartDesignTestPolarPattern") + + def testXAxisPolarPattern(self): + self.Body = self.Doc.addObject('PartDesign::Body','Body') + self.Box = self.Doc.addObject('PartDesign::AdditiveBox','Box') + self.Body.addObject(self.Box) + self.Box.Length=10.00 + self.Box.Width=10.00 + self.Box.Height=10.00 + self.Doc.recompute() + self.PolarPattern = self.Doc.addObject("PartDesign::PolarPattern","PolarPattern") + self.PolarPattern.Originals = [self.Box] + self.PolarPattern.Axis = (self.Doc.X_Axis,[""]) + self.PolarPattern.Angle = 360 + self.PolarPattern.Occurrences = 4 + self.Body.addObject(self.PolarPattern) + self.Doc.recompute() + self.assertAlmostEqual(self.PolarPattern.Shape.Volume, 4000) + + def testYAxisPolarPattern(self): + self.Body = self.Doc.addObject('PartDesign::Body','Body') + self.Box = self.Doc.addObject('PartDesign::AdditiveBox','Box') + self.Body.addObject(self.Box) + self.Box.Length=10.00 + self.Box.Width=10.00 + self.Box.Height=10.00 + self.Doc.recompute() + self.PolarPattern = self.Doc.addObject("PartDesign::PolarPattern","PolarPattern") + self.PolarPattern.Originals = [self.Box] + self.PolarPattern.Axis = (self.Doc.Y_Axis,[""]) + self.PolarPattern.Angle = 360 + self.PolarPattern.Occurrences = 4 + self.Body.addObject(self.PolarPattern) + self.Doc.recompute() + self.assertAlmostEqual(self.PolarPattern.Shape.Volume, 4000) + + def testZAxisPolarPattern(self): + self.Body = self.Doc.addObject('PartDesign::Body','Body') + self.Box = self.Doc.addObject('PartDesign::AdditiveBox','Box') + self.Body.addObject(self.Box) + self.Box.Length=10.00 + self.Box.Width=10.00 + self.Box.Height=10.00 + self.Doc.recompute() + self.PolarPattern = self.Doc.addObject("PartDesign::PolarPattern","PolarPattern") + self.PolarPattern.Originals = [self.Box] + self.PolarPattern.Axis = (self.Doc.Z_Axis,[""]) + self.PolarPattern.Angle = 360 + self.PolarPattern.Occurrences = 4 + self.Body.addObject(self.PolarPattern) + self.Doc.recompute() + self.assertAlmostEqual(self.PolarPattern.Shape.Volume, 4000) + + def testNormalSketchAxisPolarPattern(self): + self.Body = self.Doc.addObject('PartDesign::Body','Body') + self.PadSketch = self.Doc.addObject('Sketcher::SketchObject', 'SketchPad') + self.Body.addObject(self.PadSketch) + TestSketcherApp.CreateRectangleSketch(self.PadSketch, (0, 0), (10, 10)) + self.Doc.recompute() + self.Pad = self.Doc.addObject("PartDesign::Pad", "Pad") + self.Body.addObject(self.Pad) + self.Pad.Profile = self.PadSketch + self.Pad.Length = 10 + self.Doc.recompute() + self.PolarPattern = self.Doc.addObject("PartDesign::PolarPattern","PolarPattern") + self.PolarPattern.Originals = [self.Pad] + self.PolarPattern.Axis = (self.PadSketch,["N_Axis"]) + self.PolarPattern.Angle = 360 + self.PolarPattern.Occurrences = 4 + self.Body.addObject(self.PolarPattern) + self.Doc.recompute() + self.assertAlmostEqual(self.PolarPattern.Shape.Volume, 4000) + + def testVerticalSketchAxisPolarPattern(self): + self.Body = self.Doc.addObject('PartDesign::Body','Body') + self.PadSketch = self.Doc.addObject('Sketcher::SketchObject', 'SketchPad') + self.Body.addObject(self.PadSketch) + TestSketcherApp.CreateRectangleSketch(self.PadSketch, (0, 0), (10, 10)) + self.Doc.recompute() + self.Pad = self.Doc.addObject("PartDesign::Pad", "Pad") + self.Body.addObject(self.Pad) + self.Pad.Profile = self.PadSketch + self.Pad.Length = 10 + self.Doc.recompute() + self.PolarPattern = self.Doc.addObject("PartDesign::PolarPattern","PolarPattern") + self.PolarPattern.Originals = [self.Pad] + self.PolarPattern.Axis = (self.PadSketch,["V_Axis"]) + self.PolarPattern.Angle = 360 + self.PolarPattern.Occurrences = 4 + self.Body.addObject(self.PolarPattern) + self.Doc.recompute() + self.assertAlmostEqual(self.PolarPattern.Shape.Volume, 4000) + + def testHorizontalSketchAxisPolarPattern(self): + self.Body = self.Doc.addObject('PartDesign::Body','Body') + self.PadSketch = self.Doc.addObject('Sketcher::SketchObject', 'SketchPad') + self.Body.addObject(self.PadSketch) + TestSketcherApp.CreateRectangleSketch(self.PadSketch, (0, 0), (10, 10)) + self.Doc.recompute() + self.Pad = self.Doc.addObject("PartDesign::Pad", "Pad") + self.Body.addObject(self.Pad) + self.Pad.Profile = self.PadSketch + self.Pad.Length = 10 + self.Doc.recompute() + self.PolarPattern = self.Doc.addObject("PartDesign::PolarPattern","PolarPattern") + self.PolarPattern.Originals = [self.Pad] + self.PolarPattern.Axis = (self.PadSketch,["H_Axis"]) + self.PolarPattern.Angle = 360 + self.PolarPattern.Occurrences = 4 + self.Body.addObject(self.PolarPattern) + self.Doc.recompute() + self.assertAlmostEqual(self.PolarPattern.Shape.Volume, 4000) + + def tearDown(self): + #closing doc + FreeCAD.closeDocument("PartDesignTestPolarPattern") + # print ("omit closing document for debugging") + diff --git a/src/Mod/PartDesign/TestPartDesignApp.py b/src/Mod/PartDesign/TestPartDesignApp.py index 9e535715f4..252abffa80 100644 --- a/src/Mod/PartDesign/TestPartDesignApp.py +++ b/src/Mod/PartDesign/TestPartDesignApp.py @@ -37,8 +37,8 @@ from PartDesignTests.TestLoft import TestLoft # transformations and boolean from PartDesignTests.TestMirrored import TestMirrored -#from PartDesignTests.TestLinearPattern import TestLinearPattern -#from PartDesignTests.TestPolarPattern import TestPolarPattern +from PartDesignTests.TestLinearPattern import TestLinearPattern +from PartDesignTests.TestPolarPattern import TestPolarPattern #from PartDesignTests.TestMultiTransform import TestMultiTransform #from PartDesignTests.TestBoolean import TestBoolean @@ -47,4 +47,3 @@ from PartDesignTests.TestFillet import TestFillet from PartDesignTests.TestChamfer import TestChamfer from PartDesignTests.TestDraft import TestDraft from PartDesignTests.TestThickness import TestThickness -