Salome HOME
Movement of examples to CVS EXAMPLES SAMPLES_SRC.
[modules/smesh.git] / src / SMESH_SWIG / smesh.py
index 36f34541af5506808c9b2f6e4673f0574bfd31e5..ea7c6d1312ad3c4cccdbd31ffa33b2ca28efd3b1 100644 (file)
@@ -46,11 +46,16 @@ smesh.SetCurrentStudy(salome.myStudy)
 # Private functions
 # -----------------
 
+NO_NAME = "NoName"
+
 def GetName(obj):
     ior  = salome.orb.object_to_string(obj)
     sobj = salome.myStudy.FindObjectIOR(ior)
-    attr = sobj.FindAttribute("AttributeName")[1]
-    return attr.Value()
+    if sobj is None:
+        return NO_NAME
+    else:
+        attr = sobj.FindAttribute("AttributeName")[1]
+        return attr.Value()
 
 def SetName(obj, name):
     ior  = salome.orb.object_to_string(obj)
@@ -91,8 +96,10 @@ class Mesh_Algorithm:
             name = GetName(piece)
         else:
             self.geom = geom
-            name = geompy.SubShapeName(geom, piece)
-            geompy.addToStudyInFather(piece, geom, name)
+            name = GetName(geom)
+            if name==NO_NAME:
+                name = geompy.SubShapeName(geom, piece)
+                geompy.addToStudyInFather(piece, geom, name)
             self.subm = mesh.mesh.GetSubMesh(geom, hypo)
 
         algo = smesh.CreateHypothesis(hypo, so)
@@ -149,6 +156,7 @@ class Mesh_Segment(Mesh_Algorithm):
             hyp = self.Hypothesis("NumberOfSegments", [n])
         else:
             hyp = self.Hypothesis("NumberOfSegments", [n,s])
+            hyp.SetDistrType( 1 )
             hyp.SetScaleFactor(s)
         hyp.SetNumberOfSegments(n)
         return hyp
@@ -400,6 +408,9 @@ class Mesh:
         """
         b = smesh.Compute(self.mesh, self.geom)
         if salome.sg.hasDesktop():
+            smeshgui = salome.ImportComponentGUI("SMESH")
+            smeshgui.Init(salome.myStudyId)
+            smeshgui.SetMeshIcon( salome.ObjectToID( self.mesh ), b )
             salome.sg.updateObjBrowser(1)
         return b
 
@@ -408,21 +419,40 @@ class Mesh:
          Create a mesh group based on geometric object \a grp
          and give a \a name, if this parameter is not defined
          the name is the same as the geometric group name
-         \param grp  is a geometric group
+         \param grp  is a geometric group, a vertex, an edge, a face or a solid
          \param name is the name of the mesh group
         """
         if name == "":
             name = grp.GetName()
-        tgeo = geompy.GetType(grp)
-        if tgeo == geompy.ShapeType["VERTEX"]:
+
+        type = []
+        tgeo = str(grp.GetShapeType())
+        if tgeo == "VERTEX":
             type = SMESH.NODE
-        elif tgeo == geompy.ShapeType["EDGE"]:
+        elif tgeo == "EDGE":
             type = SMESH.EDGE
-        elif tgeo == geompy.ShapeType["FACE"]:
+        elif tgeo == "FACE":
             type = SMESH.FACE
-        elif tgeo == geompy.ShapeType["SOLID"]:
+        elif tgeo == "SOLID":
             type = SMESH.VOLUME
-        return self.mesh.CreateGroupFromGEOM(type, name, grp)
+        elif tgeo == "SHELL":
+            type = SMESH.VOLUME
+        elif tgeo == "COMPOUND":
+            tgeo = geompy.GetType(grp)
+            if tgeo == geompy.ShapeType["VERTEX"]:
+                type = SMESH.NODE
+            elif tgeo == geompy.ShapeType["EDGE"]:
+                type = SMESH.EDGE
+            elif tgeo == geompy.ShapeType["FACE"]:
+                type = SMESH.FACE
+            elif tgeo == geompy.ShapeType["SOLID"]:
+                type = SMESH.VOLUME
+
+        if type == []:
+            print "Mesh.Group: bad first argument: expected a group, a vertex, an edge, a face or a solid"
+            return 0
+        else:
+            return self.mesh.CreateGroupFromGEOM(type, name, grp)
 
     def ExportToMED(self, f, version, opt=0):
         """