From 02166ed4be199720238aba43cef4c6c79b6ec790 Mon Sep 17 00:00:00 2001 From: Sergo Date: Fri, 17 Mar 2017 02:21:41 -0400 Subject: [PATCH] couple of tests and fix to avoid crash on selected edge --- src/Mod/PartDesign/App/FeatureSketchBased.cpp | 5 +- src/Mod/PartDesign/TestPartDesignApp.py | 47 ++++++++++++++++++- 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/src/Mod/PartDesign/App/FeatureSketchBased.cpp b/src/Mod/PartDesign/App/FeatureSketchBased.cpp index 7fe4cc4a57fa..ac757ea4f479 100644 --- a/src/Mod/PartDesign/App/FeatureSketchBased.cpp +++ b/src/Mod/PartDesign/App/FeatureSketchBased.cpp @@ -1041,7 +1041,10 @@ Base::Vector3d ProfileBased::getProfileNormal() const { } else { TopoDS_Shape shape = getVerifiedFace(true); - if(shape.ShapeType() == TopAbs_FACE) { + if (shape == TopoDS_Shape()) + return SketchVector; + + if (shape.ShapeType() == TopAbs_FACE) { BRepAdaptor_Surface adapt(TopoDS::Face(shape)); double u = adapt.FirstUParameter() + (adapt.LastUParameter() - adapt.FirstUParameter())/2.; double v = adapt.FirstVParameter() + (adapt.LastVParameter() - adapt.FirstVParameter())/2.; diff --git a/src/Mod/PartDesign/TestPartDesignApp.py b/src/Mod/PartDesign/TestPartDesignApp.py index d90c2cd926ef..c48d64bf95f2 100644 --- a/src/Mod/PartDesign/TestPartDesignApp.py +++ b/src/Mod/PartDesign/TestPartDesignApp.py @@ -19,9 +19,9 @@ # USA * #************************************************************************** -import FreeCAD, os, sys, unittest, Sketcher, PartDesign, TestSketcherApp +import FreeCAD, FreeCADGui, os, sys, unittest, Sketcher, PartDesign, TestSketcherApp App = FreeCAD - +Gui = FreeCADGui #--------------------------------------------------------------------------- # define the test cases to test the FreeCAD Sketcher module #--------------------------------------------------------------------------- @@ -44,3 +44,46 @@ def tearDown(self): #closing doc FreeCAD.closeDocument("PartDesignTest") #print ("omit clos document for debuging") + +class PartDesignRevolveTestCases(unittest.TestCase): + def setUp(self): + self.Doc = FreeCAD.newDocument("PartDesignTest") + + def testRevolveFace(self): + self.Body1 = self.Doc.addObject('PartDesign::Body','Body') + self.Box1 = self.Doc.addObject('PartDesign::AdditiveBox','Box') + self.Body1.addObject(self.Box1) + self.Box1.Length=10.00 + self.Box1.Width=10.00 + self.Box1.Height=10.00 + self.Doc.recompute() + self.Revolution = self.Doc.addObject("PartDesign::Revolution","Revolution") + self.Revolution.Profile = (self.Box1, ["Face6"]) + self.Revolution.ReferenceAxis = (self.Doc.Y_Axis,[""]) + self.Revolution.Angle = 180.0 + self.Revolution.Reversed = 1 + self.Body1.addObject(self.Revolution) + self.Doc.recompute() + self.failUnless(len(self.Revolution.Shape.Faces) == 10) + + def testGrooveFace(self): + self.Body2 = self.Doc.addObject('PartDesign::Body','Body') + self.Box2 = self.Doc.addObject('PartDesign::AdditiveBox','Box') + self.Body2.addObject(self.Box2) + self.Box2.Length=10.00 + self.Box2.Width=10.00 + self.Box2.Height=10.00 + self.Doc.recompute() + self.Groove = self.Doc.addObject("PartDesign::Groove","Groove") + self.Groove.Profile = (self.Box2, ["Face6"]) + self.Groove.ReferenceAxis = (self.Doc.X_Axis,[""]) + self.Groove.Angle = 180.0 + self.Groove.Reversed = 1 + self.Body2.addObject(self.Groove) + self.Doc.recompute() + self.failUnless(len(self.Groove.Shape.Faces) == 5) + + def tearDown(self): + #closing doc + # FreeCAD.closeDocument("PartDesignTest") + print ("omit closing document for debugging") \ No newline at end of file