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

0024037: Wrong result done by General Fuse algorithm

Do not calculate the angle between same edges in WireSplitter algorithm and set it to 2*PI.
Adding test cases for this fix
Correction of test case
This commit is contained in:
emv
2013-07-04 14:21:44 +04:00
parent e656bcbe59
commit b20eeb13fe
3 changed files with 94 additions and 19 deletions

View File

@@ -342,12 +342,13 @@ void Path (const GeomAdaptor_Surface& aGAS,
Standard_Integer i, j, aNb, aNbj;
Standard_Real aTol, anAngleIn, anAngleOut, anAngle, aMinAngle;
Standard_Real aTol2D, aTol2D2;
Standard_Real aTol2, aD2;
Standard_Real aTol2, aD2, aTwoPI;
Standard_Boolean anIsSameV2d, anIsSameV, anIsFound, anIsOut, anIsNotPassed;
TopoDS_Vertex aVb;
TopoDS_Edge aEOutb;
BOPAlgo_ListIteratorOfListOfEdgeInfo anIt;
//
aTwoPI = M_PI + M_PI;
aTol=1.e-7;
//
// append block
@@ -527,6 +528,9 @@ void Path (const GeomAdaptor_Surface& aGAS,
break;
}
//
if (aE.IsSame(aEOuta)) {
anAngle = aTwoPI;
} else {
// Look for minimal angle and make the choice.
gp_Pnt2d aP2Dx;
//
@@ -545,8 +549,8 @@ void Path (const GeomAdaptor_Surface& aGAS,
anAngleOut = aRecomputedAngles.Value(aCurIndexE);
}
}
anAngle=ClockWiseAngle(anAngleIn, anAngleOut);
}
if (anAngle < aMinAngle) {
aMinAngle=anAngle;
pEdgeInfo=&anEI;

33
tests/bugs/modalg_5/bug24037_1 Executable file
View File

@@ -0,0 +1,33 @@
puts "================"
puts "OCC24037"
puts "================"
puts ""
#######################################################################
# Wrong result done by General Fuse algorithm
#######################################################################
restore [locate_data_file bug24037_coude_sain.brep] b1
restore [locate_data_file bug24037_plans_bloc.brep] b2
bclearobjects
bcleartools
baddcompound b1
baddcompound b2
bfillds
bbuild result
nbshapes result -t
#the number of solids should be 12 instead of 2
set nbsh_t 1
set nb_v_good 52
set nb_e_good 105
set nb_w_good 76
set nb_f_good 70
set nb_sh_good 12
set nb_sol_good 12
set nb_compsol_good 0
set nb_compound_good 1
set nb_shape_good 328
set 3dviewer 1

38
tests/bugs/modalg_5/bug24037_2 Executable file
View File

@@ -0,0 +1,38 @@
puts "================"
puts "OCC24037"
puts "================"
puts ""
#######################################################################
# Wrong result done by General Fuse algorithm
#######################################################################
restore [locate_data_file bug24037_coude_sain.brep] b1
restore [locate_data_file bug24037_plans_bloc.brep] b2
explode b1 so
copy b1_1 b1
explode b2 f
copy b2_3 b2
don b1 b2
bclearobjects
bcleartools
baddobjects b1
baddtools b2
bfillds
bbuild result
nbshapes result -t
#the number of solids should be 2 instead of 1
set nbsh_t 1
set nb_v_good 16
set nb_e_good 24
set nb_w_good 13
set nb_f_good 12
set nb_sh_good 2
set nb_sol_good 2
set nb_compsol_good 0
set nb_compound_good 1
set nb_shape_good 70
set 3dviewer 1