Salome HOME
Merge branch 'master' into Dev_1.1.0
[modules/shaper.git] / src / ConnectorPlugin / ConnectorPlugin_ExportFeature.py
index dc4f87de38720b2095d1bcb49b26a52d3d026d1d..9f2768e4c68f875ee6a74bfc80fa07615238529e 100644 (file)
@@ -1,6 +1,6 @@
-"""
-Copyright (C) 2014-20xx CEA/DEN, EDF R&D
-"""
+## @package Plugins
+#  ExportFeature class definition
+#  Copyright (C) 2014-20xx CEA/DEN, EDF R&D
 
 import EventsAPI
 import ModelAPI
@@ -8,35 +8,48 @@ 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
 class ExportFeature(ModelAPI.ModelAPI_Feature):
 
-    "Feature to create a box by drawing a sketch and extruding it"
-
+    ## The constructor.
     def __init__(self):
         ModelAPI.ModelAPI_Feature.__init__(self)
 
     @staticmethod
+    ## Export kind. Static.
     def ID():
         return "ExportToGEOM"
 
+    ## Returns the kind of a feature.
     def getKind(self):
         return ExportFeature.ID()
 
-    # This feature is action: has no property pannel and executes immideately
+    ## This feature is action: has no property pannel and executes immideately.
     def isAction(self):
         return True
 
-    # The action is not placed into the histiry anyway
+    # The action is not placed into the history anyway
     #def isInHistory(self):
     #    return False
 
+    ## This feature has no attributes, as it is action.
     def initAttributes(self):
-      # This feature has no attributes, it is action
       pass
-        
+
+    ## Exports all bodies
     def exportBodies(self):
-        # Get all bodies
+        global ShapeIndex
         kResultBodyType = "Bodies"
         aPartSize = self.Part.size(kResultBodyType)
         if aPartSize == 0:
@@ -53,9 +66,17 @@ 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
     def exportGroups(self):
         # iterate all features to find groups
         aFeaturesNum = self.Part.size("Features")
@@ -68,7 +89,10 @@ class ExportFeature(ModelAPI.ModelAPI_Feature):
                 groupIndex = groupIndex + 1
                 self.createGroupFromList(aSelectionList, "NewGeomGroup_{0}".format(groupIndex))
                      
-    def createGroupFromList(self, theSelectionList, theGroupName):     
+    ## Creates a group by given list of selected objects and the name
+    #  @param theSelectionList: list of selected objects
+    #  @param theGroupName: name of the group to create
+    def createGroupFromList(self, theSelectionList, theGroupName):
         # iterate on all selected entities of the group
         # and get the corresponding ID
         aSelectionNum = theSelectionList.size()
@@ -95,13 +119,17 @@ class ExportFeature(ModelAPI.ModelAPI_Feature):
                 self.geompy.UnionIDs(aGroup,Ids)
                 self.geompy.addToStudyInFather(obj[1], aGroup, theGroupName)
           
+    ## Exports all shapes and groups into the GEOM module.
     def execute(self):
         aSession = ModelAPI.ModelAPI_Session.get()
+        ## Get active document
         self.Part = aSession.activeDocument()
+        ## List of objects created in the old geom for later use
         self.geomObjects = []
+        ## geomBuilder tool
         self.geompy = geomBuilder.New(salome.myStudy)
        
         # Export bodies and groups
         self.exportBodies()
-        #self.exportGroups()
+        self.exportGroups()
         pass