Salome HOME
Fix for the "0051899: curves are not shown in opened study" issue.
[modules/visu.git] / src / VISU_SWIG / visu_view3d.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2013  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_view3d.py
26 #  Module : VISU
27 #
28 import os
29 import time
30 import math
31 import VISU
32 import salome
33 import SALOMEDS
34 from visu_gui import *
35
36 aDelay = 0
37
38 #mySession = batchmode_visu.mySession
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
67 medFile = "fra.med"
68 myFieldName = "VITESSE";
69
70 aMeshName ="LE VOLUME"
71 anEntity = VISU.NODE
72 aTimeStampId = 1
73
74 medFile = os.getenv('DATA_DIR') + '/MedFiles/' + medFile
75 myResult = myVisu.ImportFile(medFile)
76
77
78
79 myView = myViewManager.Create3DView();
80
81 print "myView.SetBackground(...)"
82 aColor = SALOMEDS.Color(0.0,0.3,1.0)
83 myView.SetBackground(aColor);
84
85 myView.SetTitle("The viewer will display ScalarMap")
86 print "myViewManager.Create3DView()"
87
88 aScalarMap = myVisu.ScalarMapOnField(myResult,aMeshName,anEntity,myFieldName,aTimeStampId)
89
90 myView.Display(aScalarMap);
91 print "myView.Display(aScalarMap)"
92 myView.SetFocalPoint([0,0,0]);
93 print "myView.SetFocalPoint(...)"
94 myView.SetParallelScale(2);
95 print "myView.SetParallelScale(...)"
96 myView.FitAll();
97
98 aMax = aScalarMap.GetMax()
99 aMin = aScalarMap.GetMin()
100 aDelta = (aMax - aMin)/2.0
101 aNbColors = aScalarMap.GetNbColors()
102 aNbColors = 64
103 for i in range(2,aNbColors) :
104     aScalarMap.SetNbColors(i)
105     aX = aMin + aDelta*i/aNbColors
106     aY = aMax - aDelta*i/aNbColors
107     aScalarMap.SetRange(aX,aY)
108     myView.Update();
109     time.sleep(aDelay)
110
111 aScalarMap.SetRange(aMin,aMax)
112
113 print "myView.Update()"
114 myView.Update();
115 print "myView.FitAll()"
116 myView.FitAll();
117
118 #aWidth = myView.GetViewWidth()
119 #print "a View Width before = ", aWidth
120 #myView.SetViewWidth(aWidth/2)
121 #aWidth = myView.GetViewWidth()
122 #print "a View Width after  = ", aWidth
123
124
125 myView = myViewManager.Create3DView();
126 myView.SetTitle("Here we will display CutPlanes")
127
128 myView.SplitRight()
129
130 print "myView.SetBackground(...)"
131 aColor = SALOMEDS.Color(0.0,0.7,0.0)
132 myView.SetBackground(aColor);
133
134 aCutPlanes = myVisu.CutPlanesOnField(myResult,aMeshName,anEntity,myFieldName,aTimeStampId)
135 print "myVisu.CutPlanesOnField(...)"
136
137 myView.DisplayOnly(aCutPlanes);
138 print "myView.DisplayOnly(aCutPlanes)"
139
140 aPoint = myView.GetPointOfView();
141 aPoint[0] = aPoint[0] + 10;
142 myView.SetPointOfView(aPoint);
143 print "myView.SetPointOfView(...)"
144 myView.ScaleView(VISU.View3D.YAxis,10.0);
145 myView.ScaleView(VISU.View3D.XAxis,3.0);
146 print "myView.ScaleView(...)"
147 time.sleep(aDelay)
148
149 myView.FitAll();
150
151 aNbPlanes = aCutPlanes.GetNbPlanes()
152 aNbPlanes = 30
153 aXAngle = aCutPlanes.GetRotateX()
154 aYAngle = aCutPlanes.GetRotateY()
155 anOrientation = aCutPlanes.GetOrientationType()
156 for i in range(aNbPlanes,1,-1) :
157     aCutPlanes.SetNbPlanes(i)
158     aX = math.pi/2.0*(aNbPlanes-i)/aNbPlanes
159     aY = math.pi/2.0*(aNbPlanes-i)/aNbPlanes
160     aCutPlanes.SetOrientation(anOrientation,aX,aY)
161     myView.Update();
162     time.sleep(aDelay)
163
164 aNbPlanes = 10
165 aCutPlanes.SetOrientation(VISU.CutPlanes.ZX,0,0)
166 for i in range(1,aNbPlanes) :
167     aCutPlanes.SetNbPlanes(i)
168     myView.Update();
169     time.sleep(aDelay)
170
171 myView.SaveViewParams('AAA')
172 print "myView.SaveViewParams('AAA')"
173 time.sleep(aDelay)
174
175 aCutPlanes.SetOrientation(VISU.CutPlanes.XY,0,0)
176 myView.RemoveScale();
177
178 print "myView.Update()"
179 myView.Update();
180 print "myView.FitAll()"
181 myView.FitAll();
182
183
184
185 myView = myViewManager.Create3DView();
186 print "myViewManager.Create3DView()"
187
188 myView.SetTitle("IsoSurface's viewer")
189
190 print "myView.SetBackground(...)"
191 aColor = SALOMEDS.Color(1.0,0.7,0.0)
192 myView.SetBackground(aColor);
193 time.sleep(aDelay)
194
195 aIsoSurfaces = myVisu.IsoSurfacesOnField(myResult, aMeshName, anEntity, myFieldName, aTimeStampId)
196
197 myView.DisplayOnly(aIsoSurfaces);
198 myView.FitAll();
199 print "myView.DisplayOnly(aCutPlanes)"
200 time.sleep(aDelay)
201
202 aNbSurfaces = aIsoSurfaces.GetNbSurfaces()
203 aNbSurfaces = 32
204 for i in range(2,aNbSurfaces) :
205     aIsoSurfaces.SetNbSurfaces(i)
206     myView.Update();
207     time.sleep(aDelay)
208
209 aIsoSurfaces.SetNbSurfaces(10)
210
211 print "myView.Update()"
212 myView.Update();
213 print "myView.FitAll()"
214 myView.FitAll();
215
216
217
218 myView = myViewManager.Create3DView();
219 myView.SetTitle("The viewer for CutLines")
220 print "myViewManager.Create3DView()"
221 time.sleep(aDelay)
222
223 print "myView.SetBackground(...)"
224 aColor = SALOMEDS.Color(0.7,0.7,0.7)
225 myView.SetBackground(aColor);
226 time.sleep(aDelay)
227
228 aCutLines = myVisu.CutLinesOnField(myResult, aMeshName, anEntity, myFieldName, aTimeStampId)
229 aCutLines.SetOrientation(VISU.CutPlanes.ZX,0,0)
230 aCutLines.SetOrientation2(VISU.CutPlanes.YZ,0,0)
231
232 myView.DisplayOnly(aCutLines);
233 myView.FitAll();
234 print "myView.DisplayOnly(aCutLines)"
235 time.sleep(aDelay)
236
237 aSObj = myStudy.FindObjectIOR(aCutLines.GetID())
238 aTable = myVisu.CreateTable( aSObj.GetID() )
239 print "myVisu.CreateTable(...)"
240
241 aTableView = myViewManager.CreateTableView(aTable)
242 aTableView.SetTitle('Changed Title')
243
244 aContainer = myVisu.CreateContainer()
245 print "myVisu.CreateContainer(...)"
246
247 aNbCurve = aTable.GetNbRows() - 1
248 for i in range(2,aNbCurve):
249    aCurve = myVisu.CreateCurve( aTable, 1, i )
250    print i, aCurve
251    aContainer.AddCurve(aCurve)
252
253
254 myView = myViewManager.CreateXYPlot();
255 myView.SetTitle("The viewer for Curves from CutLines")
256 print "myViewManager.CreateXYPlot()"
257 time.sleep(aDelay)
258
259 myView.Display(aContainer)
260
261
262
263 myView = myViewManager.Create3DView();
264 myView.SetTitle("The viewer for CutSegment")
265 print "myViewManager.Create3DView()"
266 time.sleep(aDelay)
267
268 print "myView.SetBackground(...)"
269 aColor = SALOMEDS.Color(0.0,0.7,0.3)
270 myView.SetBackground(aColor);
271 time.sleep(aDelay)
272
273 aCutSegment = myVisu.CutSegmentOnField(myResult, aMeshName, anEntity, myFieldName, aTimeStampId)
274 aCutSegment.SetPoint1(0.0,0.0,0.0)
275 aCutSegment.SetPoint2(0.4,0.05,1.0)
276
277 myView.DisplayOnly(aCutSegment);
278 myView.FitAll();
279 print "myView.DisplayOnly(aCutSegment)"
280 time.sleep(aDelay)
281
282 aSObj = myStudy.FindObjectIOR(aCutSegment.GetID())
283 aTable = myVisu.CreateTable( aSObj.GetID() )
284 print "myVisu.CreateTable(...)"
285
286 aTableView = myViewManager.CreateTableView(aTable)
287 aTableView.SetTitle('Changed Title')
288
289 aContainer = myVisu.CreateContainer()
290 print "myVisu.CreateContainer(...)"
291
292 aCurve = myVisu.CreateCurve( aTable, 1, 2 )
293 print aCurve
294 aContainer.AddCurve(aCurve)
295
296
297 myView = myViewManager.CreateXYPlot();
298 myView.SetTitle("The viewer for Curve from CutSegment")
299 print "myViewManager.CreateXYPlot()"
300 time.sleep(aDelay)
301
302 myView.Display(aContainer)
303
304
305
306 myView = myViewManager.Create3DView();
307 myView.SetTitle("The viewer for Animation")
308 print "myViewManager.Create3DView()"
309 time.sleep(aDelay)
310
311 medFile = "TimeStamps.med"
312 myFieldName = "vitesse";
313
314 medFile = os.getenv('DATA_DIR') + '/MedFiles/' + medFile
315 myResult = myVisu.ImportFile(medFile)
316
317 anAnim = myVisu.CreateAnimation(myView);
318 aSObj = myStudy.FindObjectIOR(myResult.GetID())
319 aSObj = aSObj.FindSubObject(1)[1]
320 aSObj = aSObj.FindSubObject(3)[1]
321 aSObj = aSObj.FindSubObject(2)[1]
322 anAnim.addField(aSObj)
323 anAnim.setPresentationType(0,VISU.TISOSURFACES)
324 print "Generate presentations"
325 anAnim.generatePresentations(0)
326 print "Generate frames"
327 anAnim.generateFrames()
328 print "Start Animation"
329 anAnim.setSpeed(99)
330 #anAnim.setCycling(1)
331 anAnim.startAnimation()
332 myView.FitAll()
333 while 1:
334     time.sleep(1+aDelay)
335     if not anAnim.isRunning():
336         anAnim.stopAnimation()
337         break
338
339 #anAnim.clearView()