A valid shape that should't be valid...

I just found a shape that, according to OCC, is valid, but I think it shouldn't.

DRAW test:

Draw[1]> pload ALL
Draw[2]> polyline w 0 0 0 0 100 0 -100 200 0 100 200 0 0 100 0 0 0 0
Draw[3]> axo
Draw[4]> mkplane f w
Draw[5]> clear w
w
Draw[6]> checkshape f
This shape seems to be valid
Draw[7]> checkshape w
This shape seems to be valid

The wire is connected twice (or, in other words, shares 2 vertices by position). Shouldn't that be invalid? Is there any method/class that will tell me when I get such a shape? BRepCheck_Wire::SelfIntersect didn't detect it as such.

Bearloga's picture

Draw[23]> bopcheck f
Self-intersection near vertices
x1 x2
Self-intersection near vertices
x3 x4
Self-intersection near vertex and edge
x5 x6
Self-intersection near vertex and edge
x7 x8
Self-intersection near vertex and edge
x9 x10
Self-intersection near vertex and edge
x11 x12
Self-intersection near vertex and edge
x13 x14
Self-intersection near vertex and edge
x15 x16
Self-intersection near vertex and edge
x17 x18
Self-intersection near vertex and edge
x19 x20
Coincidance of edges
x21 x22
Coincidance of edges
x23 x24

Paul Jimenez's picture

BOPTools_Checker did the trick.

Thanks.