Salome HOME
bf9403a5510797335198096aa2dc0f2c7b8239c3
[modules/visu.git] / src / VISU_SWIG / VISU_Example_04.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2011  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 # Show some results presentations in different 3D and 2D viewers
25 # with different options (view parameters and display modes).
26 # Uses MED files fra.med and TimeStamps.med from ${DATA_DIR}/MedFiles directory.
27 # Pay attention to a viewer title to know its purpose.
28 # This script is equivalent to script VISU_SWIG/visu_view3d.py
29 #
30 import os
31 import time
32 import math
33 import VISU
34 import salome
35 import SALOMEDS
36 from visu_gui import *
37
38 aDelay = 1
39
40 myVisu.SetCurrentStudy(salome.myStudy)
41
42 myViewManager = myVisu.GetViewManager();
43
44 myView = myViewManager.Create3DView();
45 myView.SetTitle("The window will be soon destroyed!")
46 print "myViewManager.Create3DView()"
47 time.sleep(aDelay)
48
49 myView.Maximize()
50 print "myView.Maximize()"
51 time.sleep(aDelay)
52
53 myView.Restore()
54 print "myView.Restore()"
55 time.sleep(aDelay)
56
57 myView.Minimize()
58 print "myView.Minimize()"
59 time.sleep(aDelay)
60
61 myViewManager.Destroy(myView)
62 print "myViewManager.Destroy(myView)"
63 time.sleep(aDelay)
64
65
66 medFile = "fra.med"
67 myFieldName = "VITESSE";
68
69 aMeshName ="LE VOLUME"
70 anEntity = VISU.NODE
71 aTimeStampId = 1
72
73 medFile = os.getenv('DATA_DIR') + '/MedFiles/' + medFile
74 myResult = myVisu.ImportFile(medFile)
75
76 myView = myViewManager.Create3DView();
77
78 print "myView.SetBackground(...)"
79 aColor = SALOMEDS.Color(0.0,0.3,1.0)
80 myView.SetBackground(aColor);
81
82 myView.SetTitle("The viewer will display ScalarMap")
83 print "myViewManager.Create3DView()"
84
85 aScalarMap = myVisu.ScalarMapOnField(myResult,aMeshName,anEntity,myFieldName,aTimeStampId)
86
87 myView.Display(aScalarMap);
88 print "myView.Display(aScalarMap)"
89 myView.SetFocalPoint([0,0,0]);
90 print "myView.SetFocalPoint(...)"
91 myView.SetParallelScale(2);
92 print "myView.SetParallelScale(...)"
93 myView.FitAll();
94
95 aMax = aScalarMap.GetMax()
96 aMin = aScalarMap.GetMin()
97 aDelta = (aMax - aMin)/2.0
98 aNbColors = aScalarMap.GetNbColors()
99 aNbColors = 64
100 for i in range(2,aNbColors) :
101     aScalarMap.SetNbColors(i)
102     aX = aMin + aDelta*i/aNbColors
103     aY = aMax - aDelta*i/aNbColors
104     aScalarMap.SetRange(aX,aY)
105     myView.Update();
106     time.sleep(aDelay)
107
108 aScalarMap.SetRange(aMin,aMax)
109
110 print "myView.Update()"
111 myView.Update();
112 print "myView.FitAll()"
113 myView.FitAll();
114
115
116 myView = myViewManager.Create3DView();
117 myView.SetTitle("Here we will display CutPlanes")
118
119 print "myView.SetBackground(...)"
120 aColor = SALOMEDS.Color(0.0,0.7,0.0)
121 myView.SetBackground(aColor);
122
123 aCutPlanes = myVisu.CutPlanesOnField(myResult,aMeshName,anEntity,myFieldName,aTimeStampId)
124 print "myVisu.CutPlanesOnField(...)"
125
126 myView.DisplayOnly(aCutPlanes);
127 print "myView.DisplayOnly(aCutPlanes)"
128
129 aPoint = myView.GetPointOfView();
130 aPoint[0] = aPoint[0] + 10;
131 myView.SetPointOfView(aPoint);
132 print "myView.SetPointOfView(...)"
133 myView.ScaleView(VISU.View3D.YAxis,10.0);
134 myView.ScaleView(VISU.View3D.XAxis,3.0);
135 print "myView.ScaleView(...)"
136 time.sleep(aDelay)
137
138 myView.FitAll();
139
140 aNbPlanes = aCutPlanes.GetNbPlanes()
141 aNbPlanes = 30
142 aXAngle = aCutPlanes.GetRotateX()
143 aYAngle = aCutPlanes.GetRotateY()
144 anOrientation = aCutPlanes.GetOrientationType()
145 for i in range(aNbPlanes,1,-1) :
146     aCutPlanes.SetNbPlanes(i)
147     aX = math.pi/2.0*(aNbPlanes-i)/aNbPlanes
148     aY = math.pi/2.0*(aNbPlanes-i)/aNbPlanes
149     aCutPlanes.SetOrientation(anOrientation,aX,aY)
150     myView.Update();
151     time.sleep(aDelay)
152
153 aNbPlanes = 10
154 aCutPlanes.SetOrientation(VISU.CutPlanes.ZX,0,0)
155 for i in range(1,aNbPlanes) :
156     aCutPlanes.SetNbPlanes(i)
157     myView.Update();
158     time.sleep(aDelay)
159
160 myView.SaveViewParams('AAA')
161 print "myView.SaveViewParams('AAA')"
162 time.sleep(aDelay)
163
164 aCutPlanes.SetOrientation(VISU.CutPlanes.XY,0,0)
165 myView.RemoveScale();
166
167 print "myView.Update()"
168 myView.Update();
169 print "myView.FitAll()"
170 myView.FitAll();
171
172
173 myView = myViewManager.Create3DView();
174 print "myViewManager.Create3DView()"
175
176 myView.SetTitle("IsoSurface's viewer")
177
178 print "myView.SetBackground(...)"
179 aColor = SALOMEDS.Color(1.0,0.7,0.0)
180 myView.SetBackground(aColor);
181 time.sleep(aDelay)
182
183 aIsoSurfaces = myVisu.IsoSurfacesOnField(myResult, aMeshName, anEntity, myFieldName, aTimeStampId)
184
185 myView.DisplayOnly(aIsoSurfaces);
186 myView.FitAll();
187 print "myView.DisplayOnly(aCutPlanes)"
188 time.sleep(aDelay)
189
190 aNbSurfaces = aIsoSurfaces.GetNbSurfaces()
191 aNbSurfaces = 32
192 for i in range(2,aNbSurfaces) :
193     aIsoSurfaces.SetNbSurfaces(i)
194     myView.Update();
195     time.sleep(aDelay)
196
197 aIsoSurfaces.SetNbSurfaces(10)
198
199 print "myView.Update()"
200 myView.Update();
201 print "myView.FitAll()"
202 myView.FitAll();
203
204
205 myView = myViewManager.Create3DView();
206 myView.SetTitle("The viewer for CutLines")
207 print "myViewManager.Create3DView()"
208 time.sleep(aDelay)
209
210 print "myView.SetBackground(...)"
211 aColor = SALOMEDS.Color(0.7,0.7,0.7)
212 myView.SetBackground(aColor);
213 time.sleep(aDelay)
214
215 aCutLines = myVisu.CutLinesOnField(myResult, aMeshName, anEntity, myFieldName, aTimeStampId)
216 aCutLines.SetOrientation(VISU.CutPlanes.ZX,0,0)
217 aCutLines.SetOrientation2(VISU.CutPlanes.YZ,0,0)
218
219 myView.DisplayOnly(aCutLines);
220 myView.FitAll();
221 print "myView.DisplayOnly(aCutLines)"
222 time.sleep(aDelay)
223
224 aSObj = myStudy.FindObjectIOR(aCutLines.GetID())
225 aTable = myVisu.CreateTable( aSObj.GetID() )
226 print "myVisu.CreateTable(...)"
227
228 aTableView = myViewManager.CreateTableView(aTable)
229 aTableView.SetTitle('Changed Title')
230
231 aContainer = myVisu.CreateContainer()
232 print "myVisu.CreateContainer(...)"
233
234 aNbCurve = aTable.GetNbRows() - 1
235 for i in range(2,aNbCurve):
236    aCurve = myVisu.CreateCurve( aTable, 1, i )
237    print i, aCurve
238    aContainer.AddCurve(aCurve)
239
240
241 myView = myViewManager.CreateXYPlot();
242 myView.SetTitle("The viewer for Curves from CutLines")
243 print "myViewManager.CreateXYPlot()"
244 time.sleep(aDelay)
245
246 myView.Display(aContainer)
247
248
249 myView = myViewManager.Create3DView();
250 myView.SetTitle("The viewer for Animation")
251 print "myViewManager.Create3DView()"
252 time.sleep(aDelay)
253
254 medFile = "TimeStamps.med"
255 myFieldName = "vitesse";
256
257 medFile = os.getenv('DATA_DIR') + '/MedFiles/' + medFile
258 myResult = myVisu.ImportFile(medFile)
259
260 anAnim = myVisu.CreateAnimation(myView);
261 aSObj = myStudy.FindObjectIOR(myResult.GetID())
262 aSObj = aSObj.FindSubObject(1)[1]
263 aSObj = aSObj.FindSubObject(3)[1]
264 aSObj = aSObj.FindSubObject(2)[1]
265 anAnim.addField(aSObj)
266 anAnim.setPresentationType(0,VISU.TISOSURFACES)
267 print "Generate presentations"
268 anAnim.generatePresentations(0)
269 print "Generate frames"
270 anAnim.generateFrames()
271 print "Start Animation"
272 anAnim.setSpeed(99)
273 anAnim.startAnimation()
274 myView.FitAll()
275 while 1:
276     time.sleep(1+aDelay)
277     if not anAnim.isRunning():
278         anAnim.stopAnimation()
279         break