X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FConnectorPlugin%2FConnectorPlugin_ExportFeature.py;h=aaaab43c631fe3001dfbc0d59cb897eb52e910a0;hb=4df4bd61da1ea5d357671c819a8ced6ec9ba77ac;hp=5c9ec2bb4863d17f2c2111f1b6193c7ea9dd34e2;hpb=d7706b6d4cb0e4eae0f7b87184a7c9a09616eea0;p=modules%2Fshaper.git diff --git a/src/ConnectorPlugin/ConnectorPlugin_ExportFeature.py b/src/ConnectorPlugin/ConnectorPlugin_ExportFeature.py index 5c9ec2bb4..aaaab43c6 100644 --- a/src/ConnectorPlugin/ConnectorPlugin_ExportFeature.py +++ b/src/ConnectorPlugin/ConnectorPlugin_ExportFeature.py @@ -1,6 +1,25 @@ +## 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 -# Copyright (C) 2014-20xx CEA/DEN, EDF R&D import EventsAPI import ModelAPI @@ -132,7 +151,8 @@ class ExportFeature(ModelAPI.ModelAPI_Feature): 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(): + # chcking of concealment removed because of #1799, remark #13 "aContext.isConcealed()" + if aContext is None or aContext.isDisabled(): continue anID = GeomAlgoAPI.GeomAlgoAPI_CompoundBuilder.id(self.shape, aSelection.value()) @@ -173,16 +193,30 @@ class ExportFeature(ModelAPI.ModelAPI_Feature): ## Returns a type of the shape type in the old GEOM representation def selectionDim(self, theSelectionType): - if theSelectionType == "vertex": + selType=theSelectionType.lower() # more or less independed approach + if selType== "vertex": return 0 - if theSelectionType == "edge": + if selType== "edge": return 1 - if theSelectionType == "face": + if selType== "face": return 2 - if theSelectionType == "solid": + if selType== "solid": return 3 return -1 + ## Returns a type of the shape type in the GeomAPI_Shape representation + def geomAPISelectionDim(self, theSelectionType): + selType=theSelectionType.lower() # more or less independed approach + if selType== "vertex": + return GeomAPI.GeomAPI_Shape.VERTEX + if selType== "edge": + return GeomAPI.GeomAPI_Shape.EDGE + if selType== "face": + return GeomAPI.GeomAPI_Shape.FACE + if selType== "solid": + return GeomAPI.GeomAPI_Shape.SOLID + return GeomAPI.GeomAPI_Shape.SHAPE + ## Creates a field by the field feature and the name # @param theField: the field feature # @param theFieldName: name of the field to create @@ -205,14 +239,36 @@ class ExportFeature(ModelAPI.ModelAPI_Feature): #self.geompy.UnionIDs(theField,Ids) self.geompy.addToStudyInFather(self.brep, aResField, theFieldName) + # set default values to all not filled sub-shapes (fields in GEOM support only full set of subs) + Ids={} + anExp = GeomAPI.GeomAPI_ShapeExplorer(self.shape, self.geomAPISelectionDim(aSelection.selectionType())) + while anExp.more(): + anID = GeomAlgoAPI.GeomAlgoAPI_CompoundBuilder.id(self.shape, anExp.current()) + if anID != 0: + Ids[anID]=anExp.current() + anExp.next() + + SelectedIds={} + for aSelIndex in range(aSelection.size()): + selShape = aSelection.value(aSelIndex).value() + # searching for this shape in Ids + for a in Ids.items(): + if (a[1].isSame(selShape)): + SelectedIds[a[0]] = aSelIndex + + # values here are in the same order as in field + listOfValues = Ids.items() + listOfValues.sort() # set steps aStepsNum = aTables.tables() for aStepIndex in range(0, aStepsNum): aStamp = theField.intArray("stamps").value(aStepIndex) aValues = [] - aRows = aTables.rows() - aCols = aTables.columns() - for aRow in range(1, aRows): # no defaults + for aValId in listOfValues: + aRow = 0 # default value if not from selection + if SelectedIds.has_key(aValId[0]): # take the value from the table + aRow = SelectedIds[aValId[0]] + 1 # plus one to avoid default string + aCols = aTables.columns() for aCol in range(0, aCols): aVal = aTables.valueStr(aRow, aCol, aStepIndex) if aTables.type() == 0: # bool @@ -225,7 +281,9 @@ class ExportFeature(ModelAPI.ModelAPI_Feature): elif aTables.type() == 2: # double aVal = float(aVal) aValues.append(aVal) - aResField.addStep(aStepIndex + 1, aStamp, aValues) + aStep = aResField.addStep(aStepIndex + 1, aStamp, aValues) + if aStep: + self.geompy.addToStudyInFather( aResField, aStep, aStep.GetName() ) ## Exports all shapes and groups into the GEOM module. def execute(self):