From: Benjamin Bihler Date: Tue, 15 May 2018 07:43:57 +0000 (+0300) Subject: 0029765: BOPTools_AlgoTools::MakeSplitEdge Creates Illegal Edge X-Git-Tag: OCCT_VC2017_73~118 X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=012264339e1485fb1c5a4eadd6e9ab6fe93bd938;p=occt.git 0029765: BOPTools_AlgoTools::MakeSplitEdge Creates Illegal Edge Method MakeSplitEdge checks arguments order. This makes the method more generic. Taking vertex orientation into account. --- diff --git a/src/BOPTools/BOPTools_AlgoTools_2.cxx b/src/BOPTools/BOPTools_AlgoTools_2.cxx index 9219295f96..9ed2175c49 100644 --- a/src/BOPTools/BOPTools_AlgoTools_2.cxx +++ b/src/BOPTools/BOPTools_AlgoTools_2.cxx @@ -162,12 +162,29 @@ void BOPTools_AlgoTools::MakeSplitEdge(const TopoDS_Edge& aE, // BRep_Builder BB; if (!aV1.IsNull()) { - BB.Add (E, aV1); + if (aP1 < aP2) { + BB.Add (E, TopoDS::Vertex(aV1.Oriented(TopAbs_FORWARD))); + } + else { + BB.Add (E, TopoDS::Vertex(aV1.Oriented(TopAbs_REVERSED))); + } } if (!aV2.IsNull()) { - BB.Add (E, aV2); + if (aP1 < aP2) { + BB.Add (E, TopoDS::Vertex(aV2.Oriented(TopAbs_REVERSED))); + } + else { + BB.Add (E, TopoDS::Vertex(aV2.Oriented(TopAbs_FORWARD))); + } + } + + if (aP1 < aP2) { + BB.Range(E, aP1, aP2); } - BB.Range(E, aP1, aP2); + else { + BB.Range(E, aP2, aP1); + } + aNewEdge=E; aNewEdge.Orientation(aE.Orientation()); }