if(LevelOfIterWithoutAppend > 5)
{
- if(pasSav[0]<pasInit[0])
+ for (Standard_Integer i = 0; i < 4; i++)
{
- pasInit[0]-=(pasInit[0]-pasSav[0])*0.25;
- LevelOfIterWithoutAppend=0;
- }
+ if (pasSav[i] > pasInit[i])
+ continue;
- if(pasSav[1]<pasInit[1])
- {
- pasInit[1]-=(pasInit[1]-pasSav[1])*0.25;
- LevelOfIterWithoutAppend=0;
- }
+ const Standard_Real aDelta = (pasInit[i]-pasSav[i])*0.25;
- if(pasSav[2]<pasInit[2])
- {
- pasInit[2]-=(pasInit[2]-pasSav[2])*0.25;
- LevelOfIterWithoutAppend=0;
- }
-
- if(pasSav[3]<pasInit[3])
- {
- pasInit[3]-=(pasInit[3]-pasSav[3])*0.25;
- LevelOfIterWithoutAppend=0;
+ if(aDelta > Epsilon(pasInit[i]))
+ {
+ pasInit[i] -= aDelta;
+ LevelOfIterWithoutAppend=0;
+ }
}
}
--- /dev/null
+puts "=========="
+puts "OCC24161"
+puts "=========="
+puts ""
+###########################################
+# boolean operation hanging
+###########################################
+
+cpulimit 100
+
+restore [locate_data_file bug24161_MirrorSolids.brep] m
+explode m
+
+bop m_1 m_2
+bopfuse result
+
+checkshape result
+bopargcheck result
+
+smallview
+donly result
+
+set only_screen_axo 1