Salome HOME
PR: add blocFissure plugin
[modules/smesh.git] / src / Tools / blocFissure / gmu / shapeSurFissure.py
diff --git a/src/Tools/blocFissure/gmu/shapeSurFissure.py b/src/Tools/blocFissure/gmu/shapeSurFissure.py
new file mode 100644 (file)
index 0000000..10b125f
--- /dev/null
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+
+import logging
+from geomsmesh import geompy
+
+# -----------------------------------------------------------------------------
+# --- construction d'une shape de dectection des éléments à modifier suite à la la duplication des noeuds de la face fissure (d'un coté de la face)
+
+def shapeSurFissure(facesFissure):
+  """
+  TODO: a completer, Normaliser les vecteurs et ponderer par les surfaces...
+  """
+  logging.info('start')
+  normal = None
+  subIds = geompy.SubShapeAllIDs(facesFissure, geompy.ShapeType["FACE"])
+  if len(subIds) > 1:
+    logging.debug("plusieurs faces de fissure")
+    faces = geompy.ExtractShapes(facesFissure, geompy.ShapeType["FACE"], False)
+    extrusions = []
+    for n,face in enumerate(faces):
+      vertex = geompy.MakeVertexOnSurface(face, 0.5, 0.5)
+      normal = geompy.GetNormal(face, vertex)
+      extrusion = geompy.MakePrismVecH(face, normal, 100)
+      extrusions.append(extrusion)
+    extrusionFaceFissure = geompy.MakeCompound(extrusions)
+  else:
+    logging.debug("une seule face de fissure")
+    face = facesFissure
+    vertex = geompy.MakeVertexOnSurface(face, 0.5, 0.5)
+    normal = geompy.GetNormal(face, vertex)
+    extrusionFaceFissure = geompy.MakePrismVecH(facesFissure, normal, 100)
+    
+  geompy.addToStudy(extrusionFaceFissure, "extrusionFaceFissure")
+  return extrusionFaceFissure, normal
+