View Issue Details

IDProjectCategoryView StatusLast Update
0031144Open CASCADEOCCT:Shape Healingpublic2022-08-31 17:33
ReporterabvAssigned Tobugmaster  
PrioritynormalSeverityblock 
Status closedResolutionfixed 
Product Version7.4.0 
Target Version7.5.0Fixed in Version7.5.0 
Summary0031144: Shape Healing - ShapeAnalysis::OuterWire() infinite loop on solid obtained from IFC
DescriptionBRepMesh hangs on one of solids created during reading from IFC with OCC reader.
This blocks any possibility to see the model in CAD Assistant or other OCCT-based viewer.

This is regression appeared in OCCT 7.4.0.

The solid is valid according to checkshape but has large tolerance (90 mm, on object of ~ 300 mm size) and visible gaps in edges + misplaced vertex, see attached image.

The IFC files comes from Duraark archives (http://duraark.eu/data-repository/), archive "A-House Scan September 2014" (https://tib.eu/data/duraark/BuildingData/03_IFC_E57/LTU_A-House_2014-09-25_ifc.zip), file LTU_A-House_redesign.ifc, solid 4081 (no information on original entity).
Steps To Reproducepload ALL
restore LTU_A-House_redesign_so4081.brep a
incmesh a 1.
TagsNo tags attached.
Test case numberbugs/mesh/bug31144

Attached Files

  • LTU_A-House_redesign_so4081.brep (17,661 bytes)
  • LTU_A-House_redesign_so4081.png (8,809 bytes)

Relationships

related to 0031248 newabv Community Shape Healing - ShapeAnalysis::OuterWire() returns empty outer wire for attached use case 
related to 0032226 newasuraven Open CASCADE Modeling Algorithms - Bad models with BRepCheck_CollapsedEdge checkshape error 
related to 0031926 closedoan Community Shape Healing - ShapeAnalysis::OuterWire() considers next iteration element always to be a wire causing skipping of primal one 

Activities

abv

2019-11-09 08:20

manager  

LTU_A-House_redesign_so4081.brep (17,661 bytes)

abv

2019-11-09 08:21

manager  

LTU_A-House_redesign_so4081.png (8,809 bytes)

oan

2019-11-10 19:04

developer   ~0088883

It is strange that checkshape reports nothing, whereas bopargcheck notifies a lot of failures:

bopargcheck a #F
Made faulty shape: s1si_1
Made faulty shape: s1si_2
Made faulty shape: s1si_3
Made faulty shape: s1si_4
Made faulty shape: s1si_5
Made faulty shape: s1si_6
Made faulty shape: s1si_7
Made faulty shape: s1si_8
Made faulty shape: s1si_9
Made faulty shape: s1si_10
Made faulty shape: s1si_11
Made faulty shape: s1si_12
Made faulty shape: s1si_13
Made faulty shape: s1si_14
Made faulty shape: s1si_15
Made faulty shape: s1si_16
Made faulty shape: s1si_17
Made faulty shape: s1si_18
Made faulty shape: s1si_19
Made faulty shape: s1si_20
Made faulty shape: s1si_21
Made faulty shape: s1si_22
Made faulty shape: s1si_23
Made faulty shape: s1si_24
Made faulty shape: s1si_25
Made faulty shape: s1si_26
Made faulty shape: s1si_27
Made faulty shape: s1si_28
Made faulty shape: s1si_29
Made faulty shape: s1si_30
Made faulty shape: s1si_31
Made faulty shape: s1si_32
Made faulty shape: s1se_1
Made faulty shape: s1se_2
Made faulty shape: s1se_3
Made faulty shape: s1se_4
Faulties for FIRST shape found : 36
---------------------------------
Shapes are not suppotrted by BOP: NO
Self-Intersections : YES Cases(32) Total shapes(64)
Check for SI has been aborted : NO
Too small edges : YES Cases(4) Total shapes(4)
Bad faces : NO
Too close vertices : DISABLED
Too close edges : DISABLED
Shapes with Continuity C0 : NO
Invalid Curve on Surface : NO

Faulties for SECOND shape found : 0

However, issue should be checked in context of BRepMesh anyway.

oan

2019-11-10 21:07

developer   ~0088884

Dear Andrey,

preliminary analysis has shown that issue with hang on attached model is caused by

ShapeAnalysis::OuterWire (theFace);

called from BRepMesh_ShapeVisitor::Visit (const TopoDS_Face& theFace).

This means that issue by its nature is not a problem of BRepMesh, but Shape Healing regression.

Please move the ticket to Shape Healing category and assign to proper person for further processing.

oan

2019-11-10 22:17

developer   ~0088885

In details, ShapeAnalysis::OuterWire causes infinite loop if first sub-shape is not a wire due to lack of proper iterator move after this particular check.

oan

2019-11-10 22:26

developer   ~0088886

Potentially, this issue will cause hang up of any algorithm using ShapeAnalysis::OuterWire, so it should be checked by an expert in order to provide an appropriate fix.

git

2019-11-12 19:13

administrator   ~0088921

Branch CR31144 has been created by abv.

SHA-1: 40125556fe489fcb0a862a7f6ccc43dd2a72f81b


Detailed log of new commits:

Author: abv
Date: Tue Nov 12 19:10:14 2019 +0300

    0031144: Shape Healing - ShapeAnalysis::OuterWire() infinite loop on solid obtained from IFC
    
    Implementation of ShapeAnalysis::OuterWire() is revised to avoid infinite cycle if face contains internal vertex.

git

2019-11-12 23:17

administrator   ~0088925

Branch CR31144 has been updated by abv.

SHA-1: e6764f9969f1760dca248568767e6765cd1bb888


Detailed log of new commits:

Author: abv
Date: Tue Nov 12 23:15:55 2019 +0300

    Added test bugs mesh bug31144

abv

2019-11-12 23:17

manager   ~0088926

Fix is pushed to CR3144 and tested, see Jenkins job CR3144-abv; please review

gka

2019-11-15 10:07

developer   ~0088982

Branch CR31144 was reviewed

git

2019-11-16 18:11

administrator   ~0089022

Branch CR31144 has been deleted by inv.

SHA-1: e6764f9969f1760dca248568767e6765cd1bb888

Related Changesets

occt: master 31a5a359

2019-11-12 16:10:14

abv


Committer: bugmaster Details Diff
0031144: Shape Healing - ShapeAnalysis::OuterWire() infinite loop on solid obtained from IFC

Implementation of ShapeAnalysis::OuterWire() is revised to avoid infinite cycle if face contains internal vertex.
Affected Issues
0031144
mod - src/ShapeAnalysis/ShapeAnalysis.cxx Diff File
add - tests/bugs/mesh/bug31144 Diff File

Issue History

Date Modified Username Field Change
2019-11-09 08:20 abv New Issue
2019-11-09 08:20 abv Assigned To => oan
2019-11-09 08:20 abv File Added: LTU_A-House_redesign_so4081.brep
2019-11-09 08:21 abv File Added: LTU_A-House_redesign_so4081.png
2019-11-10 19:04 oan Note Added: 0088883
2019-11-10 21:07 oan Note Added: 0088884
2019-11-10 21:07 oan Assigned To oan => abv
2019-11-10 21:07 oan Status new => assigned
2019-11-10 22:17 oan Note Added: 0088885
2019-11-10 22:26 oan Note Added: 0088886
2019-11-11 12:39 oan Status assigned => feedback
2019-11-12 15:06 oan Category OCCT:Mesh => OCCT:Shape Healing
2019-11-12 15:06 oan Summary Mesh - [regression] BRepMesh hangs on solid obtained from IFC => Shape Healing - ShapeAnalysis::OuterWire() infinite loop on solid obtained from IFC
2019-11-12 19:13 git Note Added: 0088921
2019-11-12 19:27 abv Status feedback => assigned
2019-11-12 23:17 git Note Added: 0088925
2019-11-12 23:17 abv Note Added: 0088926
2019-11-12 23:17 abv Assigned To abv => gka
2019-11-12 23:17 abv Status assigned => resolved
2019-11-12 23:17 abv Steps to Reproduce Updated
2019-11-13 08:36 abv Description Updated
2019-11-15 10:07 gka Note Added: 0088982
2019-11-15 10:07 gka Assigned To gka => bugmaster
2019-11-15 10:07 gka Status resolved => reviewed
2019-11-15 16:39 bugmaster Test case number => bugs/mesh/bug31144
2019-11-16 17:57 bugmaster Changeset attached => occt master 31a5a359
2019-11-16 17:57 bugmaster Status reviewed => verified
2019-11-16 17:57 bugmaster Resolution open => fixed
2019-11-16 18:11 git Note Added: 0089022
2019-12-16 19:07 oan Relationship added related to 0031248
2020-12-02 16:40 emo Fixed in Version => 7.5.0
2020-12-02 17:12 emo Status verified => closed
2021-03-18 12:25 asuraven Relationship added related to 0032226
2022-08-31 17:33 oan Relationship added related to 0031926