Salome HOME
[bos #29473] [EDF] (2022-T1) Advanced geometry features: conformity of non holed...
[modules/geom.git] / test / test_conformity.py
diff --git a/test/test_conformity.py b/test/test_conformity.py
new file mode 100644 (file)
index 0000000..6c5e7b0
--- /dev/null
@@ -0,0 +1,34 @@
+# Check shape applicability for Boolean Operations
+
+import salome
+salome.salome_init_without_session()
+import GEOM
+from salome.geom import geomBuilder
+geompy = geomBuilder.New()
+
+from inspect import getfile
+from os.path import abspath, dirname, join
+
+data_dir = abspath(join(dirname(getfile(lambda: None)), 'data'))
+shape = geompy.ImportBREP(join(data_dir, 'test_twisted_face.brep'))
+
+tol = geompy.Tolerance(shape)
+
+# perform all checks
+check = geompy.CheckConformity(shape)
+assert(not check.isValid())
+assert(len(check.smallEdges()) == 4)
+assert(len(check.selfIntersected2D()) == 2)
+assert(len(check.interferingSubshapes()) == 6)
+for p in check.interferingSubshapes():
+    assert(geomBuilder.EnumToLong(p.first.GetShapeType()) == geompy.ShapeType["VERTEX"] and
+           geomBuilder.EnumToLong(p.second.GetShapeType()) == geompy.ShapeType["VERTEX"])
+assert(len(check.distantShapes()) == 2)
+for p in check.distantShapes():
+    assert(geomBuilder.EnumToLong(p.first.GetShapeType()) == geompy.ShapeType["EDGE"] and
+           geomBuilder.EnumToLong(p.second.GetShapeType()) == geompy.ShapeType["FACE"])
+assert(len(check.distantShapes(tolerance = 300.0)) == 1)
+assert(len(check.distantShapes(tolerance = 400.0)) == 0)
+
+newTol = check.updateTolerance()
+assert(newTol < max(tol))