X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FConnectorPlugin%2FConnectorPlugin_ExportFeature.py;h=925b78c723fafbe5857941345f6b0fdc50a9014c;hb=e60b61962b051180dab78bb91977d58d59ca7614;hp=b5d42602bdee9680dcb9dabfbe213faf69c10096;hpb=995208aaa5cd0431f028b5f5e7829e60ff1ca2c1;p=modules%2Fshaper.git diff --git a/src/ConnectorPlugin/ConnectorPlugin_ExportFeature.py b/src/ConnectorPlugin/ConnectorPlugin_ExportFeature.py index b5d42602b..925b78c72 100644 --- a/src/ConnectorPlugin/ConnectorPlugin_ExportFeature.py +++ b/src/ConnectorPlugin/ConnectorPlugin_ExportFeature.py @@ -1,28 +1,28 @@ -## 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 -## +# Copyright (C) 2014-2019 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 EventsAPI import salome from salome.geom import geomBuilder @@ -36,6 +36,8 @@ def getTmpFileName(ext): 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 @@ -56,7 +58,7 @@ class ExportFeature(ModelAPI.ModelAPI_Feature): def getKind(self): return ExportFeature.ID() - ## This feature is action: has no property pannel and executes immediately. + ## This feature is action: has no property panel and executes immediately. def isAction(self): return True @@ -66,32 +68,53 @@ class ExportFeature(ModelAPI.ModelAPI_Feature): ## 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) + # 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) + 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 = 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) + pass + pass pass ## Exports all shapes and groups into the GEOM module. @@ -102,8 +125,8 @@ 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) + salome.salome_init(1) + self.geompy = geomBuilder.New() self.exportViaXAO()