1 # Check shape applicability for Boolean Operations
4 salome.salome_init_without_session()
6 from salome.geom import geomBuilder
7 geompy = geomBuilder.New()
9 from inspect import getfile
10 from os.path import abspath, dirname, join
12 data_dir = abspath(join(dirname(getfile(lambda: None)), 'data'))
13 shape = geompy.ImportBREP(join(data_dir, 'test_twisted_face.brep'))
15 tol = geompy.Tolerance(shape)
18 check = geompy.CheckConformity(shape)
19 assert(not check.isValid())
20 assert(len(check.smallEdges()) == 4)
21 assert(len(check.selfIntersected2D()) == 2)
22 assert(len(check.interferingSubshapes()) == 6)
23 for p in check.interferingSubshapes():
24 assert(geomBuilder.EnumToLong(p.first.GetShapeType()) == geompy.ShapeType["VERTEX"] and
25 geomBuilder.EnumToLong(p.second.GetShapeType()) == geompy.ShapeType["VERTEX"])
26 assert(len(check.distantShapes()) == 2)
27 for p in check.distantShapes():
28 assert(geomBuilder.EnumToLong(p.first.GetShapeType()) == geompy.ShapeType["EDGE"] and
29 geomBuilder.EnumToLong(p.second.GetShapeType()) == geompy.ShapeType["FACE"])
30 assert(len(check.distantShapes(tolerance = 300.0)) == 1)
31 assert(len(check.distantShapes(tolerance = 400.0)) == 0)
33 newTol = check.updateTolerance()
34 assert(newTol < max(tol))