]> SALOME platform Git repositories - modules/shaper.git/blobdiff - src/ConnectorPlugin/ConnectorPlugin_ExportFeature.py
Salome HOME
Copyright update 2022
[modules/shaper.git] / src / ConnectorPlugin / ConnectorPlugin_ExportFeature.py
index 338161d4ae6bd77ee70a33858edd0be600eeeb0e..30e01b86ef0b9315fee681b8f79f560fa2da68bd 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2019  CEA/DEN, EDF R&D
+# Copyright (C) 2014-2022  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -22,6 +22,7 @@
 
 import ModelAPI
 import ExchangeAPI
+import EventsAPI
 
 import salome
 from salome.geom import geomBuilder
@@ -30,15 +31,6 @@ from salome.shaper import model
 
 import os
 
-def getTmpFileName(ext):
-    import tempfile
-    tempdir = tempfile.gettempdir()
-    tmp_file = tempfile.NamedTemporaryFile(suffix=".%s"%ext, prefix='shaper_', dir=tempdir, delete=False)
-    tmp_filename = tmp_file.name
-    if os.name == "nt":
-        tmp_filename.replace("\\", "/")
-    return tmp_filename
-
 ## @ingroup Plugins
 #  Feature to export all shapes and groups into the GEOM module
 class ExportFeature(ModelAPI.ModelAPI_Feature):
@@ -67,37 +59,55 @@ class ExportFeature(ModelAPI.ModelAPI_Feature):
 
     ## Export the results, groups and fields via XAO
     def exportViaXAO(self):
-        # iterate all results of Part, export one by one due to issue 2882
-        for aResIndex in range(self.Part.size(model.ModelAPI_ResultBody_group())):
-          anObject = self.Part.object(model.ModelAPI_ResultBody_group(), aResIndex)
-          aResult = model.objectToResult(anObject)
-          if not aResult is None:
-            tmpXAOFile = getTmpFileName("xao")
-            self.tmpXAOFile = tmpXAOFile
-            #print "Export to %s"%tmpXAOFile
-            exportXAO = ExchangeAPI.exportToXAO(self.Part, tmpXAOFile, model.selection(aResult), "automatic_shaper_export_to_XAO")
-            if not os.path.exists(tmpXAOFile) or os.stat(tmpXAOFile).st_size == 0:
-                exportXAO.feature().setError("Error in exportToXAO. No XAO file has been created.")
-                return
-            imported, shape, subShapes, groups, fields = self.geompy.ImportXAO(tmpXAOFile)
-            self.geompy.addToStudy( shape, shape.GetName() )
-            # add sub-shapes and groups to the object browser
-            for obj in subShapes + groups:
-                name = obj.GetName()
-                self.geompy.addToStudyInFather(shape, obj, name)
-            # add fields to the object browser
-            for field in fields:
-                name = field.GetName()
-                self.geompy.addToStudyInFather(shape, field, name)
-                # add steps to the object browser
-                steps = field.getSteps()
-                for i_step in steps:
-                    step = field.getStep(i_step)
-                    i_stamp = step.GetStamp()
-                    step_name = "Step %i %i"%(i_step, i_stamp)
-                    self.geompy.addToStudyInFather( field, step, step_name )
-            # Remove the temporary file
-            os.remove(tmpXAOFile)
+        # if part-set is active, iterate also parts
+        for isPart in (True, False):
+          aResultType = model.ModelAPI_ResultBody_group()
+          if isPart:
+            aResultType = model.ModelAPI_ResultPart_group()
+          # iterate all results of Part, export one by one due to issue 2882
+          for aResIndex in range(self.Part.size(aResultType)):
+            anObject = self.Part.object(aResultType, aResIndex)
+            aResult = model.objectToResult(anObject)
+            # do not export picture
+            if aResult.hasTexture() is True:
+              continue
+            if not aResult is None:
+              if (not aResult.shape() or aResult.shape().isNull()) and isPart:
+                aPart = model.modelAPI_ResultPart(aResult)
+                aPartDoc = aPart.partDoc()
+                if not aPartDoc or not aPartDoc.isOpened():
+                  EventsAPI.Events_InfoMessage("ExportToGEOM", "For export to GEOM some Part is not activated", self).send()
+                  return
+
+              if  not aResult.shape() or aResult.shape().isNull():
+                continue
+              tmpXAOFile = model.getTmpFileName("shaper_", ".xao")
+              self.tmpXAOFile = tmpXAOFile
+              #print "Export to %s"%tmpXAOFile
+              exportXAO = ExchangeAPI.exportToXAO(self.Part, tmpXAOFile, model.selection(aResult), "automatic_shaper_export_to_XAO")
+              if not os.path.exists(tmpXAOFile) or os.stat(tmpXAOFile).st_size == 0:
+                  exportXAO.feature().setError("Error in exportToXAO. No XAO file has been created.")
+                  return
+              imported, shape, subShapes, groups, fields = self.geompy.ImportXAO(tmpXAOFile)
+              self.geompy.addToStudy( shape, shape.GetName() )
+              # add sub-shapes and groups to the object browser
+              for obj in subShapes + groups:
+                  name = obj.GetName()
+                  self.geompy.addToStudyInFather(shape, obj, name)
+              # add fields to the object browser
+              for field in fields:
+                  name = field.GetName()
+                  self.geompy.addToStudyInFather(shape, field, name)
+                  # add steps to the object browser
+                  steps = field.getSteps()
+                  for i_step in steps:
+                      step = field.getStep(i_step)
+                      i_stamp = step.GetStamp()
+                      step_name = "Step %i %i"%(i_step, i_stamp)
+                      self.geompy.addToStudyInFather( field, step, step_name )
+              # Remove the temporary file
+              os.remove(tmpXAOFile)
+            pass
           pass
         pass