X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FKERNEL_PY%2Fsalome_test.py;h=76dceacd467a9874ce0f7e58d8ff434286e39b21;hb=1119e0f3b0ead5c13e8f458fc9a75b7797420dd8;hp=fac61b8374766f789bac7371b8a610e3dec4189b;hpb=e6bfea36374791cd31c274a2f97df90dc60ddaf3;p=modules%2Fkernel.git diff --git a/src/KERNEL_PY/salome_test.py b/src/KERNEL_PY/salome_test.py index fac61b837..76dceacd4 100755 --- a/src/KERNEL_PY/salome_test.py +++ b/src/KERNEL_PY/salome_test.py @@ -1,95 +1,118 @@ -# SALOME SALOME_SWIG : binding of C++ implementation and Python +# -*- coding: iso-8859-1 -*- +# Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE # -# Copyright (C) 2003 CEA/DEN, EDF R&D -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS # +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -# File : salome_test.py -# Module : SALOME -print "Test the application loading GEOM, SMESH, VISU, MED, components and doing some" -print "operation within the components." +print +print "Perform quick test of the application by loading of the GEOM, SMESH, MED, PARAVIS" +print "components and doing some operation within the components." +print import salome -from salome import sg +import SALOME import SALOMEDS import os - +import sys import SALOME_ModuleCatalog +step = 1 + print "======================================================================" -print " Check, that there is no data of MED component in the Study " +print " %d. Initialize study " % step; step+=1 print "======================================================================" -MedComp = salome.myStudy.FindComponent("MED") -if MedComp is not None: - print "" - print "This script cannot work properly, because there are" - print "some MED component data already exists in the study." - print "Execution aborted." - print "" - raise RuntimeError, "Please, run this script only in a new empty study." +# initialize study +salome.salome_init() +# get study builder +builder = salome.myStudy.NewBuilder() +print "OK" + +print print "======================================================================" -print " Get Catalog " +print " %d. Retrieve module catalog " % step; step+=1 print "======================================================================" + obj = salome.naming_service.Resolve('Kernel/ModulCatalog') catalog = obj._narrow(SALOME_ModuleCatalog.ModuleCatalog) +if not catalog: + raise RuntimeError, "Can't access module catalog" +print "OK" + +print print "======================================================================" -print " Create Study " +print " %d. Check modules availability in the module catalog " % step; step+=1 print "======================================================================" -comp = catalog.GetComponent("GEOM") -if comp is None: - raise RuntimeError,"Component GEOM not found in Module Catalog." +for module in [ "GEOM", "SMESH", "MEDFactory", "PVSERVER"]: + print + print "--- Check %s ..." % module + comp = catalog.GetComponent(module) + if not comp: + raise RuntimeError, "Component %s is not found in Module Catalog." % module + print "OK" + pass -import geompy - -print "=================================" -print " create AttributeReal " -print "=================================" -A = geompy.myBuilder.FindOrCreateAttribute(geompy.father, "AttributeReal") -if A == None : - raise RuntimeError, "Can't create AttributeReal attribute" -A = A._narrow(SALOMEDS.AttributeReal) -A.SetValue(0.0001) -if A.Value() != 0.0001: - raise RuntimeError, "Error : wrong value of AttributeReal" - -print -print " =========== Test Geometry ==========================" print -print "===================================" -print " define a box" -print "===================================" - -box = geompy.MakeBox(0., 0., 0., 100., 200., 300.) -idbox = geompy.addToStudy(box,"box") +print "======================================================================" +print " %d. Test Data Server " % step; step+=1 +print "======================================================================" print -print "============= Test SMESH =============================" -print - -import StdMeshers +print "--- Create new component ..." +comp = builder.NewComponent("TEST") +if not comp: + raise RuntimeError, "Can't create new component" +print "OK" -comp = catalog.GetComponent("SMESH") -if comp is None: - raise RuntimeError,"Component SMESH not found in Module Catalog." +print +print "--- Create AttributeName ..." +A = builder.FindOrCreateAttribute(comp, "AttributeName") +if not A: + raise RuntimeError, "Can't create AttributeName attribute" +A.SetValue("TEST") +if A.Value() != "TEST": + raise RuntimeError, "Error : wrong value of AttributeName" +print "OK" -comp = catalog.GetComponent("MED") -if comp is None: - raise RuntimeError,"Component MED not found in Module Catalog." +print +print "--- Create AttributeReal ..." +A = builder.FindOrCreateAttribute(comp, "AttributeReal") +if not A: + raise RuntimeError, "Can't create AttributeReal attribute" +A.SetValue(0.0001) +if A.Value() != 0.0001: + raise RuntimeError, "Error : wrong value of AttributeReal" +print "OK" -import SMESH +print -geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM") -myBuilder = salome.myStudy.NewBuilder() +print "======================================================================" +print " %d. Test Geometry " % step; step+=1 +print "======================================================================" -smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH") -smeshgui = salome.ImportComponentGUI("SMESH") -smeshgui.Init(salome.myStudyId); +from salome.geom import geomBuilder +geompy = geomBuilder.New(salome.myStudy) ShapeTypeCompSolid = 1 ShapeTypeSolid = 2 @@ -99,401 +122,290 @@ ShapeTypeWire = 5 ShapeTypeEdge = 6 ShapeTypeVertex = 7 -# ---- define a box - +print +print "--- Create a box ..." box = geompy.MakeBox(0., 0., 0., 100., 200., 300.) -idbox = geompy.addToStudy(box,"box") +idbox = geompy.addToStudy(box, "box") +box_obj = salome.myStudy.FindObjectByPath("/Geometry/box") +if not box_obj: + raise RuntimeError, "Error : wrong value of AttributeReal" +print "OK" + +# ---- add shell from box in study +print +print "--- Extract shell ..." +subShellList = geompy.SubShapeAll(box, ShapeTypeShell) +shell = subShellList[0] +name = geompy.SubShapeName(shell, box) +idshell = geompy.addToStudyInFather(box, shell, name) +print name +print "OK" # ---- add first face of box in study - -subShapeList=geompy.SubShapeAll(box,ShapeTypeFace) -face=subShapeList[0] +print +print "--- Extract face ..." +subShapeList = geompy.SubShapeAll(box, ShapeTypeFace) +face = subShapeList[0] name = geompy.SubShapeName(face, box) +idface = geompy.addToStudyInFather(box, face, name) print name -idface=geompy.addToStudyInFather(box,face,name) - -# ---- add shell from box in study - -subShellList=geompy.SubShapeAll(box,ShapeTypeShell) -shell = subShellList[0] -name = geompy.SubShapeName(shell, box) -print name -idshell=geompy.addToStudyInFather(box,shell,name) +print "OK" # ---- add first edge of face in study - -edgeList = geompy.SubShapeAll(face,ShapeTypeEdge) -edge=edgeList[0]; +print +print "--- Extract edge ..." +edgeList = geompy.SubShapeAll(face, ShapeTypeEdge) +edge = edgeList[0]; name = geompy.SubShapeName(edge, face) +idedge = geompy.addToStudyInFather(face, edge, name) print name -idedge=geompy.addToStudyInFather(face,edge,name) +print "OK" +# ---- update object browser +if salome.hasDesktop(): + salome.sg.updateObjBrowser(True); -# ---- SMESH +print -# ---- create Hypothesis +print "======================================================================" +print " %d. Test Mesh " % step; step+=1 +print "======================================================================" -print "-------------------------- create Hypothesis" -print "-------------------------- LocalLength" -hypLen1 = smesh.CreateHypothesis( "LocalLength", "libStdMeshersEngine.so" ) +from salome.StdMeshers import StdMeshersBuilder +import SMESH +from salome.smesh import smeshBuilder + +smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH") +if salome.hasDesktop(): + smeshgui = salome.ImportComponentGUI("SMESH") + smeshgui.Init(salome.myStudyId); +else: + smesh = smeshBuilder.New(salome.myStudy) + +# ---- create hypotheses + +stdMeshersEngine = "StdMeshersEngine" + +print +print "--- Create hypotheses ..." + +print +print "------ LocalLength ..." +hypLen1 = smesh.CreateHypothesis( "LocalLength", stdMeshersEngine ) hypLen1.SetLength(100) print hypLen1.GetName() print hypLen1.GetId() print hypLen1.GetLength() +if salome.hasDesktop(): + smeshgui.SetName(salome.ObjectToID(hypLen1), "Local_Length_100") +print "OK" -smeshgui.SetName(salome.ObjectToID(hypLen1), "Local_Length_100") - -print "-------------------------- NumberOfSegments" -hypNbSeg1= smesh.CreateHypothesis( "NumberOfSegments", "libStdMeshersEngine.so" ) +print +print "------ NumberOfSegments ..." +hypNbSeg1= smesh.CreateHypothesis( "NumberOfSegments", stdMeshersEngine ) hypNbSeg1.SetNumberOfSegments(7) print hypNbSeg1.GetName() print hypNbSeg1.GetId() print hypNbSeg1.GetNumberOfSegments() +if salome.hasDesktop(): + smeshgui.SetName(salome.ObjectToID(hypNbSeg1), "NumberOfSegments_7") +print "OK" -smeshgui.SetName(salome.ObjectToID(hypNbSeg1), "NumberOfSegments_7") - -print "-------------------------- MaxElementArea" -hypArea1 = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" ) +print +print "------ MaxElementArea [1] ..." +hypArea1 = smesh.CreateHypothesis( "MaxElementArea", stdMeshersEngine ) hypArea1.SetMaxElementArea(2500) print hypArea1.GetName() print hypArea1.GetId() print hypArea1.GetMaxElementArea() +if salome.hasDesktop(): + smeshgui.SetName(salome.ObjectToID(hypArea1), "MaxElementArea_2500") +print "OK" -smeshgui.SetName(salome.ObjectToID(hypArea1), "MaxElementArea_2500") - -print "-------------------------- MaxElementArea" -hypArea2 = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" ) +print +print "------ MaxElementArea [2] ..." +hypArea2 = smesh.CreateHypothesis( "MaxElementArea", stdMeshersEngine ) hypArea2.SetMaxElementArea(500) print hypArea2.GetName() print hypArea2.GetId() print hypArea2.GetMaxElementArea() +if salome.hasDesktop(): + smeshgui.SetName(salome.ObjectToID(hypArea2), "MaxElementArea_500") +print "OK" + +# ---- create algorithms -smeshgui.SetName(salome.ObjectToID(hypArea2), "MaxElementArea_500") +print +print "--- Create algorithms ..." -print "-------------------------- Regular_1D" -algoReg = smesh.CreateHypothesis( "Regular_1D", "libStdMeshersEngine.so" ) -listHyp=algoReg.GetCompatibleHypothesis() +print +print "------ Regular_1D ..." +algoReg = smesh.CreateHypothesis( "Regular_1D", stdMeshersEngine ) +listHyp = algoReg.GetCompatibleHypothesis() for hyp in listHyp: print hyp print algoReg.GetName() print algoReg.GetId() +if salome.hasDesktop(): + smeshgui.SetName(salome.ObjectToID(algoReg), "Regular_1D" ) +print "OK" -smeshgui.SetName(salome.ObjectToID(algoReg), "Regular_1D" ) - -print "-------------------------- MEFISTO_2D" -algoMef = smesh.CreateHypothesis( "MEFISTO_2D", "libStdMeshersEngine.so" ) +print +print "------ MEFISTO_2D ..." +algoMef = smesh.CreateHypothesis( "MEFISTO_2D", stdMeshersEngine ) listHyp=algoMef.GetCompatibleHypothesis() for hyp in listHyp: print hyp print algoMef.GetName() print algoMef.GetId() +if salome.hasDesktop(): + smeshgui.SetName(salome.ObjectToID(algoMef), "MEFISTO_2D" ) +print "OK" -smeshgui.SetName(salome.ObjectToID(algoMef), "MEFISTO_2D" ) - -# ---- add hypothesis to box +# ---- create mesh on the box, apply hypotheses / algorithms -print "-------------------------- add hypothesis to box" -box=salome.IDToObject(idbox) +print +print "--- Create mesh on the box ..." mesh = smesh.CreateMesh(box) +if salome.hasDesktop(): + smeshgui.SetName( salome.ObjectToID(mesh), "MeshBox" ); +ret = mesh.AddHypothesis(box, algoReg) +ret = mesh.AddHypothesis(box, algoMef) +ret = mesh.AddHypothesis(box, hypNbSeg1) +ret = mesh.AddHypothesis(box, hypArea1) +print "OK" -smeshgui.SetName( salome.ObjectToID(mesh), "MeshBox" ); - -ret=mesh.AddHypothesis(box,algoReg) -print ret -ret=mesh.AddHypothesis(box,algoMef) -print ret - - -ret=mesh.AddHypothesis(box,hypNbSeg1) -print ret -ret=mesh.AddHypothesis(box,hypArea1) -print ret +# ---- create submesh on the edge, add hypothesis - -# ---- add hypothesis to edge - -print "-------------------------- add hypothesis to edge" -edge=salome.IDToObject(idedge) -submesh=mesh.GetSubMesh(edge, "SubMeshEdge") - -ret=mesh.AddHypothesis(edge,algoReg) -print ret -ret=mesh.AddHypothesis(edge,hypLen1) -print ret - -print "-------------------------- add hypothesis to face" -face=salome.IDToObject(idface) -submesh = mesh.GetSubMesh(face, "SubMeshFace") - -ret=mesh.AddHypothesis(face,hypArea2) -print ret - -smesh.Compute(mesh, box) -sg.updateObjBrowser(1); - -print -print "============= Test Supervisor =============================" print +print "--- Add 1D sub-mesh on the edge ..." +submesh = mesh.GetSubMesh(edge, "SubMeshEdge") +ret = mesh.AddHypothesis(edge, algoReg) +ret = mesh.AddHypothesis(edge, hypLen1) +print "OK" -comp = catalog.GetComponent("SUPERV") -if comp is None: - raise RuntimeError,"Component SUPERV not found in Module Catalog." +# ---- create submesh on the edge, add hypothesis -from SuperV import * -import SALOMEDS -myStudy = salome.myStudy -myBuilder = myStudy.NewBuilder() - -SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV") -father = myStudy.FindComponent("SUPERV") -if father is None: - father = myBuilder.NewComponent("SUPERV") - A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName"); - FName = A1._narrow(SALOMEDS.AttributeName) - FName.SetValue( salome.sg.getComponentUserName("SUPERV") ) - A2 = myBuilder.FindOrCreateAttribute(father, "AttributePixMap"); - aPixmap = A2._narrow(SALOMEDS.AttributePixMap); - aPixmap.SetPixMap( "ICON_OBJBROWSER_Supervision" ); - myBuilder.DefineComponentInstance(father,SuperVision) - -def addStudy(ior): - dataflow = SuperVision.getStreamGraph(ior) - name=dataflow.Name() - itr = myStudy.NewChildIterator(father) - while itr.More(): - item=itr.Value() - res,A=item.FindAttribute("AttributeName") - if res: - aName = A._narrow(SALOMEDS.AttributeName) - if aName.Value() == name : - print myBuilder.FindOrCreateAttribute(item, "AttributeIOR") - A = myBuilder.FindOrCreateAttribute(item, "AttributeIOR") - print "A = ", A - if A is not None : - #res,A = myBuilder.FindOrCreateAttribute(item, "AttributeIOR") - anIOR = A._narrow(SALOMEDS.AttributeIOR); - print "anIOR.SetValue(dataflow.getIOR())" - anIOR.SetValue(dataflow.getIOR()) - return - itr.Next() - obj = myBuilder.NewObject(father) - A=myBuilder.FindOrCreateAttribute(obj, "AttributeName") - aName=A._narrow(SALOMEDS.AttributeName) - aName.SetValue(name) - A=myBuilder.FindOrCreateAttribute(obj, "AttributeIOR") - anIOR = A._narrow(SALOMEDS.AttributeIOR) - anIOR.SetValue(dataflow.getIOR()) +print +print "--- Add 2D sub-mesh on the face ..." +submesh = mesh.GetSubMesh(face, "SubMeshFace") +ret = mesh.AddHypothesis(face, hypArea2) +print "OK" -import os -dir= os.getenv("DATA_DIR") -if dir == None: - raise RuntimeError, "DATA_DIR is not defined" -xmlfile = dir + "/Superv/Graphs/GraphGeomEssaiGates.xml" -print "Load dataflow from the file : " -print xmlfile +# ---- compute mesh print +print "--- Compute mesh ..." +smesh.Compute(mesh, box) +print "OK" -myGraph = StreamGraph ( xmlfile ) - -# This DataFlow is "valid" : no loop, correct links between Nodes etc... -print "myGraph.IsValid() = ", myGraph.IsValid() - -# Get Nodes -myGraph.PrintNodes() - -# This DataFlow is "executable" : all pending Ports are defined with Datas -print myGraph.IsExecutable() - -# Starts only execution of that DataFlow and gets control immediatly -print myGraph.Run() - -# That DataFlow is running ==> 0 (false) -print myGraph.IsDone() - -# Events of execution : -aStatus,aNode,anEvent,aState = myGraph.Event() -while aStatus : - print aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState - aStatus,aNode,anEvent,aState = myGraph.Event() -print "myGraph.IsDone() = ",myGraph.IsDone() - -# Wait for Completion (but it is already done after event loop ...) -print "Done : ",myGraph.DoneW() - -print " " -#print "Type : print myGraph.IsDone()" -#print " If execution is finished ==> 1 (true)" -res=myGraph.IsDone() -if res != 1: - raise RuntimeError, "myGraph.Run() is not done" - -print " " -print "Type : myGraph.PrintPorts()" -print " to see input and output values of the graph" -myGraph.PrintPorts() - -# Export will create newsupervisionexample.xml and the corresponding .py file -tmpdir=os.getenv("TmpDir") -if tmpdir is None: - tmpdir="/tmp" -file = tmpdir + "/newsupervisionexample" -print "--------------\n"+file+"\n--------------\n" -myGraph.Export(file) - -ior = salome.orb.object_to_string(myGraph.G) -addStudy(ior) - -GraphName = myGraph.Name() -print "Befor save ", -#nodes = myGraph.Nodes() -nodes = myGraph.G.Nodes().FNodes -length_bs = len(nodes) -print "ListOfNodes length = ", length_bs -names=[] -for node in nodes: - names.append(node.Name()) -print names - -# Graph creation -GraphInLines = StreamGraph( 'GraphInLines' ) -GraphInLines.SetName( 'GraphInLines' ) -GraphInLines.SetAuthor( '' ) -GraphInLines.SetComment( '' ) -GraphInLines.Coords( 0 , 0 ) - -# Creation of InLine Nodes -PyAdd = [] -PyAdd.append( 'def Add(a,b) : ' ) -PyAdd.append( ' return a+b ' ) -PyAdd.append( '' ) -Add = GraphInLines.INode( 'Add' , PyAdd ) -Add.InPort( 'a' , 'long' ) -Add.InPort( 'b' , 'long' ) -Add.OutPort( 'f' , 'long' ) -Add.SetName( 'Add' ) -Add.SetAuthor( '' ) -Add.SetComment( 'Python function' ) -Add.Coords( 351 , 77 ) -PySub = [] -PySub.append( 'def Sub(a,b) : ' ) -PySub.append( ' return a-b ' ) -PySub.append( '' ) -Sub = GraphInLines.INode( 'Sub' , PySub ) -Sub.InPort( 'a' , 'long' ) -Sub.InPort( 'b' , 'long' ) -Sub.OutPort( 'f' , 'long' ) -Sub.SetName( 'Sub' ) -Sub.SetAuthor( '' ) -Sub.SetComment( 'Python function' ) -Sub.Coords( 86 , 333 ) -PyMul = [] -PyMul.append( 'def Mul(a,b) : ' ) -PyMul.append( ' return a*b ' ) -Mul = GraphInLines.INode( 'Mul' , PyMul ) -Mul.InPort( 'a' , 'long' ) -Mul.InPort( 'b' , 'long' ) -Mul.OutPort( 'Result' , 'long' ) -Mul.SetName( 'Mul' ) -Mul.SetAuthor( '' ) -Mul.SetComment( 'Python function' ) -Mul.Coords( 616 , 247 ) - -# Creation of intermediate Output variables and of Control Links -Addf = Add.Port( 'f' ) -Mula = GraphInLines.Link( Addf , Mul.Port( 'a' ) ) -Mula.AddCoord( 1 , 570 , 356 ) -Mula.AddCoord( 2 , 570 , 186 ) -Subf = Sub.Port( 'f' ) -Mulb = GraphInLines.Link( Subf , Mul.Port( 'b' ) ) -Mulb.AddCoord( 1 , 282 , 376 ) -Mulb.AddCoord( 2 , 282 , 442 ) -Addb = GraphInLines.Link( Subf , Add.Port( 'b' ) ) -Addb.AddCoord( 1 , 283 , 209 ) -Addb.AddCoord( 2 , 283 , 374 ) -Addb.AddCoord( 3 , 283 , 442 ) - -# Creation of Input datas -Adda = Add.Input( 'a' , 1) -Suba = Sub.Input( 'a' , 3) -Subb = Sub.Input( 'b' , 4) - -# Creation of Output variables -MulResult = Mul.Port( 'Result' ) - -GraphInLines.Run() - -GraphInLines.DoneW() - -GraphInLines.PrintPorts() - -sg.updateObjBrowser(1); +# ---- update object browser +if salome.hasDesktop(): + salome.sg.updateObjBrowser(True); -print -print "============= Test VISU and MED =============================" print -comp = catalog.GetComponent("VISU") -if comp is None: - raise RuntimeError,"Component VISU not found in Module Catalog." +print "======================================================================" +print " %d. Test Med " % step; step+=1 +print "======================================================================" -import sys -import SALOMEDS -import SALOME -import SALOME_MED -import VISU +import medcalc +#from medcalc import properties +from medcalc.fieldproxy import FieldProxy -import visu_gui +medcalc.medconsole.setConsoleGlobals(globals()) +try: + med_root=os.environ["MED_ROOT_DIR"] +except KeyError, e: + raise RuntimeError("MED_ROOT_DIR should be defined to load the test data") + +filepath = os.path.join(med_root,"share","salome","resources","med","medcalc_testfiles","smallmesh_varfield.med") +medcalc.medio.LoadDataSource(filepath) +fieldHandlerList = medcalc.medevents.dataManager.getFieldHandlerList() + +fieldHandler0 = fieldHandlerList[0] +print "---Field Handler 0:\n%s" % fieldHandler0 +fieldHandler1 = fieldHandlerList[1] +print "---Field Handler 1:\n%s" % fieldHandler1 + +print "--- The addition of two fields can be done using field handler directly." +addFieldHandler = medcalc.fieldproxy.calculator.add(fieldHandler0,fieldHandler1) +print "--- Result handler:\n%s" % addFieldHandler + +print "--- Or with a field proxy that easy the writing of operations." +fieldProxy0 = FieldProxy(fieldHandler0) +fieldProxy1 = FieldProxy(fieldHandler1) + +resHandler = fieldProxy0 + fieldProxy1 +if resHandler is None: + print "Error: result handler is None!" +else: + print "--- Result handler:\n%s" % resHandler + print "OK" -medFileName = "pointe.med" -medFile = os.getenv('DATA_DIR') + '/MedFiles/' + medFileName -print "Load ", medFile +print -studyCurrent = salome.myStudyName -med_comp = salome.lcc.FindOrLoadComponent("FactoryServer", "MED") -myVisu = salome.lcc.FindOrLoadComponent("FactoryServer", "VISU") +print "======================================================================" +print " %d. Test Paravis " % step; step+=1 +print "======================================================================" -try: - if os.access(medFile, os.R_OK) : - if not os.access(medFile, os.W_OK) : - import random - medFileNew = "/tmp/" + str(random.randint(0,1000000)) + "_" + medFileName - print " -- Copy " + medFile + " to " + medFileNew - os.system("cp "+ medFile + " " + medFileNew) - medFile = medFileNew - os.system("chmod 755 " + medFile) - - if os.access(medFile, os.W_OK) : - med_comp.readStructFileWithFieldType(medFile,studyCurrent) - med_obj = visu_gui.visu.getMedObjectFromStudy() - print "med_obj - ", med_obj - - myField1 = visu_gui.visu.getFieldObjectFromStudy(2,1) - aMeshName = "maa1" - anEntity = VISU.NODE - aTimeStampId = -1 - - myResult1 = myVisu.ImportMedField(myField1) - aMesh1 = myVisu.MeshOnEntity(myResult1, aMeshName, anEntity); - - aScalarMap1= myVisu.ScalarMapOnField(myResult1, aMeshName, anEntity, myField1.getName(), aTimeStampId) - - myResult2 = myVisu.ImportFile(medFile); - aMesh2 = myVisu.MeshOnEntity(myResult2, aMeshName, anEntity); - - aTimeStampId = 3 - aScalarMap2= myVisu.ScalarMapOnField(myResult2, aMeshName, anEntity, myField1.getName(), aTimeStampId) - - sg.updateObjBrowser(0) - else : print "We have no permission to rewrite medFile, so readStructFileWithFieldType can't open this file"; - else : print "We have no permission to read medFile, it will not be opened"; - -except: - if sys.exc_type == SALOME.SALOME_Exception : - print "There is no permission to read " + medFile - else : - print sys.exc_type - print sys.exc_value - print sys.exc_traceback - -sg.updateObjBrowser(1); +if salome.hasDesktop(): # in gui mode + + print "**** Importing pvserver... It can take some time." + import pvserver + import pvsimple + + #====================Stage1: Importing MED file==================== + + print "**** Stage1: Importing MED file" + + print 'Import "ResOK_0000.med"...............', + medFileName = "ResOK_0000.med" + medFile = os.path.join(os.getenv('DATA_DIR'), 'MedFiles', medFileName) + pvsimple.MEDReader( FileName=medFile ) + med_reader = pvsimple.GetActiveSource() + + if med_reader is None: + print "FAILED" + else: + print "OK" + + #====================Stage2: Displaying presentation=============== + + print "**** Stage2: Displaying presentation" + + print 'Get view...................', + view = pvsimple.GetRenderView() + if view is None: + print "FAILED" + else: + print "OK" + + print "Creating presentation.......", + prs = pvsimple.GetRepresentation(med_reader) + if prs is None: + print "FAILED" + else: + rep_list = view.Representations + for rep in rep_list: + if hasattr(rep, 'Visibility'): + rep.Visibility = (rep == prs) + pvsimple.Render(view=view) + + # ---- surface representation + prs.SetRepresentationType('Surface') + view.ResetCamera() + + print "OK" + +else: # not in gui mode, Paravis can not be tested + + print + print "PARAVIS module requires SALOME to be running in GUI mode." + print + print "Skipping test for PARAVIS..." + pass + +# ---- update object browser +if salome.hasDesktop(): + salome.sg.updateObjBrowser(True);