0030940: BRepFilletAPI_MakeFillet algorithm fails on closed shell

1. Add check of configuration of corner in the end of spine.
2. Correct treatment of "smooth corners".
This commit is contained in:
jgv
2019-10-22 15:15:49 +03:00
committed by apn
parent bf327822d6
commit eff3eff916
33 changed files with 586 additions and 319 deletions
+16
View File
@@ -1082,11 +1082,16 @@ static Standard_Integer shapeG1continuity (Draw_Interpretor& di, Standard_Intege
face1=TopoDS::Face(It.Value());
It.Next();
face2=TopoDS::Face(It.Value());
Standard_Boolean IsSeam = face1.IsEqual(face2);
// calcul des deux pcurves
const Handle(Geom2d_Curve) c1 = BRep_Tool::CurveOnSurface
(TopoDS::Edge(edge),face1,f1,l1);
if (c1.IsNull()) return 1;
if (IsSeam)
edge.Reverse();
const Handle(Geom2d_Curve) c2 = BRep_Tool::CurveOnSurface
(TopoDS::Edge(edge),face2,f2,l2);
if (c2.IsNull()) return 1;
@@ -1212,10 +1217,15 @@ static Standard_Integer shapeG0continuity (Draw_Interpretor& di, Standard_Intege
It.Next();
face2=TopoDS::Face(It.Value());
Standard_Boolean IsSeam = face1.IsEqual(face2);
// calcul des deux pcurves
const Handle(Geom2d_Curve) c1 = BRep_Tool::CurveOnSurface
(TopoDS::Edge(edge),face1,f1,l1);
if (c1.IsNull()) return 1;
if (IsSeam)
edge.Reverse();
const Handle(Geom2d_Curve) c2 = BRep_Tool::CurveOnSurface
(TopoDS::Edge(edge),face2,f2,l2);
if (c2.IsNull()) return 1;
@@ -1335,10 +1345,16 @@ static Standard_Integer shapeG2continuity (Draw_Interpretor& di, Standard_Intege
face1=TopoDS::Face(It.Value());
It.Next();
face2=TopoDS::Face(It.Value());
Standard_Boolean IsSeam = face1.IsEqual(face2);
// calcul des deux pcurves
const Handle(Geom2d_Curve) c1 = BRep_Tool::CurveOnSurface
(TopoDS::Edge(edge),face1,f1,l1);
if (c1.IsNull()) return 1;
if (IsSeam)
edge.Reverse();
const Handle(Geom2d_Curve) c2 = BRep_Tool::CurveOnSurface
(TopoDS::Edge(edge),face2,f2,l2);
if (c2.IsNull()) return 1;