X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FConnectorPlugin%2FConnectorPlugin_ExportFeature.py;h=1fccfcef6009f6f86177797a7d96017fba0905c7;hb=9d8267a424a809d0f96593b13f8472666553ce2e;hp=953b31c374cd6fc880c5a5b3e10582d5f77a5ca8;hpb=b1eedc1c758fe498ba735720e355210dbb811ffe;p=modules%2Fshaper.git diff --git a/src/ConnectorPlugin/ConnectorPlugin_ExportFeature.py b/src/ConnectorPlugin/ConnectorPlugin_ExportFeature.py index 953b31c37..1fccfcef6 100644 --- a/src/ConnectorPlugin/ConnectorPlugin_ExportFeature.py +++ b/src/ConnectorPlugin/ConnectorPlugin_ExportFeature.py @@ -1,67 +1,112 @@ -""" -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 +## + +## @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 + 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): + + ## 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(1) + self.geompy = geomBuilder.New() + + 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