mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-04 13:13:25 +03:00
0027300: Boolean operation produces invalid shape in terms of "bopargcheck" command
1. Check, if value found by math_PSO algorithm cannot be precised by math_NewtonMinimum algorithm. In this case, we call math_PSO algorithm repeatedly, however, with other parameters. 2. Some margin of edge tolerance value has been provided in IntTools_Tools class. 3. Interface of math_NewtonMinimum class has been changed (method GetStatus() has been added). Correction of some test cases according to their new behavior.
This commit is contained in:
@@ -797,8 +797,16 @@ Standard_Boolean IntTools_Tools::ComputeTolerance
|
||||
if (!aCS.IsDone()) {
|
||||
return Standard_False;
|
||||
}
|
||||
//
|
||||
theMaxDist = aCS.MaxDistance();
|
||||
|
||||
//Obtaining precise result is impossible if we use
|
||||
//numeric methods for solution. Therefore, we must provide
|
||||
//some margin. Otherwise, in the future
|
||||
//(when geometrical properties of the curve will be changed,
|
||||
//e.g. after trimming) we will be able to come
|
||||
//to the more precise minimum point. As result, this curve with the
|
||||
//tolerance computed earlier will become invalid.
|
||||
const Standard_Real anEps = (1.0+1.0e-9);
|
||||
theMaxDist = anEps*aCS.MaxDistance();
|
||||
theMaxPar = aCS.MaxParameter();
|
||||
//
|
||||
return Standard_True;
|
||||
|
Reference in New Issue
Block a user