Salome HOME
Join modifications from BR_Dev_For_4_0 tag V4_1_1.
[modules/visu.git] / src / VISU_SWIG / visu_view3d.py
1 #  VISU VISU_SWIG : binding of C++ implementation and Python
2 #
3 #  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 #  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
5
6 #  This library is free software; you can redistribute it and/or 
7 #  modify it under the terms of the GNU Lesser General Public 
8 #  License as published by the Free Software Foundation; either 
9 #  version 2.1 of the License. 
10
11 #  This library is distributed in the hope that it will be useful, 
12 #  but WITHOUT ANY WARRANTY; without even the implied warranty of 
13 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
14 #  Lesser General Public License for more details. 
15
16 #  You should have received a copy of the GNU Lesser General Public 
17 #  License along with this library; if not, write to the Free Software 
18 #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
19
20 #  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 #
22 #  File   : visu_view3d.py
23 #  Module : VISU
24
25 import os
26 import time
27 import math
28 import VISU
29 import SALOMEDS
30 from visu_gui import *
31
32 aDelay = 0
33
34 #mySession = batchmode_visu.mySession
35
36 myViewManager = myVisu.GetViewManager();
37
38 myView = myViewManager.Create3DView();
39 myView.SetTitle("The window will be soon destroyed!")
40 print "myViewManager.Create3DView()"
41 time.sleep(aDelay)
42
43 myView.Maximize()
44 print "myView.Maximize()"
45 time.sleep(aDelay)
46
47 myView.Restore()
48 print "myView.Restore()"
49 time.sleep(aDelay)
50
51 myView.Minimize()
52 print "myView.Minimize()"
53 time.sleep(aDelay)
54
55 myViewManager.Destroy(myView)
56 print "myViewManager.Destroy(myView)"
57 time.sleep(aDelay)
58
59
60
61 medFile = "fra.med"
62 myFieldName = "VITESSE";
63
64 aMeshName ="LE VOLUME"
65 anEntity = VISU.NODE
66 aTimeStampId = 1
67
68 medFile = os.getenv('DATA_DIR') + '/MedFiles/' + medFile
69 myResult = myVisu.ImportFile(medFile)
70
71
72
73 myView = myViewManager.Create3DView();
74
75 print "myView.SetBackground(...)"
76 aColor = SALOMEDS.Color(0.0,0.3,1.0)
77 myView.SetBackground(aColor);
78
79 myView.SetTitle("The viewer will display ScalarMap")
80 print "myViewManager.Create3DView()"
81
82 aScalarMap = myVisu.ScalarMapOnField(myResult,aMeshName,anEntity,myFieldName,aTimeStampId)
83
84 myView.Display(aScalarMap);
85 print "myView.Display(aScalarMap)"
86 myView.SetFocalPoint([0,0,0]);
87 print "myView.SetFocalPoint(...)"
88 myView.SetParallelScale(2);
89 print "myView.SetParallelScale(...)"
90 myView.FitAll();
91
92 aMax = aScalarMap.GetMax()
93 aMin = aScalarMap.GetMin()
94 aDelta = (aMax - aMin)/2.0
95 aNbColors = aScalarMap.GetNbColors()
96 aNbColors = 64
97 for i in range(2,aNbColors) :
98     aScalarMap.SetNbColors(i)
99     aX = aMin + aDelta*i/aNbColors
100     aY = aMax - aDelta*i/aNbColors
101     aScalarMap.SetRange(aX,aY)
102     myView.Update();
103     time.sleep(aDelay)
104
105 aScalarMap.SetRange(aMin,aMax)
106
107 print "myView.Update()"
108 myView.Update();
109 print "myView.FitAll()"
110 myView.FitAll();
111
112 #aWidth = myView.GetViewWidth()
113 #print "a View Width before = ", aWidth
114 #myView.SetViewWidth(aWidth/2)
115 #aWidth = myView.GetViewWidth()
116 #print "a View Width after  = ", aWidth
117
118
119 myView = myViewManager.Create3DView();
120 myView.SetTitle("Here we will display CutPlanes")
121
122 myView.SplitRight()
123
124 print "myView.SetBackground(...)"
125 aColor = SALOMEDS.Color(0.0,0.7,0.0)
126 myView.SetBackground(aColor);
127
128 aCutPlanes = myVisu.CutPlanesOnField(myResult,aMeshName,anEntity,myFieldName,aTimeStampId)
129 print "myVisu.CutPlanesOnField(...)"
130
131 myView.DisplayOnly(aCutPlanes);
132 print "myView.DisplayOnly(aCutPlanes)"
133
134 aPoint = myView.GetPointOfView();
135 aPoint[0] = aPoint[0] + 10;
136 myView.SetPointOfView(aPoint);
137 print "myView.SetPointOfView(...)"
138 myView.ScaleView(VISU.View3D.YAxis,10.0);
139 myView.ScaleView(VISU.View3D.XAxis,3.0);
140 print "myView.ScaleView(...)"
141 time.sleep(aDelay)
142
143 myView.FitAll();
144
145 aNbPlanes = aCutPlanes.GetNbPlanes()
146 aNbPlanes = 30
147 aXAngle = aCutPlanes.GetRotateX()
148 aYAngle = aCutPlanes.GetRotateY()
149 anOrientation = aCutPlanes.GetOrientationType()
150 for i in range(aNbPlanes,1,-1) :
151     aCutPlanes.SetNbPlanes(i)
152     aX = math.pi/2.0*(aNbPlanes-i)/aNbPlanes
153     aY = math.pi/2.0*(aNbPlanes-i)/aNbPlanes
154     aCutPlanes.SetOrientation(anOrientation,aX,aY)
155     myView.Update();
156     time.sleep(aDelay)
157
158 aNbPlanes = 10
159 aCutPlanes.SetOrientation(VISU.CutPlanes.ZX,0,0)
160 for i in range(1,aNbPlanes) :
161     aCutPlanes.SetNbPlanes(i)
162     myView.Update();
163     time.sleep(aDelay)
164
165 myView.SaveViewParams('AAA')
166 print "myView.SaveViewParams('AAA')"
167 time.sleep(aDelay)
168
169 aCutPlanes.SetOrientation(VISU.CutPlanes.XY,0,0)
170 myView.RemoveScale();
171
172 print "myView.Update()"
173 myView.Update();
174 print "myView.FitAll()"
175 myView.FitAll();
176
177
178
179 myView = myViewManager.Create3DView();
180 print "myViewManager.Create3DView()"
181
182 myView.SetTitle("IsoSurface's viewer")
183
184 print "myView.SetBackground(...)"
185 aColor = SALOMEDS.Color(1.0,0.7,0.0)
186 myView.SetBackground(aColor);
187 time.sleep(aDelay)
188
189 aIsoSurfaces = myVisu.IsoSurfacesOnField(myResult, aMeshName, anEntity, myFieldName, aTimeStampId)
190
191 myView.DisplayOnly(aIsoSurfaces);
192 myView.FitAll();
193 print "myView.DisplayOnly(aCutPlanes)"
194 time.sleep(aDelay)
195
196 aNbSurfaces = aIsoSurfaces.GetNbSurfaces()
197 aNbSurfaces = 32
198 for i in range(2,aNbSurfaces) :
199     aIsoSurfaces.SetNbSurfaces(i)
200     myView.Update();
201     time.sleep(aDelay)
202
203 aIsoSurfaces.SetNbSurfaces(10)
204
205 print "myView.Update()"
206 myView.Update();
207 print "myView.FitAll()"
208 myView.FitAll();
209
210
211
212 myView = myViewManager.Create3DView();
213 myView.SetTitle("The viewer for CutLines")
214 print "myViewManager.Create3DView()"
215 time.sleep(aDelay)
216
217 print "myView.SetBackground(...)"
218 aColor = SALOMEDS.Color(0.7,0.7,0.7)
219 myView.SetBackground(aColor);
220 time.sleep(aDelay)
221
222 aCutLines = myVisu.CutLinesOnField(myResult, aMeshName, anEntity, myFieldName, aTimeStampId)
223 aCutLines.SetOrientation(VISU.CutPlanes.ZX,0,0)
224 aCutLines.SetOrientation2(VISU.CutPlanes.YZ,0,0)
225
226 myView.DisplayOnly(aCutLines);
227 myView.FitAll();
228 print "myView.DisplayOnly(aCutLines)"
229 time.sleep(aDelay)
230
231 aSObj = myStudy.FindObjectIOR(aCutLines.GetID())
232 aTable = myVisu.CreateTable( aSObj.GetID() )
233 print "myVisu.CreateTable(...)"
234
235 aTableView = myViewManager.CreateTableView(aTable)
236 aTableView.SetTitle('Changed Title')
237
238 aContainer = myVisu.CreateContainer()
239 print "myVisu.CreateContainer(...)"
240
241 aNbCurve = aTable.GetNbRows() - 1
242 for i in range(2,aNbCurve):
243    aCurve = myVisu.CreateCurve( aTable, 1, i )
244    print i, aCurve
245    aContainer.AddCurve(aCurve)
246
247
248 myView = myViewManager.CreateXYPlot();
249 myView.SetTitle("The viewer for Curves from CutLines")
250 print "myViewManager.CreateXYPlot()"
251 time.sleep(aDelay)
252
253 myView.Display(aContainer)
254
255
256
257 myView = myViewManager.Create3DView();
258 myView.SetTitle("The viewer for Animation")
259 print "myViewManager.Create3DView()"
260 time.sleep(aDelay)
261
262 medFile = "TimeStamps.med"
263 myFieldName = "vitesse";
264
265 medFile = os.getenv('DATA_DIR') + '/MedFiles/' + medFile
266 myResult = myVisu.ImportFile(medFile)
267
268 anAnim = myVisu.CreateAnimation(myView);
269 aSObj = myStudy.FindObjectIOR(myResult.GetID())
270 aSObj = aSObj.FindSubObject(1)[1]
271 aSObj = aSObj.FindSubObject(3)[1]
272 aSObj = aSObj.FindSubObject(2)[1]
273 anAnim.addField(aSObj)
274 anAnim.setPresentationType(0,VISU.TISOSURFACES)
275 print "Generate presentations"
276 anAnim.generatePresentations(0)
277 print "Generate frames"
278 anAnim.generateFrames()
279 print "Start Animation"
280 anAnim.setSpeed(99)
281 #anAnim.setCycling(1)
282 anAnim.startAnimation()
283 myView.FitAll()
284 while 1:
285     time.sleep(1+aDelay)
286     if not anAnim.isRunning():
287         anAnim.stopAnimation()
288         break
289
290 #anAnim.clearView()