Salome HOME
Issue #1648: Dump Python in the High Level Parameterized Geometry API
[modules/shaper.git] / src / ConnectorPlugin / ConnectorPlugin_ExportFeature.py
index 46cc4daa0d621b83974e605681bf991341d9b6c0..a67c736339ba18e1d8b8fddc18e41aebb8c972a8 100644 (file)
@@ -27,6 +27,10 @@ class ExportFeature(ModelAPI.ModelAPI_Feature):
     ## The constructor.
     def __init__(self):
         ModelAPI.ModelAPI_Feature.__init__(self)
+        ## Shape that will be exported (the compound if there are several exported bodies)
+        self.shape = None
+        ## BRep representation of the exported shape (a stream that will be sent to GEOM and converted to GEOM object)
+        self.brep = None
 
     @staticmethod
     ## Export kind. Static.
@@ -51,7 +55,7 @@ class ExportFeature(ModelAPI.ModelAPI_Feature):
         kResultBodyType = "Bodies"
         aPartSize = self.Part.size(kResultBodyType)
         if aPartSize == 0:
-            EventsAPI.Events_Error_send("No results in the active document")
+            EventsAPI.Events_InfoMessage("ExportFeature","No results in the active document").send()
             return
 
         anObjList = [self.Part.object(kResultBodyType, idx) for idx in xrange(aPartSize)]
@@ -112,7 +116,7 @@ class ExportFeature(ModelAPI.ModelAPI_Feature):
             return "EDGE"
         elif shape.isFace():
             return "FACE"
-        
+
         return "SOLID"
 
     ## Creates a group by given list of selected objects and the name
@@ -126,6 +130,11 @@ class ExportFeature(ModelAPI.ModelAPI_Feature):
         groupType = ""
         for aSelIndex in range(0, aSelectionNum):
             aSelection = theSelectionList.value(aSelIndex)
+            # issue 1326: bodies that are already concealed did not exported, so groups should not be invalid
+            aContext =  ModelAPI.modelAPI_Result(aSelection.context())
+            if aContext is None or aContext.isConcealed() or aContext.isDisabled():
+                continue
+
             anID = GeomAlgoAPI.GeomAlgoAPI_CompoundBuilder.id(self.shape, aSelection.value())
             if anID == 0:
                 #it may be a compound of objects if movement of the group to the end
@@ -141,10 +150,10 @@ class ExportFeature(ModelAPI.ModelAPI_Feature):
                 Ids.append(anID)
                 groupType = self.shapeType(aSelection.value())
 
-
-        aGroup = self.geompy.CreateGroup(self.brep, self.geompy.ShapeType[groupType])
-        self.geompy.UnionIDs(aGroup,Ids)
-        self.geompy.addToStudyInFather(self.brep, aGroup, theGroupName)
+        if len(Ids) <> 0:
+          aGroup = self.geompy.CreateGroup(self.brep, self.geompy.ShapeType[groupType])
+          self.geompy.UnionIDs(aGroup,Ids)
+          self.geompy.addToStudyInFather(self.brep, aGroup, theGroupName)
 
     ## Exports all shapes and groups into the GEOM module.
     def execute(self):
@@ -154,6 +163,7 @@ class ExportFeature(ModelAPI.ModelAPI_Feature):
         ## List of objects created in the old geom for later use
         self.geomObjects = []
         ## geomBuilder tool
+        salome.salome_init(0,1)
         self.geompy = geomBuilder.New(salome.myStudy)
 
         # Export bodies and groups