Salome HOME
Update copyright information
[modules/visu.git] / src / VISU_SWIG / visu_apply_properties.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
3 #
4 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
5 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 #
7 # This library is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU Lesser General Public
9 # License as published by the Free Software Foundation; either
10 # version 2.1 of the License.
11 #
12 # This library is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 # Lesser General Public License for more details.
16 #
17 # You should have received a copy of the GNU Lesser General Public
18 # License along with this library; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
20 #
21 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 #
23
24 #  VISU VISU_SWIG : binding of C++ implementation and Python
25 #  File   : visu_apply_properties.py
26 #  Module : VISU
27 #
28 import os
29 import time
30 import math
31 import VISU
32 import SALOMEDS
33 import salome
34 from visu_gui import *
35
36 aDelay = 0
37
38 myVisu.SetCurrentStudy(salome.myStudy)
39
40 myViewManager = myVisu.GetViewManager();
41
42 myView = myViewManager.Create3DView();
43 myView.SetTitle("The viewer for Animation")
44 print "myViewManager.Create3DView()"
45 time.sleep(aDelay)
46
47 medFile = "TimeStamps.med"
48 myFieldName = "temperature"
49
50 medFile = os.getenv('DATA_DIR') + '/MedFiles/' + medFile
51 myResult = myVisu.ImportFile(medFile)
52
53 anAnim = myVisu.CreateAnimation(myView);
54
55 aSObj = myStudy.FindObjectIOR(myResult.GetID())
56 aSObj = aSObj.FindSubObject(1)[1]
57 aSObj = aSObj.FindSubObject(3)[1]
58 aSObj = aSObj.FindSubObject(1)[1]
59 print "addField 1 : ", anAnim.addField(aSObj)
60
61 print "Generate presentations for ", anAnim.getNbFields(), " fields"
62 for i in range(0,anAnim.getNbFields()):
63     anAnim.setPresentationType(i,VISU.TPLOT3D)
64     anAnim.generatePresentations(i)
65
66 print "Generate frames"
67 anAnim.generateFrames()
68
69 print "Start Animation"
70 anAnim.setSpeed(22)
71 anAnim.startAnimation()
72 myView.FitAll()
73
74 while 1:
75     time.sleep(1+aDelay)
76     if not anAnim.isRunning():
77         anAnim.stopAnimation()
78         break
79
80 anAnim.publishInStudy()
81 anAnim.saveAnimation()
82
83 for i in range(0,anAnim.getNbFields()):
84     aPrs = anAnim.getPresentation(i,0)
85     aPlot3D = aPrs._narrow(VISU.Plot3D)
86
87     if aPlot3D:
88         aNbLabels = aPlot3D.GetLabels()
89         aPlot3D.SetLabels(aNbLabels+3)
90
91         aWidth = aPlot3D.GetWidth()
92         aHeight = aPlot3D.GetHeight()
93         aPlot3D.SetSize(aWidth+0.07,aHeight+0.07)
94
95         print "Apply properties for all time stamps of ", i, " field."
96         try:
97             anAnim.ApplyProperties(i,aPlot3D)
98         except SALOME.SALOME_Exception, inst:
99             msg = "SALOME.SALOME_Exception caught, see details:"
100             msg+="\n******* text:\t" + inst.details.text
101             msg+="\n******* type:\t" + str(inst.details.type)
102             msg+="\n******* where:\t" + inst.details.sourceFile + ":" + \
103                   str(inst.details.lineNumber)    
104             print msg
105             raise RuntimeError, "There are some errors were occured... For more info see ERRORs above..."
106
107 print "Generate frames"
108 anAnim.generateFrames()
109
110 print "Start Animation"
111 anAnim.startAnimation()
112 myView.FitAll()
113
114 while 1:
115     time.sleep(1+aDelay)
116     if not anAnim.isRunning():
117         anAnim.stopAnimation()
118         break
119
120 anAnim.publishInStudy()
121 anAnim.saveAnimation()
122
123 anAnim.clearFields()
124 print "The number of fields in animation after clearFields method is", anAnim.getNbFields()
125