From 90bfae234d25a9cfd92bb3efa6806d4caf432f7a Mon Sep 17 00:00:00 2001 From: Kurt Kremitzki Date: Tue, 11 Jul 2017 06:22:52 -0500 Subject: [PATCH] Revise PartDesign Draft base test approach --- .../PartDesign/PartDesignTests/TestDraft.py | 36 ++++++++++++++----- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/Mod/PartDesign/PartDesignTests/TestDraft.py b/src/Mod/PartDesign/PartDesignTests/TestDraft.py index 26f99e9b95..2c95195f38 100644 --- a/src/Mod/PartDesign/PartDesignTests/TestDraft.py +++ b/src/Mod/PartDesign/PartDesignTests/TestDraft.py @@ -22,11 +22,16 @@ import unittest import FreeCAD +App = FreeCAD + class TestDraft(unittest.TestCase): def setUp(self): self.Doc = FreeCAD.newDocument("PartDesignTestDraft") def testSimpleDraft(self): + # fix: create datum plane on YZ. create datum line on Z + 10i + # find top face by first making list comprehension of Z-normal faces + # and then find which has the higher center of mass Z-value self.Body = self.Doc.addObject('PartDesign::Body','Body') self.Box = self.Doc.addObject('PartDesign::AdditiveBox','Box') self.Body.addObject(self.Box) @@ -34,19 +39,34 @@ class TestDraft(unittest.TestCase): self.Box.Width=10.00 self.Box.Height=10.00 self.Doc.recompute() + self.DatumPlane = self.Doc.addObject('PartDesign::Plane','DatumPlane') + self.DatumPlane.Support = [(self.Doc.YZ_Plane,'')] + self.DatumPlane.MapMode = 'FlatFace' + self.Body.addObject(self.DatumPlane) + self.Doc.recompute() + self.DatumLine = self.Doc.addObject('PartDesign::Line','DatumLine') + self.DatumLine.Support = [(self.Doc.X_Axis,'')] + self.DatumLine.MapMode = 'TwoPointLine' + self.Body.addObject(self.DatumLine) + self.Doc.recompute() self.Draft = self.Doc.addObject("PartDesign::Draft","Draft") - self.Draft.Base = (self.Box, ["Face1"]) - n1, n2 = self.Box.Shape.Faces[0].Surface.Axis, self.Box.Shape.Faces[1].Surface.Axis - if n1.dot(n2) == 0: - self.Draft.NeutralPlane = (self.Box, ["Face2"]) + # Draft.Base needs to be top face + self.Faces = self.Box.Shape.Faces + # Grab the two faces with Z-normals and find the higher one + self.ZFaceIndexes = [i for i in range(len(self.Faces)) if self.Faces[i].Surface.Axis == App.Vector(0,0,1)] + if self.Faces[self.ZFaceIndexes[0]].CenterOfMass.z > self.Faces[self.ZFaceIndexes[1]].CenterOfMass.z: + self.TopFaceIndex = self.ZFaceIndexes[0] else: - self.Draft.NeutralPlane = (self.Box, ["Face3"]) - self.Draft.PullDirection = None + self.TopFaceIndex = self.ZFaceIndexes[1] + self.Draft.Base = (self.Box, ["Face"+str(self.TopFaceIndex+1)]) + self.Draft.NeutralPlane = (self.DatumPlane, ['']) + self.Draft.PullDirection = (self.DatumLine, ['']) self.Draft.Angle = 45.0 + self.Draft.Reversed = 1 self.Body.addObject(self.Draft) self.Doc.recompute() - if round(self.Draft.Shape.Volume, 7) - 500 == 0: - self.Draft.Reversed = 1 + if 'Invalid' in self.Draft.State: + self.Draft.Reversed = 0 self.Doc.recompute() self.assertAlmostEqual(self.Draft.Shape.Volume, 1500)