1 ## Copyright (C) 2014-2017 CEA/DEN, EDF R&D
3 ## This library is free software; you can redistribute it and/or
4 ## modify it under the terms of the GNU Lesser General Public
5 ## License as published by the Free Software Foundation; either
6 ## version 2.1 of the License, or (at your option) any later version.
8 ## This library is distributed in the hope that it will be useful,
9 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
10 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 ## Lesser General Public License for more details.
13 ## You should have received a copy of the GNU Lesser General Public
14 ## License along with this library; if not, write to the Free Software
15 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 ## See http:##www.salome-platform.org/ or
18 ## email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
21 """Package for dumping purposes.
34 instance.__call__ = lambda: instance
38 ## @ingroup CPPHighAPI
39 # Collect information about features that may be dumped and stores the model as a Python script
41 class DumpAssistant(ModelHighAPI.ModelHighAPI_Dumper):
45 ModelHighAPI.ModelHighAPI_Dumper.__init__(self)
46 ModelHighAPI.ModelHighAPI_Dumper.setInstance(self)
47 self.collectFeatures()
49 ## Collect feature wrappers, which allow dumping (have method dump)
50 def collectFeatures(self):
52 self.myWrapperNames = {}
53 for aModule in sys.modules:
54 for aName, anObj in inspect.getmembers(sys.modules[aModule], inspect.isclass):
55 if issubclass(anObj, ModelHighAPI.ModelHighAPI_Interface) and hasattr(anObj, "ID") and anObj.dump != ModelHighAPI.ModelHighAPI_Interface.dump:
56 self.myFeatures[anObj.ID()] = anObj
57 self.myWrapperNames[anObj.ID()] = aName
59 ## Create wrapper for a given feature and dump it
60 def dumpFeature(self, theFeature, theForce):
61 aFeatureKind = theFeature.getKind()
62 if aFeatureKind in self.myFeatures:
63 # Dump only feature created by user (in history).
64 # For all other features, just keep their name.
65 if theForce or theFeature.isInHistory():
66 self.myFeatures[aFeatureKind](theFeature).dump(self)
71 # Probably the feature is a constraint, try to dump it with SketchAPI_Constraint.
72 # In case of theFeature is not a constraint, it will not be dumped.
73 self.myFeatures[SketchAPI.SketchAPI_Constraint.ID()](theFeature).dump(self)
75 ## Dump all parameters
76 def dumpParameter(self, theFeature):
77 aFeatureKind = theFeature.getKind()
78 if aFeatureKind == "Parameter" and aFeatureKind in self.myFeatures:
79 self.myFeatures[aFeatureKind](theFeature).dump(self)
81 ## Return getter for specified attribute
82 def attributeGetter(self, theFeature, theAttrName):
83 aFeatureKind = theFeature.getKind()
84 if aFeatureKind in self.myFeatures:
85 return self.myFeatures[aFeatureKind](theFeature).attributeGetter(theAttrName)
88 ## Return name of wrapper feature
89 def featureWrapper(self, theFeature):
90 aFeatureKind = theFeature.getKind()
91 if aFeatureKind in self.myWrapperNames:
92 return self.myWrapperNames[aFeatureKind]
96 dumper = DumpAssistant