View Issue Details

IDProjectCategoryView StatusLast Update
0022849CommunityOCCT:Data Exchangepublic2023-09-29 17:46
ReporterAGPX Assigned To 
PrioritynormalSeverityminor 
Status feedbackResolutionopen 
PlatformWindowsOSWindows 
Product Version6.5.2 
Target VersionUnscheduled 
Summary0022849: Bad import of a STEP file (error during triangulation).
DescriptionThe attached STEP file is not imported correctly. At least, 9 faces cannot be triangulated. I have compared the results with other software that show the mesh correctly.
Steps To ReproduceSimply try to open the STEP with the Import/Export sample. Navigate around the "3M" extruded text. The lateral faces of the number "3" are missing.
TagsNo tags attached.
Test case numberchl 934 V7

Attached Files

  • 2520-6002_step.stp (840,020 bytes)
  • shot1.jpg (53,874 bytes)
  • V7 (894 bytes)
  • non-closed.png (13,333 bytes)
  • zero-area.png (11,209 bytes)

Relationships

related to 0028500 closedoan Open CASCADE Mesh - Artifact in shaded view of the shape 

Activities

AGPX

2011-12-15 21:25

reporter  

2520-6002_step.stp (840,020 bytes)

AGPX

2011-12-15 21:29

reporter  

shot1.jpg (53,874 bytes)

abv

2011-12-16 08:14

manager   ~0018876

Reproduced on last trunk, in DRAW:

Draw[5]> stepread D:/ABV/Work/OCC/occ22849/2520-6002_step.stp a *
...
Draw[6]> checksh a_1
This shape seems to be valid
Draw[7]> tole a_1
Tolerance MAX=0.025401524012559532 AVG=0.00034227306905487047 MIN=9.999999999999
9995e-008
FACE : MAX=9.9999999999999995e-008 AVG=9.9999999999999995e-008 MIN=9.99999999
99999995e-008
EDGE : MAX=0.025401524012559532 AVG=0.00014795105451371384 MIN=1.00005e-007
VERTEX : MAX=0.025401524012559532 AVG=0.00047448980445837901 MIN=1.000100002500
0001e-007
Draw[9]> incmesh a_1 0.1
Meshing statuses: OpenWire Failure
Draw[10]> tricheck a_1
face 66 has no triangulation
face 67 has no triangulation
face 68 has no triangulation
face 72 has no triangulation
face 73 has no triangulation
face 74 has no triangulation
face 89 has no triangulation
face 90 has no triangulation
face 91 has no triangulation

abv

2012-01-12 09:48

manager   ~0019094

The same problem (no shading of some faces) is reproduced in previous releases of OCCT (checked: 6.3.0, 6.3.1, and 6.5.0)

ama

2012-01-27 16:38

developer   ~0019286

Last edited: 2012-02-28 15:02

SVN branch http://svn/svn/occt/branches/OCC22849 (revision 10634) is ready to be reviewed.

Modified process of edges discretization (BRepMesh_FastDiscret::Add(edge)) in this way to avoid unclosed polygons and "OpenWire Failure". If adjucent edges are disconnected in 2d (while connected in 3d) the gap is closed by last point from previous edge.
But some faces is still has no triangulation (face 67, 73, 91). This is normal because in the original file (2520-6002_step.stp) these faces are determined by a planar surface and only two vertex that lead to an error during triangulation (Meshing statuses: Failure).
 
Also changed the conditions of bending pcurves in ShapeFix_Wire::FixLacking() - if two pcurves are parallel lines - bending is replaced by increase tolerance of vertex.

epa

2012-03-12 10:51

developer   ~0019931

The fix looks like a workaround. Comparing of 2D points with Precision::PConfusion looks redundant, because nearest 2D points are merged in the 2D cell filter. Comparing of 3D points looks dangerous:
* why double tolerance is uses
* what behaviour will be if the tolerance of vertex is too big (more than face bounding box)
* this fix potensionnaly contradict to fix with checking direction of pcurves (not yet integrated)

Before testing this fix please update the values ​​of the field myFirstEdge in all places where the function "Add" is called from the Edge

ama

2012-03-14 14:51

developer   ~0019966

SVN branch http://svn/svn/occt/branches/OCC22849 (revision 10740) is ready to be reviewed.

epa

2012-03-14 15:39

developer   ~0019968

Dear Bugmaster,
Please test the current fix

apn

2012-03-15 17:34

administrator  

V7 (894 bytes)

apn

2012-03-16 16:01

administrator   ~0020021

Last edited: 2012-03-16 16:01

Dear BugMaster,
    SVN branch http://svn/svn/occt/branches/OCC22849 hes been moved to GIT CR22849 one.
    Workbench KAS:dev:apn-22849-occt was created from git branch CR22849
  (and apn-22849-products from svn trunk) and compiled on Linux platform.
  
    There are following regressions in apn-22849-products regarding to KAS:dev:products-20120306-opt:

bom 009 A3 B3 F3 G3
bom 010 P2 P3 Q2 Q3
bom 012 P2 P3 Q2
bom 013 G2 H2 H3 R2 R3 S2 S3
bom 014 A1 B4 C1 C2 C3 C4 D4 E4 G1 I1 N1 N3 N4 O1 O3 O4 P1 P3 P4 Q1 Q3 Q4 R1 R3 R4 T1 T3 T4 U1 U3 U4
bom 015 A4 B4 C4 D4 E2 E4 P2
bom 016 J2 J3 K2 K3 Q2 Q3
bom 017 A1 A3 A4 B2 B4 C4 D4 E1 E2 E3 E4 F1 F2 F4 G2 G3 G4 K1 K3 K4 L1 L3 L4 M1 M2 M3 M4 N1 N3 N4
bom 018 A3 B2 B3
bom 019 A2 A3 A4 D4 E1 E3 E4 F2 F4 G4 H4 I1 I2 I3 I4 J1 J2 J4
bom 020 A2 A4 B2 B4 M2
bom 102 C1 C2 E3 E4 F1 F2 P1 P2 P3 P4 P5 P6 Q1 Q2 T2
bom 801 A1 B1 B2 C1 C2 C3 D1 D2 D4 D6 D7 E2 F1 G1 G2 G3 G4 G5 G6
bom 802 A1 A3
bom 803 B1 C1 D1 D2
bom 814 A1 C1
bom 900 A1 C1 E1 G3 H1 J5 K3 L5 L8 M1 N2 O1 P3
bom 903 A2 E2 E4 E5 E6 E7 F1 F2 F3 F4 F5 F6 G1 G2 G3 G4 G5 G6 H2 H4 H5 H6 I3 I4 I5 I6 J1 J2 J3 J4 J5 J6 K1 K3 L3 M2
bom 904 B8 C6 D1 D4 D6 G4 G5 J2 J4 K7 L3 L4 L7 L8 M1 M2
bom 909 A7 E4 E6 E9

caf 003 D1 D2 D3 D4 E1 F1 F2 F3 F4 G1 H1 H2 I1 I2 J1 J2 K1 K2

chl 902 F1
chl 917 C9
chl 919 C1 C2 M6 W6
chl 922 G9 H1 T3 T4 T5 T6 T8 T9
chl 926 A1 C8 C9 D2
chl 928 O5
chl 929 E2
chl 934 C8 J6
chl 935 S8
chl 936 G9
chl 904 A4 B1 C3 C4
chl 914 E3
chl 917 D6
chl 918 A2 A3 A6 A7
chl 919 C7 Q1
chl 922 R8 R9 U1 U2 U3 U4 U5 U6 Y3 Y4
chl 926 C3 C5 D1 D7 D8
chl 929 ...
chl 934 ...
chl 936 ...

msh 001 D2 D7 F2 F6 F7 F8 L2 N7 O1 O3 O6 P2 P4 R6
..........

shd 001 A2 A4 A7 B2 B3 B5 B6 B7 B9 C1 C2 C4 C5 C6 C7 C8 C9 D1 D2 D3 D4 D5 D7 D8 D9 E1 E2 E3 E4 E5 E6 E7 E8 E9 ....
shd 002 ...
shd 003 A2 A5 B1 B3 B4 B6

vpr 002 A1 A2 A3 A4 A5 A6 A7 A8
vpr 005 A1 A2 A3 A4 A5 A6 A7 A8
vpr 007 A2 B2 B5 D8
vpr 008 A2 B2 B5 D8

    Test case for this fix is chl 934 V7. It's OK.

    See results in /QADisk/occttests/results/KAS/dev/apn-22849-products_15032012/lin
    See reference results in /QADisk/occttests/results/KAS/dev/products-20120306-opt_07032012/lin
    See test cases in /QADisk/occttests/tests/ED

AGPX

2013-01-19 18:56

reporter   ~0023036

Reminder sent to: apn, epa

Hello, there's some prevision for when this fix will be released? Thank you.

AGPX

2013-01-19 18:57

reporter   ~0023037

Reminder sent to: ama

Hello, there's some prevision on when this fix will be released? Thank you.

oan

2016-10-17 11:51

developer   ~0058771

Issue has been moved to Data Exchange category due to problem during STEP translation described in: https://tracker.dev.opencascade.org/view.php?id=25415#c37394

gka

2016-10-25 16:21

developer   ~0059101

For this case STEP file contains faces containing from two edges based on the lines. For example face with number 67 obtained from entity #5009
Shape a_1_1_67 : imported from entity 4973:#5009

Draw[29]> entity 4973 6
  -- DUMP Entity n0 4973 level 6
 --- (STEP) Entity 4973:#5009 Type cdl : StepShape_AdvancedFace
In dump, iii:#jjj means : entity rank iii has step ident #jjj
4963:#4999 = PLANE('',4962:#4998);
4972:#5008 = FACE_OUTER_BOUND('',4971:#5007,.T.);
4973:#5009 = ADVANCED_FACE('',(4972:#5008),4963:#4999,.F.);

Draw[30]> entity 4971 6
  -- DUMP Entity n0 4971 level 6
 --- (STEP) Entity 4971:#5007 Type cdl : StepShape_EdgeLoop
In dump, iii:#jjj means : entity rank iii has step ident #jjj
4969:#5005 = ORIENTED_EDGE('',*,*,4968:#5004,.F.);
4970:#5006 = ORIENTED_EDGE('',*,*,2690:#2726,.F.);
4971:#5007 = EDGE_LOOP('',(4969:#5005,4970:#5006));

Draw[31]> entity 4968 6
  -- DUMP Entity n0 4968 level 6
 --- (STEP) Entity 4968:#5004 Type cdl : StepShape_EdgeCurve
In dump, iii:#jjj means : entity rank iii has step ident #jjj
2459:#2495 = VERTEX_POINT('',2458:#2494);
2667:#2703 = VERTEX_POINT('',2666:#2702);
4967:#5003 = LINE('',4964:#5000,4966:#5002);
4968:#5004 = EDGE_CURVE('',2459:#2495,2667:#2703,4967:#5003,.T.);

Draw[32]> entity 2690 6
  -- DUMP Entity n0 2690 level 6
 --- (STEP) Entity 2690:#2726 Type cdl : StepShape_EdgeCurve
In dump, iii:#jjj means : entity rank iii has step ident #jjj
2459:#2495 = VERTEX_POINT('',2458:#2494);
2667:#2703 = VERTEX_POINT('',2666:#2702);
2689:#2725 = LINE('',2686:#2722,2688:#2724);
2690:#2726 = EDGE_CURVE('',2667:#2703,2459:#2495,2689:#2725,.T.);

After translation from STEP valid face consists of two edges with to vertices was created.
Gaps in the 2D and 3D space on the both ends of face was covered by tolerances of vertices.

Therefore translation from STEP in this case is valid. Obviously that this case is limitation of the BRepMesh_FastDiscret algorithm.

oan

2022-10-19 14:16

developer   ~0111660

Despite of that the ends of the edges of the problematic faces are covered by tolerance of their vertices in 3d, they are invalid in 2d.

The common problem is that they have either non-closed outer contours or contain only two straight coinciding edges with opposite direction, i.e. forming zero area in 2d which is nonsence for BRepMesh as it by nature requires triangles on non-zero area, i.e. links of non-zero length, in order to build their circumcircles and perform Delaunay analysis during insertion of the points which is impossible to do if triangles are degenerated (https://en.wikipedia.org/wiki/Delaunay_triangulation#Algorithms).

In general case, after integration of 0028500 issue, there is a possibility to create kind of rough mesh for the aforementioned cases.

However, it is required that each face has non-zero area of its outer contour in 2d, and it is desirable that it should be closed. Given that such shapes could be processed and visualized even if they are visually disconnected in 3d.
non-closed.png (13,333 bytes)

oan

2022-10-19 14:17

developer   ~0111661

zero-area.png (11,209 bytes)

oan

2022-10-19 15:17

developer   ~0111667

Dear Irina,

could you please have a look at the faces reported by tricheck using the following script:

stepread 2520-6002_step.stp a *
vinit
vsetdispmode 1
vdisplay a_1
vfit

tricheck a_1

Issue History

Date Modified Username Field Change
2011-12-15 21:25 AGPX New Issue
2011-12-15 21:25 AGPX Assigned To => gka
2011-12-15 21:25 AGPX File Added: 2520-6002_step.stp
2011-12-15 21:29 AGPX File Added: shot1.jpg
2011-12-16 08:14 abv Note Added: 0018876
2011-12-16 08:14 abv Assigned To gka => ama
2011-12-16 08:14 abv Status new => assigned
2012-01-12 09:48 abv Note Added: 0019094
2012-01-27 16:38 ama Note Added: 0019286
2012-01-27 16:40 ama Assigned To ama => pdn
2012-01-27 16:40 ama Status assigned => resolved
2012-02-15 15:20 abv Assigned To pdn => ama
2012-02-15 15:20 abv Status resolved => assigned
2012-02-28 15:02 ama Note Edited: 0019286
2012-02-28 15:58 ama Assigned To ama => pdn
2012-02-28 15:58 ama Status assigned => resolved
2012-03-11 10:43 abv Assigned To pdn => epa
2012-03-12 10:51 epa Note Added: 0019931
2012-03-12 10:51 epa Assigned To epa => ama
2012-03-12 10:51 epa Status resolved => assigned
2012-03-14 14:51 ama Note Added: 0019966
2012-03-14 14:51 ama Assigned To ama => epa
2012-03-14 14:51 ama Status assigned => resolved
2012-03-14 15:39 epa Note Added: 0019968
2012-03-14 15:39 epa Assigned To epa => bugmaster
2012-03-14 15:39 epa Status resolved => reviewed
2012-03-14 15:50 mkv Assigned To bugmaster => aan
2012-03-15 17:33 apn Test case number => chl 934 V7
2012-03-15 17:34 apn Assigned To aan => apn
2012-03-15 17:34 apn File Added: V7
2012-03-16 16:01 apn Note Added: 0020021
2012-03-16 16:01 apn Note Edited: 0020021
2012-03-16 16:02 apn Assigned To apn => ama
2012-03-16 16:02 apn Status reviewed => assigned
2012-11-09 10:10 abv Category OCCT:Data Exchange => OCCT:Mesh
2013-01-19 18:56 AGPX Note Added: 0023036
2013-01-19 18:57 AGPX Note Added: 0023037
2014-09-15 11:52 pdn Target Version => 7.1.0
2016-10-17 11:51 oan Note Added: 0058771
2016-10-17 11:51 oan Assigned To ama =>
2016-10-17 11:51 oan Category OCCT:Mesh => OCCT:Data Exchange
2016-10-17 11:51 oan Assigned To => gka
2016-10-25 16:21 gka Note Added: 0059101
2016-10-25 16:22 gka Assigned To gka => oan
2016-10-25 16:22 gka Status assigned => feedback
2016-10-25 16:22 gka Target Version 7.1.0 => 7.2.0
2017-07-27 09:24 abv Target Version 7.2.0 => 7.4.0
2019-07-10 21:56 abv Target Version 7.4.0 => 7.5.0
2020-10-02 21:45 abv Target Version 7.5.0 => 7.6.0
2021-11-01 18:14 szy Target Version 7.6.0 => 7.7.0
2022-10-19 13:32 oan Relationship added related to 0028500
2022-10-19 14:16 oan Assigned To oan => AGPX
2022-10-19 14:16 oan Assigned To AGPX => msv
2022-10-19 14:16 oan Note Added: 0111660
2022-10-19 14:16 oan File Added: non-closed.png
2022-10-19 14:16 oan File Added: self-intersection.png
2022-10-19 14:17 oan File Deleted: self-intersection.png
2022-10-19 14:17 oan Note Added: 0111661
2022-10-19 14:17 oan File Added: zero-area.png
2022-10-19 15:15 oan Assigned To msv => ika
2022-10-19 15:17 oan Note Added: 0111667
2022-10-24 10:38 szy Target Version 7.7.0 => 7.8.0
2023-08-02 02:09 dpasukhi Target Version 7.8.0 => Unscheduled
2023-09-29 17:46 ika Assigned To ika =>