1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-29 14:00:49 +03:00

0028968: Incorrect offset for the faces with singularities

Simple offset algorithm (BRepOffset_MakeSimpleOffset) is improved to handle the case when bspline surface has imprecise singularity at one of sides (when side is degenerated but not exactly to one point).
In such case, the algorithm tries to collapse all poles of singular side of the surface to the same point; this allows avoiding flapping of normal due to small fluctuations of surface.

If face being offset contains degenerated edges, then check for singularity is done using position and tolerance of corresponding vertices.
In addition, each side is checked with some user-defined tolerance (by default Precision::Confusion()); this helps to process cases when no edge is located at that side or if such edge is not encoded as degenerated.
New parameter Tolerance is introduced for that in BRepOffset_MakeSimpleOffset class.

Tests added:
bugs modelg_7 bug28968 - on isolated faces as reported in the issue, mostly for visual check (absence of loops)
offset simple F01-05 - on original shells, checking tolerances of resulting shell
This commit is contained in:
abv
2017-08-25 14:10:02 +03:00
committed by bugmaster
parent 230b2bff00
commit 8574e3291f
20 changed files with 335 additions and 73 deletions

View File

@@ -359,15 +359,18 @@ proc checkfreebounds {shape ref_value args} {
}
help checkmaxtol {
Compare max tolerance of shape with reference value.
Command returns max tolerance of the shape.
Returns max tolerance of the shape and prints error message if specified
criteria are not satisfied.
Use: checkmaxtol shape [options...]
Allowed options are:
-ref: reference value of maximum tolerance.
-source: list of shapes to compare with, e.g.: -source {shape1 shape2 shape3}
-min_tol: minimum tolerance for comparison.
-multi_tol: tolerance multiplier.
Options specify criteria for checking the maximal tolerance value:
-ref <value>: check it to be equal to reference value.
-min_tol <value>: check it to be not greater than specified value.
-source <list of shapes>: check it to be not greater than
maximal tolerance of specified shape(s)
-multi_tol <value>: additional multiplier for value specified by -min_tol
or -shapes options.
}
proc checkmaxtol {shape args} {
@@ -764,9 +767,10 @@ help checkview {
-display shapename: display shape with name 'shapename'
-3d: display shape in 3d viewer
-2d [ v2d / smallview ]: display shape in 2d viewer (default viewer is a 'smallview')
-path PATH: location of saved screenshot of viewer
-vdispmode N: it is possible to set vdispmode for 3d viewer (default value is 1)
-screenshot: procedure will try to make screenshot of already created viewer
-path <path>: location of saved screenshot of viewer
Procedure can check some property of shape (length, area or volume) and compare it with some value N:
-l [N]
-s [N]