Salome HOME
Fix for the issue #1100
[modules/shaper.git] / src / ConnectorPlugin / ConnectorPlugin_ExportFeature.py
index e69b259fe73e248ffcc950f15fd775f2cc918af8..30844b6744a29fb0c941fb4d783fe027fd5d6bb5 100644 (file)
@@ -8,6 +8,15 @@ import ModelAPI
 import salome
 from salome.geom import geomBuilder
 
+def getObjectIndex(theName):
+    aStudy = salome.myStudy
+    aId = 0
+    aObj = aStudy.FindObjectByName(theName, "GEOM")
+    while len(aObj) != 0:
+        aId = aId + 1
+        aName = theName + '_' + str(aId)
+        aObj = aStudy.FindObjectByName(aName, "GEOM")
+    return aId
 
 ## @ingroup Plugins
 #  Feature to export all shapes and groups into the GEOM module
@@ -40,6 +49,7 @@ class ExportFeature(ModelAPI.ModelAPI_Feature):
 
     ## Exports all bodies
     def exportBodies(self):
+        global ShapeIndex
         kResultBodyType = "Bodies"
         aPartSize = self.Part.size(kResultBodyType)
         if aPartSize == 0:
@@ -56,7 +66,14 @@ class ExportFeature(ModelAPI.ModelAPI_Feature):
             aDump = aShape.getShapeStream()
             # Load shape to SALOME Geom
             aBrep = self.geompy.RestoreShape(aDump)
-            self.geompy.addToStudy(aBrep, "NewGeomShape_{0}".format(idx + 1))
+            aName = aBodyResult.data().name()
+            
+            # Make unique name
+            aId = getObjectIndex(aName)
+            if aId != 0:
+                aName = aName + '_' + str(aId)
+            
+            self.geompy.addToStudy(aBrep, aName)
             self.geomObjects.append([aShape, aBrep])
 
     ## Exports all groups
@@ -69,8 +86,11 @@ class ExportFeature(ModelAPI.ModelAPI_Feature):
             aSelectionList = aFeature.data().selectionList("group_list")
             # if a group has been found
             if aSelectionList:
+                aFeature = ModelAPI.objectToFeature(aFeature)
+                if aFeature.firstResult() is not None:
+                  aName = aFeature.firstResult().data().name()
                 groupIndex = groupIndex + 1
-                self.createGroupFromList(aSelectionList, "NewGeomGroup_{0}".format(groupIndex))
+                self.createGroupFromList(aSelectionList, aName)
                      
     ## Creates a group by given list of selected objects and the name
     #  @param theSelectionList: list of selected objects
@@ -94,13 +114,15 @@ class ExportFeature(ModelAPI.ModelAPI_Feature):
             else:
                 groupType = "SOLID"
 
-        # iterate on exported objects and check if the current
-        # group refers to this object
-        for obj in self.geomObjects: 
-            if aSelectionContext.shape().isEqual(obj[0]):
-                aGroup = self.geompy.CreateGroup(obj[1], self.geompy.ShapeType[groupType])
-                self.geompy.UnionIDs(aGroup,Ids)
-                self.geompy.addToStudyInFather(obj[1], aGroup, theGroupName)
+        aContextBody = ModelAPI.modelAPI_ResultBody(aSelectionContext)
+        if aContextBody is not None:
+          # iterate on exported objects and check if the current
+          # group refers to this object
+          for obj in self.geomObjects: 
+              if aContextBody.isLatestEqual(obj[0]):
+                  aGroup = self.geompy.CreateGroup(obj[1], self.geompy.ShapeType[groupType])
+                  self.geompy.UnionIDs(aGroup,Ids)
+                  self.geompy.addToStudyInFather(obj[1], aGroup, theGroupName)
           
     ## Exports all shapes and groups into the GEOM module.
     def execute(self):