-"""
-Copyright (C) 2014-20xx CEA/DEN, EDF R&D
-"""
+## Copyright (C) 2014-2017 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
+## License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+##
+## This library is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+## Lesser General Public License for more details.
+##
+## You should have received a copy of the GNU Lesser General Public
+## License along with this library; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+## See http:##www.salome-platform.org/ or
+## email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+##
+
+## @package Plugins
+# ExportFeature class definition
import ModelAPI
+import ExchangeAPI
+
import salome
from salome.geom import geomBuilder
+from salome.shaper import model
-class ExportFeature(ModelAPI.ModelAPI_Feature):
+import os
- "Feature to create a box by drawing a sketch and extruding it"
+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
+ return tmp_filename
+## @ingroup Plugins
+# Feature to export all shapes and groups into the GEOM module
+class ExportFeature(ModelAPI.ModelAPI_Feature):
+
+ ## The constructor.
def __init__(self):
ModelAPI.ModelAPI_Feature.__init__(self)
+ pass
@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 immediately.
def isAction(self):
return True
+ ## This feature has no attributes, as it is action.
def initAttributes(self):
- # This feature has no attributes, but should perfore some actions on initialization
- aSession = ModelAPI.ModelAPI_Session.get()
- aPart = aSession.activeDocument()
- # Get all bodies
- kResultBodyType = "ResultBody"
- aPartSize = aPart.size(kResultBodyType)
- if aPartSize == 0:
- print "No results in the active document"
- return
+ pass
- aResultList = [aPart.object(kResultBodyType, idx) for idx in xrange(aPartSize)]
- for idx, aResult in enumerate(aResultList):
- aBodyResult = modelAPI_ResultBody(aResult)
- if not aBodyResult:
- continue
- aShape = aBodyResult.shape()
- aDump = aShape.getShapeStream()
- # Load shape to SALOME Geom
- geompy = geomBuilder.New(salome.myStudy)
- aBrep = geompy.RestoreShape(aDump)
- geompy.addToStudy(aBrep, "NewGeomShape_{0}".format(idx))
+ ## Export the results, groups and fields via XAO
+ def exportViaXAO(self):
+ tmpXAOFile = getTmpFileName("xao")
+ self.tmpXAOFile = tmpXAOFile
+ #print "Export to %s"%tmpXAOFile
+ exportXAO = ExchangeAPI.exportToXAO(self.Part, tmpXAOFile, "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
+ ## Exports all shapes and groups into the GEOM module.
def execute(self):
- # Nothing to execute: all logic would be in the initAttributes
- pass
+ 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
+ salome.salome_init(0,1)
+ self.geompy = geomBuilder.New(salome.myStudy)
+
+ self.exportViaXAO()
-# TEST
-"""
-if __name__=='__main__':
- session = ModelAPI.ModelAPI_Session.get()
- part = session.activeDocument()
- session.startOperation()
- feature = part.addFeature('Box')
- feature.real('box_width').setValue(10)
- feature.real('box_length').setValue(10)
- feature.real('box_height').setValue(10)
- feature.execute()
- session.finishOperation()
-"""
+ pass