Archived issue #0025045
STEP Import fails to find all surfaces
Description
OpenCASCADE model is missing a bottom surface when importing the attached STEP model.
Steps to reproduce
Steps to reproduce:
1. Import the attached step model using the ImportExport sample program
2. View the shaded model in the viewer - rotate to view missing bottom surface
1. Import the attached step model using the ImportExport sample program
2. View the shaded model in the viewer - rotate to view missing bottom surface
Additional information
All other non-OCC-based CAD programs tested render the STEP file correctly.
Public activity
11 archived notes
Participants are labeled by their role within this record.
All the faces translate from STEP correctly. The problem is in meshing of face 11, now attached to the issue as separate file Attachment 2 (BREP). BRepMesh reports "Self-intersecting wire" error, althoung the face is valid according to checkshape, and has rather small tolerance:
Draw[2]> rest d:/temp/Attachment 2 (BREP) a
a
Draw[3]> incmesh a 1
Incremental Mesh, multi-threading OFF
Meshing statuses: SelfIntersectingWire
Draw[4]> trinfo a
This shape contains 0 triangles.
0 nodes.
Maximal deflection 0
Draw[5]> checksh a
This shape seems to be valid
Draw[6]> toler a
Tolerance MAX=0.00053798328028226996 AVG=0.0002255237013194376 MIN=9.99999999999
99995e-008
FACE : MAX=9.[revision removed]-008 AVG=9.[revision removed]-008 MIN=9.99999999
99999995e-008
EDGE : MAX=0.00053730480348679094 AVG=0.000118593008751733 MIN=9.999999999999
9995e-008
VERTEX : MAX=0.00053798328028226996 AVG=0.00029777435604657639 MIN=9.9999999999
999995e-008
Draw[7]> boundings a
-5.2126900585274489 -2.6044476583634797 -1.[revision removed]-007 4.7674093775600
284 5.2126900585274498 1.826735590329116
Draw[2]> rest d:/temp/Attachment 2 (BREP) a
a
Draw[3]> incmesh a 1
Incremental Mesh, multi-threading OFF
Meshing statuses: SelfIntersectingWire
Draw[4]> trinfo a
This shape contains 0 triangles.
0 nodes.
Maximal deflection 0
Draw[5]> checksh a
This shape seems to be valid
Draw[6]> toler a
Tolerance MAX=0.00053798328028226996 AVG=0.0002255237013194376 MIN=9.99999999999
99995e-008
FACE : MAX=9.[revision removed]-008 AVG=9.[revision removed]-008 MIN=9.99999999
99999995e-008
EDGE : MAX=0.00053730480348679094 AVG=0.000118593008751733 MIN=9.999999999999
9995e-008
VERTEX : MAX=0.00053798328028226996 AVG=0.00029777435604657639 MIN=9.9999999999
999995e-008
Draw[7]> boundings a
-5.2126900585274489 -2.6044476583634797 -1.[revision removed]-007 4.7674093775600
284 5.2126900585274498 1.826735590329116
The core of the problem is in method BRepMesh_FastDiscretFace::FindUV that uses large tolerance to identify coinciding points in 2D space. As a result, degenerative edge (in fact represented by a segment in 2D space) collapses to a single vertex during discretization procedure and causes wire with self intersection (see attached screenshot). Another anomaly related to this behavior is already reported in #0023111 issue.
In context of current issue it is proposed:
- take changes implemented in #0023106 as a base for current one;
- in BRepMesh_FastDiscret fill data structure and classifier tool using scaled dimensions as it is implemented in BRepMesh_FastDiscretFace::Add(face);
- fill data structure within BRepMesh_FastDiscretFace using scaled dimensions without further conversion to normal ones;
- convert dimensions from scaled to normal directly before storing of triangulation to the shape in BRepMesh_FastDiscret.
In context of current issue it is proposed:
- take changes implemented in #0023106 as a base for current one;
- in BRepMesh_FastDiscret fill data structure and classifier tool using scaled dimensions as it is implemented in BRepMesh_FastDiscretFace::Add(face);
- fill data structure within BRepMesh_FastDiscretFace using scaled dimensions without further conversion to normal ones;
- convert dimensions from scaled to normal directly before storing of triangulation to the shape in BRepMesh_FastDiscret.
Branch [archived branch] has been created by Commenter 2.
[revision removed]
Detailed log of new commits:
Author: Commenter 2
Date: Fri Jan 29 12:41:02 2016 +0300
Added test case
[revision removed]
Detailed log of new commits:
Author: Commenter 2
Date: Fri Jan 29 12:41:02 2016 +0300
Added test case
Dear Commenter 1,
it seems that this case has became OK due to fixes for shape healing and mesh since 6.7.0.
Please verify. Test case has been added to branch CR25045.
it seems that this case has became OK due to fixes for shape healing and mesh since 6.7.0.
Please verify. Test case has been added to branch CR25045.
Branch [archived branch] has been deleted by Commenter 2.
[revision removed]
[revision removed]
Branch [archived branch] has been created by Commenter 2.
[revision removed]
Detailed log of new commits:
Author: Commenter 2
Date: Fri Jan 29 14:08:31 2016 +0300
Added test case
[revision removed]
Detailed log of new commits:
Author: Commenter 2
Date: Fri Jan 29 14:08:31 2016 +0300
Added test case
Branch [archived branch] has been updated by Commenter 4.
[revision removed]
Detailed log of new commits:
Author: Commenter 4
Date: Thu Feb 18 14:56:35 2016 +0300
Small corrections in test case
[revision removed]
Detailed log of new commits:
Author: Commenter 4
Date: Thu Feb 18 14:56:35 2016 +0300
Small corrections in test case
Test case:
bugs mesh bug25045 - OK
http://occt-tests/bug25045_Lin/bugs/mesh/bug25045.html
http://occt-tests/bug25045_WNT/bugs/mesh/bug25045.html
bugs mesh bug25045 - OK
http://occt-tests/bug25045_Lin/bugs/mesh/bug25045.html
http://occt-tests/bug25045_WNT/bugs/mesh/bug25045.html
Branch [archived branch] has been updated forcibly by Commenter 4.
[revision removed]
[revision removed]
Branch [archived branch] has been updated forcibly by Commenter 4.
[revision removed]
[revision removed]
Branch [archived branch] has been deleted by Commenter 5.
[revision removed]
[revision removed]
Related records