+## 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
-# Copyright (C) 2014-20xx CEA/DEN, EDF R&D
import EventsAPI
import ModelAPI
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())
## 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
#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
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):