From b13853837492c81692b5b3990f539294efe17029 Mon Sep 17 00:00:00 2001 From: jfa Date: Tue, 26 Apr 2005 06:29:26 +0000 Subject: [PATCH] Provide VISU examples --- Makefile.in | 2 +- examples/Fields_group3D.med | Bin 0 -> 44352 bytes examples/Makefile.in | 33 ++++ examples/ResOK_0000.med | Bin 0 -> 175696 bytes examples/VISU_Example_01.py | 191 ++++++++++++++++++++ examples/VISU_Example_02.py | 343 ++++++++++++++++++++++++++++++++++++ examples/VISU_Example_03.py | 60 +++++++ examples/VISU_Example_04.py | 255 +++++++++++++++++++++++++++ 8 files changed, 883 insertions(+), 1 deletion(-) create mode 100644 examples/Fields_group3D.med create mode 100644 examples/Makefile.in create mode 100644 examples/ResOK_0000.med create mode 100644 examples/VISU_Example_01.py create mode 100644 examples/VISU_Example_02.py create mode 100644 examples/VISU_Example_03.py create mode 100644 examples/VISU_Example_04.py diff --git a/Makefile.in b/Makefile.in index 85b1b76d..2a306bf1 100644 --- a/Makefile.in +++ b/Makefile.in @@ -14,7 +14,7 @@ VPATH=.:@srcdir@:@top_srcdir@/bin:@top_srcdir@/resources:./bin:@top_srcdir@/idl: @COMMENCE@ -SUBDIRS = idl src doc +SUBDIRS = idl src examples doc RESOURCES_FILES = \ ModuleVisu.png \ diff --git a/examples/Fields_group3D.med b/examples/Fields_group3D.med new file mode 100644 index 0000000000000000000000000000000000000000..956017747c765d85811fcfc7a896dbc1c29b85e3 GIT binary patch literal 44352 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 literal 0 HcmV?d00001 diff --git a/examples/Makefile.in b/examples/Makefile.in new file mode 100644 index 00000000..52f3a639 --- /dev/null +++ b/examples/Makefile.in @@ -0,0 +1,33 @@ +# Copyright (C) 2005 CEA/DEN, EDF R&D +# +# +# +# File : Makefile.in +# Author : Vasily Rusyaev (Open Cascade NN) +# Module : examples +# $Header: + +top_srcdir=@top_srcdir@ +top_builddir=.. +srcdir=@srcdir@ +VPATH=.:@srcdir@ +curdir = $(shell pwd) +instdatadir=${prefix}/examples + +SUBDIRS=. + +@COMMENCE@ + +data: + (cd $(srcdir) ; cp -fr `ls | grep -v "Makefile.in"` $(curdir)) + +clean: + rm -rf `ls | grep -v "Makefile"` + +install: + rm -rf $(instdatadir) + mkdir $(instdatadir) + cp -rf `ls | grep -v "Makefile"` $(instdatadir) + +uninstall: + rm -rf $(instdatadir) diff --git a/examples/ResOK_0000.med b/examples/ResOK_0000.med new file mode 100644 index 0000000000000000000000000000000000000000..47afde89ac3fb2bcbe036de4ccbd8e45cc0c4f3a GIT binary patch literal 175696 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 literal 0 HcmV?d00001 diff --git a/examples/VISU_Example_01.py b/examples/VISU_Example_01.py new file mode 100644 index 00000000..8de2ce6c --- /dev/null +++ b/examples/VISU_Example_01.py @@ -0,0 +1,191 @@ +# T 2.23, 28: Displaying fields (scalar and vectorial) on nodes, change presentation options. +# Uses MED files ResOK_0000.med and Fields_group3D.med +# +# This script is equivalent to non-regression test script 003/A1 + +import salome +import visu_gui +import SALOMEDS +import VISU +import os + +datadir = os.getenv("VISU_ROOT_DIR") + "/examples/" + +#%====================Stage1: Creating a new study====================% + +print "**** Stage1: Creating a new study" + +print "Creating a new study..................", +myVisu = visu_gui.myVisu +myVisu.SetCurrentStudy(salome.myStudy) +myViewManager = myVisu.GetViewManager() +if myViewManager is None : print "Error" +else : print "OK" + +#%====================Stage2: Importing MED file====================% + +print "**** Stage2: Importing MED file" + +print 'Import "ResOK_0000.med"...............', +medFile = datadir + "ResOK_0000.med" +myResult = myVisu.ImportFile(medFile) +if myResult is None : print "Error" +else : print "OK" + +print 'Creating new View3D...................', +myView = myViewManager.Create3DView() +if myView is None : print "Error" +else : print "OK" + +myMeshName = 'dom' +myCellEntity = VISU.CELL +myNodeEntity = VISU.NODE + +#%====================Stage3: Displaying vector field====================% + +print "**** Stage3: Displaying vector field" + +print "Creating Scalar Map.......", +scalarmap = myVisu.ScalarMapOnField(myResult,myMeshName,myNodeEntity,'vitesse',1); +if scalarmap is None : print "Error" +else : print "OK" +scalarmap.SetSize(0.15, 0.8) +myView.DisplayOnly(scalarmap) +myView.FitAll() + +print "Creating Stream Lines.....", +streamlines = myVisu.StreamLinesOnField(myResult,myMeshName,myNodeEntity,'vitesse',1); +if streamlines is None : print "Error" +else : print "OK" +myView.DisplayOnly(streamlines) + +print "Creating Vectors..........", +vectors = myVisu.VectorsOnField(myResult,myMeshName,myNodeEntity,'vitesse',1); +if vectors is None : print "Error" +else : print "OK" +myView.DisplayOnly(vectors) + + +print "Creating Iso Surfaces.....", +isosurfaces = myVisu.IsoSurfacesOnField(myResult,myMeshName,myNodeEntity,'vitesse',1); +if isosurfaces is None : print "Error" +else : print "OK" +myView.DisplayOnly(isosurfaces) + +print "Creating Cut Planes.......", +cutplanes = myVisu.CutPlanesOnField(myResult,myMeshName,myNodeEntity,'vitesse',1); +if cutplanes is None : print "Error" +else : print "OK" +cutplanes.SetNbPlanes(30) +cutplanes.SetOrientation(VISU.CutPlanes.YZ, 0, 0) +myView.DisplayOnly(cutplanes) + +#%====================Stage4: Opening a new study and Med file import====================% + +print "**** Stage4: Opening a new study and Med file import" + +print "Creating a new study..................", +newStudy = salome.myStudyManager.NewStudy('newStudy') +myVisu.SetCurrentStudy(newStudy) +myViewManager = myVisu.GetViewManager() +myView = myViewManager.Create3DView() +if myView is None : print "Error" +else : print "OK" + +print 'Importing "Fields_group3D.med"........', +medFile = datadir + "Fields_group3D.med" +myResult1 = myVisu.ImportFile(medFile) +if myResult1 is None : print "Error" +myView1 = myViewManager.Create3DView() +if myView1 is None : print "Error" +else : print "OK" + +#%====================Stage5: Displaying scalar field====================% + +print "**** Stage5: Displaying scalar field" + +myMeshName1 = 'mailles_MED' + +print "Creating Scalar Map.......", +scalarmap1 = myVisu.ScalarMapOnField(myResult1,myMeshName1,myCellEntity,'scalar field',1); +if scalarmap1 is None : print "Error" +else : print "OK" +myView1.DisplayOnly(scalarmap1) +myView1.FitAll() + +print "Creating Iso Surfaces.....", +isosurfaces1 = myVisu.IsoSurfacesOnField(myResult1,myMeshName1,myCellEntity,'scalar field',1); +if isosurfaces1 is None : print "Error" +else : print "OK" +myView1.DisplayOnly(isosurfaces1) + +print "Creating Cut Planes.......", +cutplanes1 = myVisu.CutPlanesOnField(myResult1,myMeshName1,myCellEntity,'scalar field',1); +if cutplanes1 is None : print "Error" +else : print "OK" +cutplanes1.SetOrientation(VISU.CutPlanes.YZ, 0, 0) +myView1.DisplayOnly(cutplanes1) + +#%====================Stage6: Object browser popup====================% + +print "**** Stage6: Object browser popup" + +print "Creating mesh.............", +mesh = myVisu.MeshOnEntity(myResult1,myMeshName1,myCellEntity); +if mesh is None : print "Error" +else : print "OK" +myView1.DisplayOnly(mesh) + + +print "Changing type of presentation of mesh:" +mesh.SetPresentationType(VISU.WIREFRAME) +PrsType = mesh.GetPresentationType() +print "Presentation type..", PrsType +myView1.DisplayOnly(mesh) + +mesh.SetPresentationType(VISU.SHADED) +PrsType = mesh.GetPresentationType() +print "Presentation type.....", PrsType +myView1.DisplayOnly(mesh) + +mesh.SetPresentationType(VISU.POINT) +PrsType = mesh.GetPresentationType() +print "Presentation type......", PrsType +myView1.DisplayOnly(mesh) +myView1.Update() + +mesh.SetPresentationType(VISU.SHRINK) +PrsType = mesh.GetPresentationType() +print "Presentation type.....", PrsType +myView1.DisplayOnly(mesh) + +print "Changing color of mesh....", +aColor = SALOMEDS.Color(0,0,1) +mesh.SetCellColor(aColor) +myView1.DisplayOnly(mesh) +print "OK" + +print "Renaming ScalarMap........", +SObj = newStudy.FindObjectIOR(scalarmap1.GetID()) +newName = 'Renamed Object' +SObj.Name = newName +print "OK" + +print "Deleting Cut Planes.......", +SObj = newStudy.FindObjectIOR(cutplanes1.GetID()) +myBuilder = newStudy.NewBuilder() +myBuilder.RemoveObject(SObj) +print "OK" + +print "Changing first IsoSurfaces", +myVisu.SetCurrentStudy(salome.myStudy) +myView.DisplayOnly(isosurfaces) +isosurfaces.SetNbSurfaces(25) +print "OK" + +myView.Maximize() +myView.DisplayOnly(isosurfaces) + +print "Hide IsoSurfaces..........", +myView.Erase(isosurfaces) +print "OK" diff --git a/examples/VISU_Example_02.py b/examples/VISU_Example_02.py new file mode 100644 index 00000000..a54f206d --- /dev/null +++ b/examples/VISU_Example_02.py @@ -0,0 +1,343 @@ +# T 2.24: Save/retrieve view parameters. +# Uses MED file fra.med from ${KERNEL_ROOT_DIR}/examples directory. +# +# This script is equivalent to non-regression test script 003/A3 + +import salome +import visu_gui +import SALOMEDS +import VISU +import os + +medFile = os.getenv("KERNEL_ROOT_DIR") + "/examples/fra.med" + +#%====================Stage1: Creating a new study====================% + +print "**** Stage1: Creating a new study " + +print "Creating a new study..................", +myVisu = visu_gui.myVisu +myVisu.SetCurrentStudy(salome.myStudy) +myViewManager = myVisu.GetViewManager() +if myViewManager is None : print "Error" +else : print "OK" + +#%====================Stage2: Saving view parameters before import====================% + +print "**** Stage2: Saving view parameters before import " + +myView = myViewManager.Create3DView() + +print "Zooming trihedron.....................", +aScale = myView.GetParallelScale() +myView.SetParallelScale(aScale*4) +print "OK" + +print "Rotating trihedron....................", +aPoint = (100,100,100) +myView.SetPointOfView(aPoint) +print "OK" + +print "Saving view parameters................", +aViewParamsName1 = 'ViewParams:1' +aSaveRes = myView.SaveViewParams(aViewParamsName1) +if aSaveRes != 1 : print "Error" +else : print "OK" + +#%====================Stage3: Import MED file====================% + +print "**** Stage3: Import MED file" + +print 'Importing "fra.med"...................', +myResult = myVisu.ImportFile(medFile) +if myResult is None : print "Error" +else : print "OK" + +print "Creating mesh.........................", +myMeshName = 'LE VOLUME' +myCellEntity = VISU.CELL +mesh = myVisu.MeshOnEntity(myResult,myMeshName,myCellEntity); +if mesh is None : print "Error" +else : print "OK" + +myView.Maximize() +myView.Display(mesh) +myView.FitAll() + +#%====================Stage4: Saving view parameters after import====================% + +print "**** Stage4: Saving view parameters after import" + +print "Creating Scalar Map...................", +myFieldName = 'TAUX_DE_VIDE' +myNodeEntity = VISU.NODE +scalarmap = myVisu.ScalarMapOnField(myResult,myMeshName,myNodeEntity,myFieldName,1); +if scalarmap is None : print "Error" +else : print "OK" +myView.DisplayOnly(scalarmap) + +print "Zooming 3D view.......................", +aScale = myView.GetParallelScale() +myView.SetParallelScale(aScale*2) +print "OK" + +print "Setting view point(LEFT)..............", +myView.SetView((VISU.View3D.LEFT)) +print "OK" + +print "Saving view parameters................", +aViewParamsName2 = 'ViewParams:2' +aSaveRes = myView.SaveViewParams(aViewParamsName2) +if aSaveRes != 1 : print "Error" +else : print "OK" + +print "Creating Cut Planes...................", +cutplanes = myVisu.CutPlanesOnField(myResult,myMeshName,myNodeEntity,myFieldName,1); +if cutplanes is None : print "Error" +else : print "OK" +cutplanes.SetNbPlanes(4) +myView.DisplayOnly(cutplanes) + +print "Setting scaling.......................", + +#Define parameters of scaling: +myXParam = 5 +myYParam = 5 +myZParam = 1 + +myXAxis = VISU.View3D.XAxis +myYAxis = VISU.View3D.YAxis +myZAxis = VISU.View3D.ZAxis + +myView.ScaleView(myXAxis,myXParam) +myView.ScaleView(myYAxis,myYParam) +myView.ScaleView(myZAxis,myZParam) +print "OK" + +print "Rotating 3d view......................", +aPoint = (100,40,0) +myView.SetPointOfView(aPoint) +print "OK" + +print "Fit All...............................", +myView.FitAll() +print "OK" + +print "Saving view parameters................", +aViewParamsName3 = 'ViewParams:3' +aSaveRes = myView.SaveViewParams(aViewParamsName3) +if aSaveRes != 1 : print "Error" +else : print "OK" + +#%====================Stage5: Restoring view parameters====================% + +print "**** Stage5: Restoring view parameters" + +print "Restoring first view parameters.......", +aRestoreRes = myView.RestoreViewParams(aViewParamsName1) +if aRestoreRes != 1 : print "Error" +else : print "OK" + +print "Restoring second view parameters......", +aRestoreRes = myView.RestoreViewParams(aViewParamsName2) +if aRestoreRes != 1 : print "Error" +else : print "OK" + +print "Displaing only Scalar Map.............", +myView.DisplayOnly(scalarmap) +print "OK" + +print "Displaing only Cut Planes.............", +myView.DisplayOnly(cutplanes) +print "OK" + +print "Restoring third view parameters.......", +aRestoreRes = myView.RestoreViewParams(aViewParamsName3) +if aRestoreRes != 1 : print "Error" +else : print "OK" + +print "Displaing only Mesh...................", +myView.DisplayOnly(mesh) +print "OK" + +print "Displaing only Scalar Map.............", +myView.DisplayOnly(scalarmap) +print "OK" + +print "Displaing only Cut Planes.............", +myView.DisplayOnly(cutplanes) +print "OK" + +#%====================Stage6: Changing of view parameters====================% + +print "**** Stage6: Changing of view parameters" + +print "Remove scaling........................", +myView.RemoveScale() +print "OK" + +print "Fit All...............................", +myView.FitAll() +print "OK" + +print "Rotating 3d view......................", +aPoint = (0,60,150) +myView.SetPointOfView(aPoint) +print "OK" + +print "Resaving first view parameters........", +aSaveRes = myView.SaveViewParams(aViewParamsName1) +if aSaveRes != 1 : print "Error" +else : print "OK" + +print "Restoring third view parameters.......", +aRestoreRes = myView.RestoreViewParams(aViewParamsName3) +if aRestoreRes != 1 : print "Error" +else : print "OK" + +print "Restoring first view parameters.......", +aRestoreRes = myView.RestoreViewParams(aViewParamsName1) +if aRestoreRes != 1 : print "Error" +else : print "OK" + +print "Displaying only Mesh..................", +myView.DisplayOnly(mesh) +print "OK" + +print "Displaying only Scalar Map............", +myView.DisplayOnly(scalarmap) +print "OK" + +#%====================Stage7: Saving of created view parameters====================% + +print "**** Stage7: Saving of created view parameters" + +print "Saving study..........................", + +str = os.getenv("TmpDir") +if str == None: + str = "/tmp" + +file = str+'/VISU_005.hdf' + +salome.myStudyManager.SaveAs(file, salome.myStudy, 0) +#salome.myStudyManager.Close(salome.myStudy) +#salome.myStudy.Close() +print "OK" + +print "Opening just saved study..............", + +openedStudy = salome.myStudyManager.Open(file) +myVisu.SetCurrentStudy(openedStudy) +myViewManager = myVisu.GetViewManager() +myView1 = myViewManager.Create3DView() +if myView1 is None : print "Error" +else : print "OK" + +print "Restoring first view parameters.......", +aRestoreRes = myView1.RestoreViewParams(aViewParamsName1) +if aRestoreRes != 1 : print "Error" +else : print "OK" + +Builder = openedStudy.NewBuilder() +SCom = openedStudy.FindComponent("VISU") +Builder.LoadWith(SCom ,myVisu) + +print "Displaying Scalar Map.................", +SObj = openedStudy.FindObject('ScalarMap') +scalarmap1 = visu_gui.visu.SObjectToObject(SObj) +if scalarmap1 is None : print "Error" +else : print "OK" +myView1.DisplayOnly(scalarmap1) + +print "Displaying Cut Planes.................", +SObj = openedStudy.FindObject('CutPlanes') +cutplanes1 = visu_gui.visu.SObjectToObject(SObj) +if cutplanes1 is None : print "Error" +else : print "OK" +myView1.DisplayOnly(cutplanes1) + +print "Restoring second view parameters......", +aRestoreRes = myView1.RestoreViewParams(aViewParamsName2) +if aRestoreRes != 1 : print "Error" +else : print "OK" + +print "Displaying Scalar Map.................", +myView1.DisplayOnly(scalarmap1) +print "OK" + +print "Restoring third view parameters.......", +aRestoreRes = myView1.RestoreViewParams(aViewParamsName3) +if aRestoreRes != 1 : print "Error" +else : print "OK" + +print "Displaying Cut Planes.................", +myView1.DisplayOnly(cutplanes1) +print "OK" + +#%====================Stage8: Changing of saved session====================% + +print "**** Stage8: Changing of saved session" + +print "Deleting ViewParams:3,1,2.............", +SObj = openedStudy.FindObject(aViewParamsName3) +Builder.RemoveObject(SObj) +SObj = openedStudy.FindObject(aViewParamsName1) +Builder.RemoveObject(SObj) +SObj = openedStudy.FindObject(aViewParamsName2) +Builder.RemoveObject(SObj) +print "OK" + +print "Zooming trihedron.....................", +aScale = myView.GetParallelScale() +myView1.SetParallelScale(aScale*2) +myView1.Update() +print "OK" + +print "Rotating trihedron....................", +aPoint = (200,40,-40) +myView1.SetPointOfView(aPoint) +print "OK" + +print "Saving view parameters................", +aSaveRes = myView1.SaveViewParams(aViewParamsName1) +if aSaveRes != 1 : print "Error" +else : print "OK" + +print "Renaming ViewParams:1.................", +SObj = openedStudy.FindObject(aViewParamsName1) +SObj.Name = "New_view" +print "OK" + +print "Setting scaling.......................", +#Define parameters of scaling: +myXParam = 4 +myYParam = 4 +myZParam = 8 + +myXAxis = VISU.View3D.XAxis +myYAxis = VISU.View3D.YAxis +myZAxis = VISU.View3D.ZAxis + +myView1.ScaleView(myXAxis,myXParam) +myView1.ScaleView(myYAxis,myYParam) +myView1.ScaleView(myZAxis,myZParam) +print "OK" + +myView1.FitAll() + +print "Saving view parameters................", +aSaveRes = myView1.SaveViewParams(aViewParamsName2) +if aSaveRes != 1 : print "Error" +else : print "OK" + +print "Restoring first view parameters.......", +aRestoreRes = myView1.RestoreViewParams(aViewParamsName1) +if aSaveRes != 1 : print "Error" +else : print "OK" + +print "Restoring second view parameters......", +aRestoreRes = myView1.RestoreViewParams(aViewParamsName2) +if aRestoreRes != 1 : print "Error" +else : print "OK" + diff --git a/examples/VISU_Example_03.py b/examples/VISU_Example_03.py new file mode 100644 index 00000000..c64de44b --- /dev/null +++ b/examples/VISU_Example_03.py @@ -0,0 +1,60 @@ +# Animation of "vitesse" field, stored in file TimeStamps.med +# +# This script is equivalent to non-regression test script 003/A5 + +import salome +import visu_gui +import SALOMEDS +import VISU +import os +import time + +medFile = os.getenv("KERNEL_ROOT_DIR") + "/examples/TimeStamps.med" + +print 'Importing "TimeStamps.med"................', +myVisu = visu_gui.myVisu +myResult = myVisu.ImportFile(medFile) +if myResult is None : print "Error" +else : print "OK" + +print "Creating Cut Lines........................", +medMesh = 'dom' +medField = "vitesse" +aCutLines = myVisu.CutLinesOnField(myResult,'dom',VISU.NODE,medField,1.0) +aCutLines.SetOrientation(VISU.CutPlanes.XY, 0, 0) +aCutLines.SetOrientation2(VISU.CutPlanes.ZX, 0, 0) +aCutLines.SetNbLines(20) +if aCutLines is None : print "Error" +else : print "OK" + +print "Creating a Viewer.........................", +myViewManager = myVisu.GetViewManager(); +myView = myViewManager.Create3DView(); +if myView is None : print "Error" +else : print "OK" +myView.Display(aCutLines); +myView.FitAll(); + +aCutLinesSObj = salome.myStudy.FindObjectIOR(aCutLines.GetID()) +aFather = aCutLinesSObj.GetFather().GetFather(); + +print "Creating an Animation.....................", +myAnim = myVisu.CreateAnimation(myView); +if myAnim is None : print "Error" +else : print "OK" + +print "Animation.................................", +myAnim.addField(aFather); +myAnim.generatePresentations(0); +myAnim.generateFrames(); +myAnim.setSpeed(33) +myAnim.startAnimation(); + +myView.FitAll() +while 1: + time.sleep(1) + if not myAnim.isRunning(): + myAnim.stopAnimation() + break + +print "OK" diff --git a/examples/VISU_Example_04.py b/examples/VISU_Example_04.py new file mode 100644 index 00000000..71e40845 --- /dev/null +++ b/examples/VISU_Example_04.py @@ -0,0 +1,255 @@ +# Show some results presentations in different 3D and 2D viewers +# with different options (view parameters and display modes). +# Uses MED files fra.med and TimeStamps.med from ${KERNEL_ROOT_DIR}/examples directory. +# +# Pay attention to a viewer title to know its purpose. +# +# This script is equivalent to script VISU_SWIG/visu_view3d.py + +import os +import time +import math +import VISU +import SALOMEDS +from visu_gui import * + +aDelay = 1 + +myViewManager = myVisu.GetViewManager(); + +myView = myViewManager.Create3DView(); +myView.SetTitle("The window will be soon destroyed!") +print "myViewManager.Create3DView()" +time.sleep(aDelay) + +myView.Maximize() +print "myView.Maximize()" +time.sleep(aDelay) + +myView.Restore() +print "myView.Restore()" +time.sleep(aDelay) + +myView.Minimize() +print "myView.Minimize()" +time.sleep(aDelay) + +myViewManager.Destroy(myView) +print "myViewManager.Destroy(myView)" +time.sleep(aDelay) + + +medFile = "fra.med" +myFieldName = "VITESSE"; + +aMeshName ="LE VOLUME" +anEntity = VISU.NODE +aTimeStampId = 1 + +medFile = os.getenv('KERNEL_ROOT_DIR') + '/examples/' + medFile +myResult = myVisu.ImportFile(medFile) + +myView = myViewManager.Create3DView(); + +print "myView.SetBackground(...)" +aColor = SALOMEDS.Color(0.0,0.3,1.0) +myView.SetBackground(aColor); + +myView.SetTitle("The viewer will display ScalarMap") +print "myViewManager.Create3DView()" + +aScalarMap = myVisu.ScalarMapOnField(myResult,aMeshName,anEntity,myFieldName,aTimeStampId) + +myView.Display(aScalarMap); +print "myView.Display(aScalarMap)" +myView.SetFocalPoint([0,0,0]); +print "myView.SetFocalPoint(...)" +myView.SetParallelScale(2); +print "myView.SetParallelScale(...)" +myView.FitAll(); + +aMax = aScalarMap.GetMax() +aMin = aScalarMap.GetMin() +aDelta = (aMax - aMin)/2.0 +aNbColors = aScalarMap.GetNbColors() +aNbColors = 64 +for i in range(2,aNbColors) : + aScalarMap.SetNbColors(i) + aX = aMin + aDelta*i/aNbColors + aY = aMax - aDelta*i/aNbColors + aScalarMap.SetRange(aX,aY) + myView.Update(); + time.sleep(aDelay) + +aScalarMap.SetRange(aMin,aMax) + +print "myView.Update()" +myView.Update(); +print "myView.FitAll()" +myView.FitAll(); + + +myView = myViewManager.Create3DView(); +myView.SetTitle("Here we will display CutPlanes") + +print "myView.SetBackground(...)" +aColor = SALOMEDS.Color(0.0,0.7,0.0) +myView.SetBackground(aColor); + +aCutPlanes = myVisu.CutPlanesOnField(myResult,aMeshName,anEntity,myFieldName,aTimeStampId) +print "myVisu.CutPlanesOnField(...)" + +myView.DisplayOnly(aCutPlanes); +print "myView.DisplayOnly(aCutPlanes)" + +aPoint = myView.GetPointOfView(); +aPoint[0] = aPoint[0] + 10; +myView.SetPointOfView(aPoint); +print "myView.SetPointOfView(...)" +myView.ScaleView(VISU.View3D.YAxis,10.0); +myView.ScaleView(VISU.View3D.XAxis,3.0); +print "myView.ScaleView(...)" +time.sleep(aDelay) + +myView.FitAll(); + +aNbPlanes = aCutPlanes.GetNbPlanes() +aNbPlanes = 30 +aXAngle = aCutPlanes.GetRotateX() +aYAngle = aCutPlanes.GetRotateY() +anOrientation = aCutPlanes.GetOrientationType() +for i in range(aNbPlanes,1,-1) : + aCutPlanes.SetNbPlanes(i) + aX = math.pi/2.0*(aNbPlanes-i)/aNbPlanes + aY = math.pi/2.0*(aNbPlanes-i)/aNbPlanes + aCutPlanes.SetOrientation(anOrientation,aX,aY) + myView.Update(); + time.sleep(aDelay) + +aNbPlanes = 10 +aCutPlanes.SetOrientation(VISU.CutPlanes.ZX,0,0) +for i in range(1,aNbPlanes) : + aCutPlanes.SetNbPlanes(i) + myView.Update(); + time.sleep(aDelay) + +myView.SaveViewParams('AAA') +print "myView.SaveViewParams('AAA')" +time.sleep(aDelay) + +aCutPlanes.SetOrientation(VISU.CutPlanes.XY,0,0) +myView.RemoveScale(); + +print "myView.Update()" +myView.Update(); +print "myView.FitAll()" +myView.FitAll(); + + +myView = myViewManager.Create3DView(); +print "myViewManager.Create3DView()" + +myView.SetTitle("IsoSurface's viewer") + +print "myView.SetBackground(...)" +aColor = SALOMEDS.Color(1.0,0.7,0.0) +myView.SetBackground(aColor); +time.sleep(aDelay) + +aIsoSurfaces = myVisu.IsoSurfacesOnField(myResult, aMeshName, anEntity, myFieldName, aTimeStampId) + +myView.DisplayOnly(aIsoSurfaces); +myView.FitAll(); +print "myView.DisplayOnly(aCutPlanes)" +time.sleep(aDelay) + +aNbSurfaces = aIsoSurfaces.GetNbSurfaces() +aNbSurfaces = 32 +for i in range(2,aNbSurfaces) : + aIsoSurfaces.SetNbSurfaces(i) + myView.Update(); + time.sleep(aDelay) + +aIsoSurfaces.SetNbSurfaces(10) + +print "myView.Update()" +myView.Update(); +print "myView.FitAll()" +myView.FitAll(); + + +myView = myViewManager.Create3DView(); +myView.SetTitle("The viewer for CutLines") +print "myViewManager.Create3DView()" +time.sleep(aDelay) + +print "myView.SetBackground(...)" +aColor = SALOMEDS.Color(0.7,0.7,0.7) +myView.SetBackground(aColor); +time.sleep(aDelay) + +aCutLines = myVisu.CutLinesOnField(myResult, aMeshName, anEntity, myFieldName, aTimeStampId) +aCutLines.SetOrientation(VISU.CutPlanes.ZX,0,0) +aCutLines.SetOrientation2(VISU.CutPlanes.YZ,0,0) + +myView.DisplayOnly(aCutLines); +myView.FitAll(); +print "myView.DisplayOnly(aCutLines)" +time.sleep(aDelay) + +aSObj = myStudy.FindObjectIOR(aCutLines.GetID()) +aTable = myVisu.CreateTable( aSObj.GetID() ) +print "myVisu.CreateTable(...)" + +aTableView = myViewManager.CreateTableView(aTable) +aTableView.SetTitle('Changed Title') + +aContainer = myVisu.CreateContainer() +print "myVisu.CreateContainer(...)" + +aNbCurve = aTable.GetNbRows() - 1 +for i in range(2,aNbCurve): + aCurve = myVisu.CreateCurve( aTable, 1, i ) + print i, aCurve + aContainer.AddCurve(aCurve) + + +myView = myViewManager.CreateXYPlot(); +myView.SetTitle("The viewer for Curves from CutLines") +print "myViewManager.CreateXYPlot()" +time.sleep(aDelay) + +myView.Display(aContainer) + + +myView = myViewManager.Create3DView(); +myView.SetTitle("The viewer for Animation") +print "myViewManager.Create3DView()" +time.sleep(aDelay) + +medFile = "TimeStamps.med" +myFieldName = "vitesse"; + +medFile = os.getenv('KERNEL_ROOT_DIR') + '/examples/' + medFile +myResult = myVisu.ImportFile(medFile) + +anAnim = myVisu.CreateAnimation(myView); +aSObj = myStudy.FindObjectIOR(myResult.GetID()) +aSObj = aSObj.FindSubObject(1)[1] +aSObj = aSObj.FindSubObject(2)[1] +aSObj = aSObj.FindSubObject(2)[1] +anAnim.addField(aSObj) +anAnim.setPresentationType(0,VISU.TISOSURFACE) +print "Generate presentations" +anAnim.generatePresentations(0) +print "Generate frames" +anAnim.generateFrames() +print "Start Animation" +anAnim.setSpeed(99) +anAnim.startAnimation() +myView.FitAll() +while 1: + time.sleep(1+aDelay) + if not anAnim.isRunning(): + anAnim.stopAnimation() + break -- 2.39.2