Salome HOME
45a1aed6c23eaab732c6d9f54742f90a43a23a89
[modules/shaper.git] / src / ConnectorPlugin / ConnectorPlugin_PublishToStudyFeature.py
1 # Copyright (C) 2014-2019  CEA/DEN, EDF R&D
2 #
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.
7 #
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.
12 #
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
16 #
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 #
19
20 ## @package Plugins
21 #  ExportFeature class definition
22
23 import ModelAPI
24 import ExchangeAPI
25 import EventsAPI
26
27 import salome
28 from salome.shaper import model
29
30 import os
31 import salome
32
33
34 ## @ingroup Plugins
35 #  Feature to export all shapes and groups into the GEOM module
36 class PublishToStudyFeature(ModelAPI.ModelAPI_Feature):
37
38     ## The constructor.
39     def __init__(self):
40         ModelAPI.ModelAPI_Feature.__init__(self)
41         pass
42
43     @staticmethod
44     ## Export kind. Static.
45     def ID():
46         return "PublishToStudy"
47
48     ## Returns the kind of a feature.
49     def getKind(self):
50         return PublishToStudyFeature.ID()
51
52     ## This feature is action: has no property panel and executes immediately.
53     def isAction(self):
54         return True
55
56     ## This feature has no attributes, as it is action.
57     def initAttributes(self):
58         pass
59
60     ## Exports all shapes and groups into the GEOM module.
61     def execute(self):
62         print("### Execution of PublishToStudy")
63
64         # find a shaper-study component
65         salome.salome_init(1)
66         import SHAPERSTUDY_utils
67         SHAPERSTUDY_utils.findOrCreateComponent()
68         anEngine = SHAPERSTUDY_utils.getEngine()
69
70         # iterate all parts and all results to publish them in SHAPER_STUDY
71         aSession = ModelAPI.ModelAPI_Session.get()
72         aPartSet = aSession.moduleDocument()
73         for aPartId in range(aPartSet.size(model.ModelAPI_ResultPart_group())):
74           aPartObject = aPartSet.object(model.ModelAPI_ResultPart_group(), aPartId)
75           aPartRes = ModelAPI.modelAPI_ResultPart(ModelAPI.modelAPI_Result(aPartObject))
76           aPartDoc = aPartRes.partDoc()
77           if aPartDoc is None and aPartObject is not None:
78             EventsAPI.Events_InfoMessage("PublishToStudy", "For publish to SHAPER-STUDY some Part is not activated", self).send()
79             break
80           aPartFeatureId = aPartSet.feature(aPartRes).data().featureId()
81           for aResId in range(aPartDoc.size(model.ModelAPI_ResultBody_group())):
82             aResObject = aPartDoc.object(model.ModelAPI_ResultBody_group(), aResId)
83             aRes = model.objectToResult(aResObject)
84             print("Found a result to publish ", aRes.data().name())
85             aResFeatureId = aPartDoc.feature(aRes).data().featureId()
86             aSSEntry = str(aPartFeatureId) + ":" + str(aResFeatureId)
87             aSShape = anEngine.CreateShape(aSSEntry)
88             aSShape.SetShapeByStream(aRes.shape().getShapeStream())
89             anEngine.AddInStudy(aSShape, aRes.data().name(), None)