]> OCCT Git - occt.git/commit
0028968: Incorrect offset for the faces with singularities
authorabv <abv@opencascade.com>
Fri, 25 Aug 2017 11:10:02 +0000 (14:10 +0300)
committerbugmaster <bugmaster@opencascade.com>
Wed, 30 Aug 2017 10:52:56 +0000 (13:52 +0300)
commit8574e3291f8ebe253cb0af53861cf83ab3675ace
tree9f6d7a09a142a0376f46c9c9a547e5d25642de6b
parent230b2bff0030e4b3f378d7a34c678a47ec886ec4
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
20 files changed:
src/BRepOffset/BRepOffset.cxx
src/BRepOffset/BRepOffset.hxx
src/BRepOffset/BRepOffset_MakeSimpleOffset.cxx
src/BRepOffset/BRepOffset_MakeSimpleOffset.hxx
src/BRepOffset/BRepOffset_SimpleOffset.cxx
src/BRepOffset/BRepOffset_SimpleOffset.hxx
src/BRepTest/BRepTest_FeatureCommands.cxx
src/BRepTest/BRepTest_OtherCommands.cxx
src/DrawResources/CheckCommands.tcl
src/ViewerTest/ViewerTest.cxx
tests/bugs/modalg_7/bug28968 [new file with mode: 0644]
tests/offset/simple/A04
tests/offset/simple/A11
tests/offset/simple/F01 [new file with mode: 0644]
tests/offset/simple/F02 [new file with mode: 0644]
tests/offset/simple/F03 [new file with mode: 0644]
tests/offset/simple/F04 [new file with mode: 0644]
tests/offset/simple/F05 [new file with mode: 0644]
tests/offset/simple/begin
tests/offset/simple/end