From 96afbb275607f668660e667a679d4da79e2308dc Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 24 Nov 2012 21:24:58 +0100 Subject: [PATCH] Fill&sew shape and its offset --- src/Mod/Part/App/TopoShape.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/Mod/Part/App/TopoShape.cpp b/src/Mod/Part/App/TopoShape.cpp index 47a42cb0a..bd3746a26 100644 --- a/src/Mod/Part/App/TopoShape.cpp +++ b/src/Mod/Part/App/TopoShape.cpp @@ -1690,8 +1690,8 @@ TopoDS_Shape TopoShape::revolve(const gp_Ax1& axis, double d) const return mkRevol.Shape(); } -#include -#include +//#include +//#include TopoDS_Shape TopoShape::makeOffsetShape(double offset, double tol, bool intersection, bool selfInter, short offsetMode, short join, @@ -1704,7 +1704,9 @@ TopoDS_Shape TopoShape::makeOffsetShape(double offset, double tol, bool intersec const TopoDS_Shape& res = mkOffset.Shape(); if (!fill) return res; -#if 0 +#if 1 + //s=Part.makePlane(10,10) + //s.makeOffsetShape(1.0,0.01,False,False,0,0,True) const BRepOffset_MakeOffset& off = mkOffset.MakeOffset(); const BRepAlgo_Image& img = off.OffsetEdgesFromShapes(); @@ -1733,8 +1735,15 @@ TopoDS_Shape TopoShape::makeOffsetShape(double offset, double tol, bool intersec const TopTools_ListOfShape& edges = img.Image(edge); TopTools_ListIteratorOfListOfShape it; it.Initialize(edges); - TopoDS_Face face = BRepFill::Face(TopoDS::Edge(edge), TopoDS::Edge(it.Value())); - builder.Add(shell, face); + BRepOffsetAPI_ThruSections aGenerator (0,0); + aGenerator.AddWire(BRepBuilderAPI_MakeWire(TopoDS::Edge(edge)).Wire()); + aGenerator.AddWire(BRepBuilderAPI_MakeWire(TopoDS::Edge(it.Value())).Wire()); + aGenerator.Build(); + for (xp.Init(aGenerator.Shape(),TopAbs_FACE); xp.More(); xp.Next()) { + builder.Add(shell, xp.Current()); + } + //TopoDS_Face face = BRepFill::Face(TopoDS::Edge(edge), TopoDS::Edge(it.Value())); + //builder.Add(shell, face); } } }