From 7931687dd1e91addcc7ef9bbbe3b45caf64638fd Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 2 Nov 2011 10:53:47 +0000 Subject: [PATCH] 0000463: a pad fails to produce a valid solid from a valid sketch git-svn-id: https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk@5086 e8eeb9e2-ec13-0410-a4a9-efa5cf37419d --- src/Mod/PartDesign/App/FeatureSketchBased.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Mod/PartDesign/App/FeatureSketchBased.cpp b/src/Mod/PartDesign/App/FeatureSketchBased.cpp index c26396ec1..661aafd77 100644 --- a/src/Mod/PartDesign/App/FeatureSketchBased.cpp +++ b/src/Mod/PartDesign/App/FeatureSketchBased.cpp @@ -44,6 +44,7 @@ # include # include # include +# include #endif @@ -138,6 +139,17 @@ TopoDS_Face SketchBased::validateFace(const TopoDS_Face& face) const xp.Next(); } + aChecker.Init(mkFace.Face()); + if (!aChecker.IsValid()) { + ShapeFix_Shape fix(mkFace.Face()); + fix.SetPrecision(Precision::Confusion()); + fix.SetMaxTolerance(Precision::Confusion()); + fix.SetMaxTolerance(Precision::Confusion()); + fix.Perform(); + fix.FixWireTool()->Perform(); + fix.FixFaceTool()->Perform(); + return TopoDS::Face(fix.Shape()); + } return mkFace.Face(); }