1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

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-09-20 13:52:10 +03:00
committed by apn
parent bf327822d6
commit eff3eff916
33 changed files with 586 additions and 319 deletions

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;