1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-09-18 14:27:39 +03:00

0025701: Problem with the symmetry of fillet on two perpendicular cylinders

Test case for issue CR25701
This commit is contained in:
jgv
2015-02-19 16:09:37 +03:00
committed by bugmaster
parent bd28b2afac
commit af99433e4e
13 changed files with 441 additions and 84 deletions

View File

@@ -684,6 +684,24 @@ Standard_Boolean ChFi3d_Builder::StoreData(Handle(ChFiDS_SurfData)& Data,
if (length2 > Precision::Confusion())
GeomLib::ExtendSurfByLength(Surf,length2,1,Standard_False,Standard_True);
//Correction of surface on extremities
if (length1 <= Precision::Confusion())
{
gp_Pnt P11, P21;
P11 = lin->StartPointOnFirst().Value();
P21 = lin->StartPointOnSecond().Value();
Surf->SetPole(1, 1, P11);
Surf->SetPole(Surf->NbUPoles(), 1, P21);
}
if (length2 <= Precision::Confusion())
{
gp_Pnt P12, P22;
P12 = lin->EndPointOnFirst().Value();
P22 = lin->EndPointOnSecond().Value();
Surf->SetPole(1, Surf->NbVPoles(), P12);
Surf->SetPole(Surf->NbUPoles(), Surf->NbVPoles(), P22);
}
Data->ChangeSurf(DStr.AddSurface(TopOpeBRepDS_Surface(Surf,tolget3d)));
#ifdef DRAW
@@ -1475,7 +1493,7 @@ Standard_Boolean ChFi3d_Builder::ComputeData
Standard_Real TolGuide=tolguide, TolEsp = tolesp;
Standard_Integer nbptmin = 4;
BRepBlend_Walking TheWalk(S1,S2,I1,I2);
BRepBlend_Walking TheWalk(S1,S2,I1,I2,HGuide);
//Start of removal, 2D path controls
//that qui s'accomodent mal des surfaces a parametrages non homogenes
@@ -1573,7 +1591,7 @@ Standard_Boolean ChFi3d_Builder::ComputeData
if (5*TolGuide > MS) TolGuide = MS/5;
if (5*TolEsp > MS) TolEsp = MS/5;
}
TheWalk.Perform(Func,FInv,HGuide,NewFirst,Target,MS,TolGuide,
TheWalk.Perform(Func,FInv,NewFirst,Target,MS,TolGuide,
ParSol,TolEsp,Fleche,Appro);
if (!TheWalk.IsDone()) {
#ifdef OCCT_DEBUG
@@ -2068,7 +2086,7 @@ Standard_Boolean ChFi3d_Builder::SimulData
const Standard_Boolean RecOnS1,
const Standard_Boolean RecOnS2)
{
BRepBlend_Walking TheWalk(S1,S2,I1,I2);
BRepBlend_Walking TheWalk(S1,S2,I1,I2,HGuide);
TheWalk.Check2d(Standard_False);
Standard_Real MS = MaxStep;
@@ -2113,7 +2131,7 @@ Standard_Boolean ChFi3d_Builder::SimulData
if (5*TolEsp > MS) TolEsp = MS/5;
}
TheWalk.Perform(Func,FInv,HGuide,NewFirst,Target,MS,TolGuide,
TheWalk.Perform(Func,FInv,NewFirst,Target,MS,TolGuide,
ParSol,TolEsp,Fleche,Appro);
if (!TheWalk.IsDone()) {