1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-29 14:00:49 +03:00

0026173: Wrong result of ChFi3d_ChBuilder algorithm: incorrect processing of G1 junctions at vertex

Test case for issue CR26173
This commit is contained in:
jgv
2015-09-10 15:30:55 +03:00
committed by bugmaster
parent a0ed76c3fb
commit 7d92212e57
11 changed files with 287 additions and 143 deletions

View File

@@ -784,6 +784,20 @@ void ChFi3d_FilBuilder::PerformTwoCorner(const Standard_Integer Index)
curvopsam->D1(uintpcsam,PPfacsam,VVfacsam);
BRepAdaptor_Curve2d PCArcFac(Arcopdif,Fopsam);
PCArcFac.D0(cpopdif.ParameterOnArc(),ppfacdif);
//jgv for OCC26173
BRepAdaptor_Surface SurFopsam(Fopsam);
if (SurFopsam.IsUClosed())
{
Standard_Real Uperiod = SurFopsam.LastUParameter() - SurFopsam.FirstUParameter();
if (Abs(ppfacsam.X() - ppfacdif.X()) > Uperiod/2)
{
if (ppfacdif.X() < ppfacsam.X())
ppfacdif.SetX(ppfacdif.X() + Uperiod);
else
ppfacdif.SetX(ppfacdif.X() - Uperiod);
}
}
//////////////////
BRepAdaptor_Curve CArcFac(Arcopdif);
CArcFac.D1(cpopdif.ParameterOnArc(),PPfacdif,VVfacdif);
Handle(BRepAdaptor_HSurface) HBRFopsam = new BRepAdaptor_HSurface();