import sys, os, shutil, pickle, tempfile
-import main, genereCrack, Zset
-import utilityFunctions as uF
+from Zcracks import main, genereCrack, Zset
+from Zcracks import utilityFunctions as uF
+ os.environ['QT_QPA_PLATFORM_PLUGIN_PATH']=os.path.join(os.environ['QTDIR'],'plugins','platforms')
+
+ if 'MESHGEMSHOME' in os.environ:
+ meshgemsdir=os.environ['MESHGEMSHOME']
+ if len(meshgemsdir) > 0:
+ meshgems=meshgemsdir.split(os.sep)[-1]
+ uF.removeFromSessionPath('LD_LIBRARY_PATH', meshgems)
+
#commande="/bin/bash -c ""source $HOME/zebulon/Z8.6.6_NEW/do_config_bash"""
#os.system(commande)
def IHM():
- try:
- from PyQt5.QtWidgets import QApplication
- except:
- from PyQt4.QtGui import QApplication
+ from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
myapp = main.ShipHolderApplication()
def SCRIPT(dataFile=None, data=None, dim=3, names=None):
if dim!=3 and dim!=2:
- print 'ERROR'
+ print('ERROR')
return(False)
if dataFile==None and data==None:
- print 'One of dataFile or data is mandatory'
+ print('One of dataFile or data is mandatory')
return(False)
if data==None: data=pickle.load(open(dataFile,'r'))
- print data
+ print(data)
- tmpdir=tempfile.mkdtemp()
- uF.removeFromSessionPath('LD_LIBRARY_PATH', 'Meshgems-2111')
+ tmpdir=tempfile.mkdtemp(prefix='tmpZcracks')
if names==None: names={'saneGeoName':'salome_sane', 'crackGeoName':'salome_crack', 'crackedGeoName':'salome_cracked'}
for f in [crackMed, crackedMed, saneGeo, crackGeo, crackedGeo]:
if os.path.isfile(f): os.remove(f)
- print crackMed
+ print(crackMed)
genereCrack.main(data, crackMed)
goOn=os.path.isfile(crackMed)
from Zcracks import genereCrack, Zset
from Zcracks import utilityFunctions as uF
-import genereCube
+from . import genereCube
from math import sqrt
#tmpdir = "/local00/home/B27118/projets/Zcracks/Zcracks/casTests/tmpdir"
#if not os.path.isdir(tmpdir): os.mkdir(tmpdir)
- tmpdir=tempfile.mktemp(prefix='tmpZcracks')
+ tmpdir=tempfile.mkdtemp(prefix='tmpZcracks')
-print "tmpdir=", tmpdir
+print("tmpdir=", tmpdir)
- meshgemsdir=os.environ('MESHGEMSHOME')
- if len(meshgemsdir) > 0:
- meshgems=string.split(meshgemsdir,os.sep)[-1]
- uF.removeFromSessionPath('LD_LIBRARY_PATH', meshgems)
+ #meshgemsdir=os.environ('MESHGEMSHOME')
+ #if len(meshgemsdir) > 0:
+ #meshgems=string.split(meshgemsdir,os.sep)[-1]
+ #uF.removeFromSessionPath('LD_LIBRARY_PATH', meshgems)
def LAUNCH(listCas=[]):
- if type(listCas)!=list: listCas=[listCas]
+ if not isinstance(listCas, list): listCas=[listCas]
N=20
L=1.
OK=[]
NOOK=[]
- for s in list(synthese.keys()):
- for s in synthese.keys():
++ for s in synthese:
if synthese[s]:
OK.append(s)
else:
NOOK.append(s)
- print 'OK:'
- print OK
- print ' '
- print 'NOOK:'
- print NOOK
- print ' '
+ print('OK:')
+ print(OK)
+ print(' ')
+ print('NOOK:')
+ print(NOOK)
+ print(' ')
return(synthese)
import sys, pickle, tempfile, shutil
from os import path, getpid, environ, remove, system
- try:
- from PyQt5.QtCore import *
- from PyQt5.QtGui import *
- from PyQt5.QtWidgets import *
- except:
- from PyQt4.QtCore import *
- from PyQt4.QtGui import *
+ from PyQt5.QtCore import *
+ from PyQt5.QtGui import *
+ from PyQt5.QtWidgets import *
-import utilityFunctions as uF
-import genereCrack, Zset, output, zcracks_ui
+from . import utilityFunctions as uF
+from . import genereCrack, Zset, output, zcracks_ui
-from output import message, init
-from zcracks_ui import Ui_Zui
+from .output import message, init
+from .zcracks_ui import Ui_Zui
# ---------------------
# ---------------------
- uF.removeFromSessionPath('LD_LIBRARY_PATH', 'Meshgems-2111')
-
def stringToFloat(string, typ=float):
if str(string).replace(' ','')=='':
out=[]
else:
- out=map(typ, str(string).split())
+ out=list(map(typ, str(string).split()))
return(out)
def addExtension(string, extension):
self.verbose=1
- #self.connect(self.ui.CBQuad, SIGNAL("toggled(bool)"),self.pressQuad)
- #self.connect(self.ui.btReset, SIGNAL("clicked()"),self.pressReset)
- #self.connect(self.ui.btCancel, SIGNAL("clicked()"),self.pressCancel)
- #self.connect(self.ui.btApply, SIGNAL("clicked()"),self.pressApply)
- #self.connect(self.ui.btApplyClose, SIGNAL("clicked()"),self.pressApplyClose)
- #self.connect(self.ui.btLoad, SIGNAL("clicked()"),self.pressCharger)
- #self.connect(self.ui.btSave, SIGNAL("clicked()"),self.pressSauver)
- #self.connect(self.ui.btLoadCracked, SIGNAL("clicked()"),self.pressLoadCracked)
- #self.connect(self.ui.btLoadSane, SIGNAL("clicked()"),self.pressLoadSane)
-
- #self.connect(self.ui.btGrVol, SIGNAL("clicked()"),self.pressLoadGroupVOL)
- #self.connect(self.ui.btGrFace, SIGNAL("clicked()"),self.pressLoadGroupFACE)
- #self.connect(self.ui.btGrEdge, SIGNAL("clicked()"),self.pressLoadGroupEDGE)
- #self.connect(self.ui.btGrNode, SIGNAL("clicked()"),self.pressLoadGroupNODE)
- #self.connect(self.ui.btGrAll, SIGNAL("clicked()"),self.pressLoadGroupALL)
- #self.connect(self.ui.btVisu, SIGNAL("clicked()"),self.pressVisu)
-
- #self.connect(self.ui.CBAdvanced, SIGNAL("toggled(bool)"),self.pressAdvanced)
-
self.ui.CBQuad.toggled.connect(self.pressQuad)
self.ui.btReset.clicked.connect(self.pressReset)
self.ui.btCancel.clicked.connect(self.pressCancel)
def pressQuad(self):
if self.ui.CBQuad.isChecked():
self.ui.CBBarsoum.setEnabled(True)
- self.ui.valGradation.setText(QString('2.3'))
+ self.ui.valGradation.setText('2.3')
else:
- self.ui.valGradation.setText(QString('1.3'))
+ self.ui.valGradation.setText('1.3')
self.ui.CBBarsoum.setChecked(False)
self.ui.CBBarsoum.setEnabled(False)
tab=onglet.findChildren(QTableWidget)[0]
for irow in range(tab.rowCount()):
if tab.item(irow,0) != None:
- tab.item(irow,0).setText(QString(''))
- self.ui.valGradation.setText(QString('1.3'))
- self.ui.valLayers.setText(QString('5'))
- self.ui.valIterations.setText(QString('2'))
+ tab.item(irow,0).setText('')
+ self.ui.valGradation.setText('1.3')
+ self.ui.valLayers.setText('6')
+ self.ui.valIterations.setText('2')
self.ui.CBIs2D.setChecked(False)
self.ui.CBRefine.setChecked(False)
fileNames = fileDiag.selectedFiles()
filedef = fileNames[0]
filedef = addExtension(str(filedef), 'med')
- self.ui.valCrackedName.setText(QString(filedef))
+ self.ui.valCrackedName.setText(filedef)
def pressLoadSane(self):
if fileDiag.exec_() :
fileNames = fileDiag.selectedFiles()
filedef = fileNames[0]
- self.ui.valSaneName.setText(QString(filedef))
+ self.ui.valSaneName.setText(filedef)
def pressCharger(self):
for cont, obj in enumerate(self.lineEditObjects):
if self.lineEditTypes[cont] in [float, int]:
- obj.setText(QString(self.data['TXT'+self.lineEditNames[cont]]))
+ obj.setText(self.data['TXT'+self.lineEditNames[cont]])
else:
- obj.setText(QString(self.data[self.lineEditNames[cont]]))
+ obj.setText(self.data[self.lineEditNames[cont]])
- self.ui.CBQuad.setChecked(True if 'quad' in self.data.keys() and self.data['quad'] else False)
- self.ui.CBBarsoum.setChecked(True if 'barsoum' in self.data.keys() and self.data['barsoum'] else False)
- self.ui.CBIs2D.setChecked(True if 'is2D' in self.data.keys() and self.data['is2D'] else False)
- self.ui.CBRefine.setChecked(True if 'refine' in self.data.keys() and self.data['refine'] else False)
+ self.ui.CBQuad.setChecked(True if 'quad' in list(self.data.keys()) and self.data['quad'] else False)
+ self.ui.CBBarsoum.setChecked(True if 'barsoum' in list(self.data.keys()) and self.data['barsoum'] else False)
+ self.ui.CBIs2D.setChecked(True if 'is2D' in list(self.data.keys()) and self.data['is2D'] else False)
+ self.ui.CBRefine.setChecked(True if 'refine' in list(self.data.keys()) and self.data['refine'] else False)
-
-
-
-
- #if self.data['quad']: self.ui.CBQuad.setChecked(True)
- #if self.data['barsoum']: self.ui.CBBarsoum.setChecked(True)
- #if self.data['is2D']: self.ui.CBIs2D.setChecked(True)
- #if self.data['refine']: self.ui.CBRefine.setChecked(True)
self.setTableParameters()
if not test2:
message('A','No mesh file to visualize')
else:
- print medit+' %s' %meshFile2
+ print(medit+' %s' %meshFile2)
system(medit+' %s' %meshFile2)
else:
- print medit+' %s' %meshFile1
+ print(medit+' %s' %meshFile1)
system(medit+' %s' %meshFile1)
return()
if tab.item(irow,0) == None:
item = QTableWidgetItem()
tab.setItem(irow, 0, item)
- tab.item(irow,0).setText(QString(self.data['TXTcrack'][str(self.ui.tabWidget.tabText(iongl))][str(label)]))
+ tab.item(irow,0).setText(self.data['TXTcrack'][str(self.ui.tabWidget.tabText(iongl))][str(label)])
if str(self.ui.tabWidget.tabText(iongl)) == self.data['TXTcrack']['actif']:
self.ui.tabWidget.setCurrentWidget(onglet)
for group in objetSain.GetGroups():
if (self.GroupToLoad in ['VOL','ALL']) and (group.GetType()==SMESH.VOLUME):
- groupsVOL+=group.GetName().replace(' ','')+" "
+ groupsVOL+=self.cleanGroupName(group)
nGr+=1
if (self.GroupToLoad in ['FACE','ALL']) and (group.GetType()==SMESH.FACE):
- groupsFAC+=group.GetName().replace(' ','')+" "
+ groupsFAC+=self.cleanGroupName(group)
nGr+=1
if (self.GroupToLoad in ['EDGE','ALL']) and (group.GetType()==SMESH.EDGE):
- groupsEDG+=group.GetName().replace(' ','')+" "
+ groupsEDG+=self.cleanGroupName(group)
nGr+=1
if (self.GroupToLoad in ['NODE','ALL']) and (group.GetType()==SMESH.NODE):
- groupsNOD+=group.GetName().replace(' ','')+" "
+ groupsNOD+=self.cleanGroupName(group)
nGr+=1
if groupsVOL!='': self.ui.valGrVol.setText(groupsVOL)
remove(f)
except:
pass
+
+ def cleanGroupName(self, group):
+ name=group.GetName()
+ while name.endswith(' '): name=name[:-1]
+ if ' ' in name:
+ message('A','%s group has a space in its name --> ignored' %name)
+ return('')
+ else:
+ return(name+" ")
+
+ def checkNamesSpaces(self, names):
+ if type(names) is str: names=[names]
+ ok=True
+ for n in names:
+ if ' ' in n:
+ message('E','%s has a space in its name, please remove it' %n, goOn=True)
+ ok=False
+ return(ok)
# ---------------------------------
import numpy, subprocess, sys
from os import remove, getpid, path, environ
-from output import message
+from .output import message
def calcCoordVectors(normalIN, directionIN):
V3TEMP=numpy.cross(normalIN,directionIN)
def testStrictRange(x, inf=0.0, sup=False):
test=False
- c1=(type(x)==list)
+ c1=(isinstance(x, list))
if c1:
c2=(len(x)==1)
if c2:
- c3=(type(x[0])==type(inf))
+ c3=(isinstance(x[0], type(inf)))
if c3:
c4=(x[0]>inf)
c5=True
def test3dVector(x):
test=False
- c1=(type(x)==list)
+ c1=(isinstance(x, list))
if c1:
c2=(len(x)==3)
if c2:
- c3=(type(x[0])==float)
- c4=(type(x[1])==float)
- c5=(type(x[2])==float)
+ c3=(isinstance(x[0], float))
+ c4=(isinstance(x[1], float))
+ c5=(isinstance(x[2], float))
if c3 and c4 and c5:
test=True
return(test)
def testRange(x, inf=0.0, sup=False):
test=False
- c1=(type(x)==list)
+ c1=(isinstance(x, list))
if c1:
c2=(len(x)==1)
if c2:
- c3=(type(x[0])==type(inf))
+ c3=(isinstance(x[0], type(inf)))
if c3:
c4=(x[0]>=inf)
c5=True
smesh = smeshBuilder.New(theStudy)
([mesh], status) = smesh.CreateMeshesFromMED(meshFile)
-
+
+ if mesh.NbVolumes()>0:
+ case2D=False
+ mesh.Reorient2DBy3D( [ mesh ], mesh, 1 )
+ else:
+ case2D=True
+
mesh=cleanGroups(mesh)
# Node color status
while ifChanged :
ifChanged=False
for elemId in elemList[0]:
- minColor=sys.maxint
- maxColor=-sys.maxint
+ minColor=sys.maxsize
+ maxColor=-sys.maxsize
for elemNodeId in mesh.GetElemNodes(elemId) :
nodeColor=colorList[elemNodeId-1]
if nodeColor<minColor : minColor=nodeColor
def getMaxAspectRatio(tmpdir):
logFile=path.join(tmpdir,'MESHING_OUTPUT')
- print logFile
+ print(logFile)
if not path.isfile(logFile): return(-1)
import re
return(float(maxAR))
- #def extendElsets(meshFile):
- #if not path.isfile(meshFile):
- #message('E','Mesh med file is not valid')
- #return(-1)
-
- #import SMESH, salome
- ##salome.salome_init()
- #theStudy = salome.myStudy
- #from salome.smesh import smeshBuilder
- #smesh = smeshBuilder.New(theStudy)
-
- #([mesh], status) = smesh.CreateMeshesFromMED(meshFile)
-
- ## Node color status
- #nodeList=mesh.GetNodesId()
- #colorList=[0]*len(nodeList)
-
- ## Init using SIDE0 SIDE1
- #for group in mesh.GetGroups():
- #if group.GetType()==SMESH.FACE :
- #color=0
- #if group.GetName()[0:4]=='SIDE0' :
- #color=1
- #elif group.GetName()[0:4]=='SIDE1' :
- #color=2
- #else : continue
- ## Get faces
- #faces=group.GetIDs()
- ## Set faces nodes to given color
- #for face_id in faces :
- #for face_node_id in mesh.GetElemNodes(face_id) :
- #colorList[face_node_id-1]=color
-
- ## Propagates color using elem connectivity
- ## Always propagates max color
- #volElemList=mesh.GetElementsByType(SMESH.VOLUME)
- #ifChanged=True
- #while ifChanged :
- #ifChanged=False
- #minColor=100
- #maxColor=0
- #for elemId in volElemList:
- #for elemNodeId in mesh.GetElemNodes(elemId) :
- #nodeColor=colorList[elemNodeId-1]
- #if nodeColor<minColor : minColor=nodeColor
- #if nodeColor>maxColor : maxColor=nodeColor
- #if minColor!=maxColor :
- #ifChanged = True
- #for elemNodeId in mesh.GetElemNodes(elemId) :
- #colorList[elemNodeId-1]=maxColor
-
- #velem0 = []
- #velem1 = []
- #for elemId in volElemList:
- #elemNodesId=mesh.GetElemNodes(elemId)
- #elemColor=colorList[elemNodesId[0]-1]
- #if(elemColor==1) : velem0.append(elemId)
- #if(elemColor==2) : velem1.append(elemId)
-
- #mesh.MakeGroupByIds('SIDE_co',SMESH.VOLUME,velem0)
- #mesh.MakeGroupByIds('SIDE_ext',SMESH.VOLUME,velem1)
-
- #surfElemList=mesh.GetElementsByType(SMESH.FACE)
- #selem0 = []
- #selem1 = []
- #nbelem0=0
- #nbelem1=0
-
- #for elemId in surfElemList:
- #elemNodesId=mesh.GetElemNodes(elemId)
- #elemColor=colorList[elemNodesId[0]-1]
- #if(elemColor==1) : selem0.append(elemId)
- #if(elemColor==2) : selem1.append(elemId)
-
- #mesh.MakeGroupByIds('SIDE_co',SMESH.FACE,selem0)
- #mesh.MakeGroupByIds('SIDE_ext',SMESH.FACE,selem1)
-
- #maxAR=0.
- #for elem in volElemList:
- #maxAR=max(mesh.GetAspectRatio(elem),maxAR)
- #for elem in surfElemList:
- #maxAR=max(mesh.GetAspectRatio(elem),maxAR)
-
- #mesh.ExportMED(meshFile, 0, SMESH.MED_V2_2, 1, None ,1)
- #return(maxAR)
def removeFromSessionPath(envVar, patern):
- if type(patern) is not list: patern=[patern]
- if type(envVar) is not list: envVar=[envVar]
+ if not isinstance(patern, list): patern=[patern]
+ if not isinstance(envVar, list): envVar=[envVar]
for env in envVar:
path=environ[env]
from qtsalome import QIcon, QStandardItemModel, QStandardItem, QMessageBox, pyqtSignal
-from inputframe_ui import Ui_InputFrame
-from inputdata import InputData
+from salome.smesh.spadder.gui.inputframe_ui import Ui_InputFrame
+from salome.smesh.spadder.gui.inputdata import InputData
DEBUG_MODE=True
GROUPNAME_MAXLENGTH=8
+ INPUTDATA_KEY_FILES="meshfiles"
+ INPUTDATA_KEY_PARAM="parameters"
+
+ PARAM_KEY_NBITER = "NbIteration"
+ PARAM_KEY_RMAXRMIN = "RmaxRmin"
+ PARAM_NBITER_DEFAULT_VALUE = 10
+ PARAM_RMAXRMIN_DEFAULT_VALUE = 3
+
class InputDialog(GenericDialog):
TBL_HEADER_LABEL=["Input Mesh", "Output group name"]
# name item.
# Setup default values for numerical parameters
- self.__ui.txtParamNbIter.setValue(3)
+ self.__ui.txtParamNbIter.setValue(PARAM_NBITER_DEFAULT_VALUE)
+ self.__ui.txtParamRmaxRmin.setValue(PARAM_RMAXRMIN_DEFAULT_VALUE)
# Note that PADDER does not support group name longer than 8
# characters. We apply then this limit in the gui field.
self.__ui.txtSmeshObject.setEnabled(False)
self.__ui.btnAddInput.setEnabled(False)
self.__selectedMesh = None
- self.__dictInputData = {}
+ self.__dictInputFiles = {}
self.__nbConcreteMesh = 0
self.__nbSteelbarMesh = 0
"""
# if the entry already exists, we remove it to replace by a
# new one
- if meshName in self.__dictInputData:
- if self.__dictInputFiles.has_key(meshName):
++ if meshName in self.__dictInputFiles:
self.__delInputFromMap(meshName)
inputData = InputData()
inputData.meshType = meshType
inputData.groupName = groupName
# The key of the map is the mesh name
- self.__dictInputData[meshName] = inputData
+ self.__dictInputFiles[meshName] = inputData
if inputData.meshType == InputData.MESHTYPES.CONCRETE:
self.__nbConcreteMesh += 1
else:
self.__nbSteelbarMesh += 1
- print inputData
- print "meshType = ",inputData.meshType
- print "nb concrete mesh ",self.__nbConcreteMesh
- print "nb steelbar mesh ",self.__nbSteelbarMesh
+ print(inputData)
+ print("meshType = ",inputData.meshType)
+ print("nb concrete mesh ",self.__nbConcreteMesh)
+ print("nb steelbar mesh ",self.__nbSteelbarMesh)
def onDeleteInput(self):
This function removes the specified entry from the internal
map (for data management purpose)
"""
- inputData = self.__dictInputData.pop(meshName)
+ inputData = self.__dictInputFiles.pop(meshName)
if inputData.meshType == InputData.MESHTYPES.CONCRETE:
self.__nbConcreteMesh -= 1
else:
self.__nbSteelbarMesh -= 1
- print inputData
- print "nb concrete mesh ",self.__nbConcreteMesh
- print "nb steelbar mesh ",self.__nbSteelbarMesh
+ print(inputData)
+ print("nb concrete mesh ",self.__nbConcreteMesh)
+ print("nb steelbar mesh ",self.__nbSteelbarMesh)
- def setData(self, listInputData=[]):
+ def setData(self, dictInputData={}):
"""
This function fills the dialog widgets with values provided by
the specified data list.
"""
self.clear()
- for inputData in listInputData:
- if dictInputData.has_key(INPUTDATA_KEY_FILES):
++ if INPUTDATA_KEY_FILES in dictInputData:
+ listInputData = dictInputData["meshfiles"]
+ for inputData in listInputData:
- meshName = inputData.meshName
- meshObject = inputData.meshObject
- meshType = inputData.meshType
- groupName = inputData.groupName
- meshName = inputData.meshName
++ meshName = inputData.meshName
+ meshObject = inputData.meshObject
- meshType = inputData.meshType
- groupName = inputData.groupName
++ meshType = inputData.meshType
++ groupName = inputData.groupName
- self.__addInputInGui(meshName, meshObject, meshType, groupName)
- self.__addInputInMap(meshName, meshObject, meshType, groupName)
+ self.__addInputInGui(meshName, meshObject, meshType, groupName)
+ self.__addInputInMap(meshName, meshObject, meshType, groupName)
- if not DEBUG_MODE:
- self.onSelectSmeshObject()
+ if not DEBUG_MODE:
+ self.onSelectSmeshObject()
+
- if dictInputData.has_key(INPUTDATA_KEY_PARAM):
- dictInputParameters = dictInputData[INPUTDATA_KEY_PARAM]
- if dictInputParameters.has_key(PARAM_KEY_NBITER):
++ if INPUTDATA_KEY_PARAM in dictInputData:
++ dictInputParameters = dictInputData[INPUTDATA_KEY_PARAM]
++ if PARAM_KEY_NBITER in dictInputParameters:
+ self.__ui.txtParamNbIter.setValue(dictInputParameters[PARAM_KEY_NBITER])
- if dictInputParameters.has_key(PARAM_KEY_RMAXRMIN):
++ if PARAM_KEY_RMAXRMIN in dictInputParameters:
+ self.__ui.txtParamRminRmax.setValue(dictInputParameters[PARAM_KEY_RMAXRMIN])
def getData(self):
"""
This function returns a list of InputData that corresponds to
the data in the dialog widgets of the current dialog.
"""
+ # Get the list of mesh files
# Note that the values() function returns a copy of the list
# of values.
- return list(self.__dictInputData.values())
+ dictInputData={}
+ dictInputData[INPUTDATA_KEY_FILES] = self.__dictInputFiles.values()
+
+ # Get the list of additionnal parameters
+ dictInputParameters = {}
+ dictInputParameters[PARAM_KEY_NBITER] = self.__ui.txtParamNbIter.value()
+ dictInputParameters[PARAM_KEY_RMAXRMIN] = self.__ui.txtParamRmaxRmin.value()
+ dictInputData[INPUTDATA_KEY_PARAM] = dictInputParameters
+ return dictInputData
def checkData(self):
"""
return True
- #def setParameters(self,
# ==============================================================================
# Basic use case
dlg=InputDialog()
dlg.displayAndWait()
if dlg.wasOk():
- print "OK has been pressed"
+ print("OK has been pressed")
def TEST_InputDialog_setData():
import sys
dlg=InputDialog()
- from inputdata import InputData
+ from .inputdata import InputData
inputData = InputData()
inputData.meshName = "myMesh"
inputData.meshObject = None
dlg.displayAndWait()
if dlg.wasOk():
- print "OK has been pressed"
+ print("OK has been pressed")
outputListInputData = dlg.getData2()
- print outputListInputData
+ print(outputListInputData)
if __name__ == "__main__":
from qtsalome import QDialog, QIcon, Qt
-from plugindialog_ui import Ui_PluginDialog
-from inputdialog import InputDialog, INPUTDATA_KEY_FILES, INPUTDATA_KEY_PARAM
-from inputdialog import PARAM_KEY_NBITER, PARAM_KEY_RMAXRMIN
-from inputdata import InputData
+from salome.smesh.spadder.gui.plugindialog_ui import Ui_PluginDialog
- from salome.smesh.spadder.gui.inputdialog import InputDialog
++from salome.smesh.spadder.gui.inputdialog import InputDialog, INPUTDATA_KEY_FILES, INPUTDATA_KEY_PARAM
++from salome.smesh.spadder.gui.inputdialog import PARAM_KEY_NBITER, PARAM_KEY_RMAXRMIN
+from salome.smesh.spadder.gui.inputdata import InputData
# __GBO__: uncomment this line and comment the previous one to use the
# demo input dialog instead of the real one.
#from demoinputdialog import InputDialog
self.__ui.btnClear.setIcon(icon)
# Then, we can connect the slot to there associated button event
- self.__ui.btnInput.clicked.connect( self.onInput )
+ self.__ui.btnInput.clicked.connect( self.onInput )
self.__ui.btnCompute.clicked.connect( self.onCompute )
self.__ui.btnRefresh.clicked.connect( self.onRefresh )
self.__ui.btnPublish.clicked.connect( self.onPublish )
self.__inputDialog.windowFlags() | Qt.WindowStaysOnTopHint)
# The signal inputValidated emitted from inputDialog is
# connected to the slot function onProcessInput:
- self.__inputDialog.inputValidated.connect( self.onProcessInput )
+ self.__inputDialog.inputValidated.connect( self.onProcessInput )
else:
self.__ui.frameInput.setVisible(True)
servant. Note that the component is loaded on first demand,
and then the reference is recycled.
"""
- if self.__dict__.has_key("__jobManager") and self.__jobManager is not None:
+ if "__jobManager" in self.__dict__ and self.__jobManager is not None:
return self.__jobManager
# WARN: we first have to update the SALOME components catalog
This function clears the log area and the states of the buttons
"""
self.__listInputData = []
+ self.__dictInputParameters = {}
self.__ui.txtLog.clear()
self.__setGuiState(["CAN_SELECT"])
self.__isRunning = False
windows to process the validation event (see the slot
onProcessInput which is connected to this event).
'''
- self.__inputDialog.setData(self.__listInputData)
+ dictInputData = {}
+ dictInputData[INPUTDATA_KEY_FILES] = self.__listInputData
+ dictInputData[INPUTDATA_KEY_PARAM] = self.__dictInputParameters
+ self.__inputDialog.setData(dictInputData)
self.__inputDialog.open()
def onProcessInput(self):
"""
# The processing simply consists in requesting the input data
# from the dialog window.
- self.__listInputData = self.__inputDialog.getData()
+ dictInputData = self.__inputDialog.getData()
+ self.__listInputData = dictInputData[INPUTDATA_KEY_FILES]
+ self.__dictInputParameters = dictInputData[INPUTDATA_KEY_PARAM]
+
self.__ui.lblStatusBar.setText("Input data OK")
self.__log("INF: Press \"Compute\" to start the job")
self.__setGuiState(["CAN_SELECT", "CAN_COMPUTE"])
group_name = inputData.groupName)
meshJobFileList.append(parameter)
- for inputParameterKey in self.__dictInputParameters.keys():
+ # And to create a list of the additional parameters.
+ # WARN: the CORBA interface requires string values.
+ meshJobParameterList=[]
++ for inputParameterKey in self.__dictInputParameters:
+ value = self.__dictInputParameters[inputParameterKey]
+ parameter = MESHJOB.MeshJobParameter(name=inputParameterKey,value=str(value))
+ meshJobParameterList.append(parameter)
+
jobManager = self.__getJobManager()
- self.__jobid = jobManager.initialize(meshJobFileList, self.__configId)
+ self.__jobid = jobManager.initialize(meshJobFileList, meshJobParameterList, self.__configId)
if self.__jobid < 0:
self.__log("ERR: the job can't be initialized")
self.__log("ERR: %s"%jobManager.getLastErrorMessage())
if __name__ == "__main__":
TEST_PluginDialog()
-
-
-
# padder.cfg).
#
def test00_parameters():
- """Test using a concrete mesh and a single steelbar mesh"""
+ """Test using a concrete mesh and a single steelbar mesh"""
file_concrete=os.path.join(spadder.getTestDataDir(),"concrete.med")
file_steelbar=os.path.join(spadder.getTestDataDir(),"ferraill.med")
file_type=MESHJOB.MED_CONCRETE,
group_name="concrete")
meshJobFileList.append(param)
-
+
medfile = os.path.join(datadir,"ferraill.med")
param = MESHJOB.MeshJobFile(file_name=medfile,
file_type=MESHJOB.MED_STEELBAR,
file_type=MESHJOB.MED_STEELBAR,
group_name="ferrtran")
meshJobFileList.append(param)
-
+
return meshJobFileList
def test02_parameters():
meshJobFileList = test03_parameters()
meshJobParameterList = []
- param = MESHJOB.MeshJobParameter(name="RminRmax",value="1.5")
+ param = MESHJOB.MeshJobParameter(name="RmaxRmin",value="1.5")
meshJobParameterList.append(param)
param = MESHJOB.MeshJobParameter(name="NbIteration",value="3")
meshJobParameterList.append(param)
jobid = component.initialize(meshJobFileList, meshJobParameterList, configId)
if jobid<0:
msg = component.getLastErrorMessage()
- print "ERR: %s"%msg
+ print("ERR: %s"%msg)
sys.exit(1)
-
+
created = False
nbiter = 0
while not created:
state = component.getState(jobid)
- print "MeshJobManager ["+str(nbiter)+"] : state = "+str(state)
+ print("MeshJobManager ["+str(nbiter)+"] : state = "+str(state))
if state == "CREATED":
created = True
time.sleep(0.5)
ok=component.start(jobid)
if not ok:
msg = component.getLastErrorMessage()
- print "ERR: %s"%msg
+ print("ERR: %s"%msg)
sys.exit(1)
-print "job started: %s"%ok
+print("job started: %s"%ok)
#
# This part illustrates how you can follow the execution of the job.
nbiter = 0
while not ended:
state = component.getState(jobid)
- print "MeshJobManager ["+str(nbiter)+"] : state = "+str(state)
+ print("MeshJobManager ["+str(nbiter)+"] : state = "+str(state))
if state not in run_states:
ended=True
time.sleep(0.5)
nbiter+=1
-
+
if state not in end_states:
- print "ERR: jobid = "+str(jobid)+" ended abnormally with state="+str(state)
+ print("ERR: jobid = "+str(jobid)+" ended abnormally with state="+str(state))
msg = component.getLastErrorMessage()
- print("ERR: %s"%msg)
- print "ERR: %s"%msg
++ print("ERR: %s"%msg)
else:
- print "OK: jobid = "+str(jobid)+" ended with state="+str(state)
+ print("OK: jobid = "+str(jobid)+" ended with state="+str(state))
meshJobResults = component.finalize(jobid)
- print meshJobResults
+ print(meshJobResults)
if meshJobResults.status is not True:
- print "ERR: the results are not OK: %s"%component.getLastErrorMessage()
- print "ERR: see log files in %s"%meshJobResults.results_dirname
+ print("ERR: the results are not OK: %s"%component.getLastErrorMessage())
+ print("ERR: see log files in %s"%meshJobResults.results_dirname)