Modify method IntWalk_IWalking::ComputeCloseLine: add new flag "isOnDegeneratedBorder" to reach the border successfully.
#ifdef CHRONO
Chronrsnld.Stop();
#endif
-
+ Standard_Boolean isOnDegeneratedBorder = Standard_False;
+
if (Cadre) { // update of limits.
BornInf(1) = Um;BornSup(1) = UM;BornInf(2) = Vm;BornSup(2) = VM;
}
/ (uv[aCoordIdx - 1] - uvprev[aCoordIdx - 1]) );
Standard_Integer aFixIdx = aCoordIdx == 1? 2 : 1; // Fixing index;
Uvap(aFixIdx) = uv[aFixIdx - 1] + (uv[aFixIdx - 1] - uvprev[aFixIdx - 1]) * aScaleCoeff;
+ isOnDegeneratedBorder = Standard_True;
}
}
}
if (N <= 0) { // jag 941017
MakeWalkingPoint(2,Uvap(1),Uvap(2),Func,Psol);
Tgtend = Func.IsTangent(); // jag 940616
+ if (isOnDegeneratedBorder)
+ Tgtend = Standard_True;
N = -N;
}
Arrive = (wd2[I].etat == 12); // the line is open
aStatus = TestDeflection(Func, Arrive,Uvap,StatusPrecedent,
NbDivision,PasC,StepSign);
+ if (isOnDegeneratedBorder && Tgtend)
+ aStatus = IntWalk_ArretSurPoint;
+
StatusPrecedent = aStatus;
if (aStatus == IntWalk_PasTropGrand) {// division of the step
Arrive = Standard_False;
set nbshapes_expected "
Number of shapes in shape
VERTEX : 5
- EDGE : 9
+ EDGE : 8
WIRE : 4
FACE : 4
SHELL : 1
SOLID : 1
COMPSOLID : 0
COMPOUND : 1
- SHAPE : 25
+ SHAPE : 24
"
checknbshapes result -ref ${nbshapes_expected} -t -m "Boolean operations common"
+set tolres [checkmaxtol result]
+
+if { ${tolres} > 6.e-6} {
+ puts "Error: bad tolerance of result"
+}
+
checkview -display result -3d -path ${imagedir}/${test_image}-3d.png
checkview -display result -2d -path ${imagedir}/${test_image}-2d.png
set nbshapes_expected "
Number of shapes in shape
VERTEX : 13
- EDGE : 21
+ EDGE : 20
WIRE : 8
FACE : 8
SHELL : 1
SOLID : 1
COMPSOLID : 0
COMPOUND : 1
- SHAPE : 53
+ SHAPE : 52
"
checknbshapes result -ref ${nbshapes_expected} -t -m "Boolean operations cut"
+set tolres [checkmaxtol result]
+
+if { ${tolres} > 6.e-6} {
+ puts "Error: bad tolerance of result"
+}
+
checkview -display result -3d -path ${imagedir}/${test_image}-3d.png
checkview -display result -2d -path ${imagedir}/${test_image}-2d.png
--- /dev/null
+puts "======================================================="
+puts " 0032291: General Fuse produces wrong number of solids"
+puts "======================================================="
+puts ""
+
+restore [locate_data_file bug32291.brep] s
+
+explode s
+baddobjects s_1
+baddtools s_2 s_3 s_4 s_5 s_6 s_7 s_8
+bfillds
+bbuild result
+
+checkshape result
+
+checknbshapes result -vertex 79 -edge 176 -wire 112 -face 112 -shell 18 -solid 18
+
+set tolres [checkmaxtol result]
+
+if { ${tolres} > 7.e-5} {
+ puts "Error: bad tolerance of result"
+}
+
+axo
+clear
+explode result So
+fit
+
+checkview -screenshot -2d -path ${imagedir}/${test_image}.png