X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FTools%2FblocFissure%2Fihm%2FfissureGenerale_plugin.py;h=15ff7bc0c10c0979fbd0f6d08baf2385f7d3b383;hp=c8c495abe7b554a216000e7f5beb83fa516c1501;hb=0fc0831670e27a5611b941c52dc152fd63964515;hpb=a7e3aa2650e5bb26454aa314fa11e658fd49e6e1 diff --git a/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py b/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py index c8c495abe..15ff7bc0c 100644 --- a/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py +++ b/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2006-2015 EDF R&D +# Copyright (C) 2006-2020 EDF R&D # # 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. +# 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 @@ -27,61 +27,53 @@ import math from blocFissure import gmu def fissureGeneraleDlg(context): - # get context study, studyId, salomeGui + # get context study, salomeGui study = context.study - studyId = context.studyId sg = context.sg - + import os #import subprocess #import tempfile - from PyQt4 import QtCore - from PyQt4 import QtGui - from PyQt4.QtGui import QFileDialog - from PyQt4.QtGui import QMessageBox - from PyQt4.QtGui import QPalette - from PyQt4.QtGui import QColor - from fissureGenerale_ui import Ui_Dialog - - class fissureGeneraleDialog(QtGui.QDialog): - + from PyQt5 import QtCore + from PyQt5 import QtWidgets + from PyQt5 import QtGui + from PyQt5.QtWidgets import QFileDialog + from PyQt5.QtWidgets import QMessageBox + from PyQt5.QtGui import QPalette + from PyQt5.QtGui import QColor + from blocFissure.ihm.fissureGenerale_ui import Ui_Dialog + + class fissureGeneraleDialog(QtWidgets.QDialog): + def __init__(self): - print "__init__" - QtGui.QDialog.__init__(self) + print("__init__") + QtWidgets.QDialog.__init__(self) # Set up the user interface from Designer. self.ui = Ui_Dialog() self.ui.setupUi(self) - + self.blackPalette = self.ui.dsb_influence.palette() self.redPalette = QPalette() self.redPalette.setColor(QPalette.Text, QColor(255,0,0)) self.NOK = False - + self.initDefaut() self.initDialog(self.defaut) self.ui.lb_calcul.hide() - + # Connect up the buttons. - self.connect(self.ui.pb_valPrec, QtCore.SIGNAL("clicked()"), - self.readValPrec) - self.connect(self.ui.pb_reset, QtCore.SIGNAL("clicked()"), - self.resetVal) - self.connect(self.ui.pb_recharger, QtCore.SIGNAL("clicked()"), - self.recharger) - self.connect(self.ui.pb_sauver, QtCore.SIGNAL("clicked()"), - self.sauver) - self.connect(self.ui.pb_maillage, QtCore.SIGNAL("clicked()"), - self.selectMaillage) - self.connect(self.ui.pb_facefiss, QtCore.SIGNAL("clicked()"), - self.selectFacefiss) - self.connect(self.ui.pb_reptrav, QtCore.SIGNAL("clicked()"), - self.selectReptrav) - self.connect(self.ui.pb_nomres, QtCore.SIGNAL("clicked()"), - self.selectNomres) - self.disconnect(self.ui.bb_OkCancel, QtCore.SIGNAL("accepted()"), self.accept) - self.connect(self.ui.bb_OkCancel, QtCore.SIGNAL("accepted()"), - self.execute) - + + self.ui.pb_exemple.clicked.connect(self.genereExemples) + self.ui.pb_valPrec.clicked.connect(self.readValPrec) + self.ui.pb_reset.clicked.connect(self.resetVal) + self.ui.pb_recharger.clicked.connect(self.recharger) + self.ui.pb_sauver.clicked.connect(self.sauver) + self.ui.pb_maillage.clicked.connect(self.selectMaillage) + self.ui.pb_facefiss.clicked.connect(self.selectFacefiss) + self.ui.pb_reptrav.clicked.connect(self.selectReptrav) + self.ui.bb_OkCancel.accepted.disconnect(self.accept) + self.ui.bb_OkCancel.accepted.connect(self.execute) + def initDefaut(self): self.defaut = dict( nomCas = 'angleCube', @@ -95,10 +87,12 @@ def fissureGeneraleDlg(context): nbSegRad = 5, nbSegCercle = 32, areteFaceFissure = 10, + areteVives = 0, reptrav = '.', - nomres = 'casStandard_fissure.med') + nomres = 'casStandard_fissure.med', + verbosite = 0) + - def initDialog(self, dico): self.ui.le_maillage.setText(dico['maillageSain']) self.ui.le_facefiss.setText(dico['brepFaceFissure']) @@ -111,11 +105,16 @@ def fissureGeneraleDlg(context): self.ui.sb_couronnes.setValue(dico['nbSegRad']) self.ui.sb_secteurs.setValue(dico['nbSegCercle']) self.ui.dsb_areteFaceFissure.setValue(dico['areteFaceFissure']) + if 'aretesVives' in dico: + self.ui.dsb_aretesVives.setValue(dico['aretesVives']) + else: + self.ui.dsb_aretesVives.setValue(0) self.ui.le_reptrav.setText(os.path.abspath(dico['reptrav'])) self.ui.le_nomres.setText(os.path.split(dico['nomres'])[1]) + self.ui.cb_log.setCurrentIndex(dico['verbosite']) incomplet = self.testval(dico) pass - + def testval(self, dico): incomplet = False if not os.path.lexists(dico['maillageSain']): @@ -133,12 +132,12 @@ def fissureGeneraleDlg(context): l = dico['edgeFissIds'] for i in l: if not isinstance(i, int): - print"not isinstance(i, int)" + print("not isinstance(i, int)") incomplet = True edgeFissIdsOK=False break except: - print "except eval" + print("except eval") incomplet = True edgeFissIdsOK=False if edgeFissIdsOK: @@ -170,63 +169,76 @@ def fissureGeneraleDlg(context): incomplet = True else: self.ui.dsb_areteFaceFissure.setPalette(self.blackPalette) - - print "incomplet: ", incomplet + + print("incomplet: ", incomplet) return incomplet - + def fileDefault(self): filedef = os.path.expanduser("~/.config/salome/dialogFissureGenerale.dic") - print filedef + print(filedef) return filedef - + def writeDefault(self, dico): filedef = self.fileDefault() - f = open(filedef, 'w') - f.write(str(dico)) - f.close() - + with open(filedef, 'w') as f: + f.write(str(dico)) + + def genereExemples(self): + maillageSain = os.path.join(gmu.pathBloc, 'materielCasTests/CubeAngle.med') + brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests/CubeAngleFiss.brep") + if (os.path.exists(maillageSain) and os.path.exists(brepFaceFissure)): + self.initDialog(self.defaut) + else: + self.ui.lb_calcul.setText("--- Generation exemples en cours ---") + self.ui.lb_calcul.show() + from blocFissure.materielCasTests import genereMateriel + self.ui.lb_calcul.hide() + self.initDialog(self.defaut) + def readValPrec(self): filedef = self.fileDefault() if os.path.exists(filedef): - f = open(filedef, 'r') - txt = f.read() + with open(filedef, 'r') as f: + txt = f.read() dico = eval(txt) - print dico + print(dico) self.initDialog(dico) def resetVal(self): #self.initDefaut() self.initDialog(self.defaut) - - def setLogVerbosity(self): + + def setLogVerbosity(self, logfile): from blocFissure.gmu import initLog # le mode de log s'initialise une seule fois - print "setLogVerbosity" + print("setLogVerbosity") index = self.ui.cb_log.currentIndex() - print index + print(index) if index == 0: - initLog.setRelease() + initLog.setRelease(logfile) elif index == 1: - initLog.setVerbose() + initLog.setVerbose(logfile) elif index == 2: - initLog.setDebug() - - + initLog.setDebug(logfile) + + def sauver(self): - print "sauver" + print("sauver") fileDiag = QFileDialog(self) fileDiag.setFileMode(QFileDialog.AnyFile) fileDiag.setNameFilter("Parametres *.dic (*.dic)") fileDiag.setViewMode(QFileDialog.List) if fileDiag.exec_() : fileNames = fileDiag.selectedFiles() + print(fileNames) filedef = fileNames[0] + if filedef[-4:] not in ['.dic']: + filedef += '.dic' dico = self.creeDico() - f = open(filedef, 'w') - f.write(str(dico)) - f.close() - + with open(filedef, 'w') as f: + f.write(str(dico)) + def recharger(self): - print "recharger" + print("recharger") fileDiag = QFileDialog(self) fileDiag.setFileMode(QFileDialog.ExistingFile) fileDiag.setNameFilter("Parametres *.dic (*.dic)") @@ -234,14 +246,14 @@ def fissureGeneraleDlg(context): if fileDiag.exec_() : fileNames = fileDiag.selectedFiles() filedef = fileNames[0] - print filedef + print(filedef) if os.path.exists(filedef): - f = open(filedef, 'r') - txt = f.read() + with open(filedef, 'r') as f: + txt = f.read() dico = eval(txt) - print dico + print(dico) self.initDialog(dico) - + def selectMaillage(self): fileDiag = QFileDialog(self) fileDiag.setFileMode(QFileDialog.ExistingFile) @@ -250,9 +262,9 @@ def fissureGeneraleDlg(context): if fileDiag.exec_() : fileNames = fileDiag.selectedFiles() filedef = fileNames[0] - print filedef + print(filedef) self.ui.le_maillage.setText(filedef) - + def selectFacefiss(self): fileDiag = QFileDialog(self) fileDiag.setFileMode(QFileDialog.ExistingFile) @@ -261,9 +273,9 @@ def fissureGeneraleDlg(context): if fileDiag.exec_() : fileNames = fileDiag.selectedFiles() filedef = fileNames[0] - print filedef + print(filedef) self.ui.le_facefiss.setText(filedef) - + def selectReptrav(self): fileDiag = QFileDialog(self) fileDiag.setFileMode(QFileDialog.Directory) @@ -272,10 +284,10 @@ def fissureGeneraleDlg(context): if fileDiag.exec_() : fileNames = fileDiag.selectedFiles() reptrav = str(fileNames[0]) - print "reptrav ", reptrav + print("reptrav ", reptrav) self.ui.le_reptrav.setText(os.path.abspath(reptrav)) - - + + def selectNomres(self): fileDiag = QFileDialog(self) fileDiag.setFileMode(QFileDialog.AnyFile) @@ -288,11 +300,11 @@ def fissureGeneraleDlg(context): if fileDiag.exec_() : fileNames = fileDiag.selectedFiles() tempnom = os.path.split(str(fileNames[0]))[1] - print "nomres ", tempnom + print("nomres ", tempnom) self.ui.le_nomres.setText(tempnom) else: self.ui.le_nomres.setText(nomres) - + def creeDico(self): dico = dict( maillageSain = str(self.ui.le_maillage.text()), @@ -305,34 +317,60 @@ def fissureGeneraleDlg(context): nbSegRad = self.ui.sb_couronnes.value(), nbSegCercle = self.ui.sb_secteurs.value(), areteFaceFissure = self.ui.dsb_areteFaceFissure.value(), + aretesVives = self.ui.dsb_aretesVives.value(), reptrav = str(self.ui.le_reptrav.text()), nomres = str(self.ui.le_nomres.text()), + verbosite = self.ui.cb_log.currentIndex() ) - print dico + print(dico) return dico - + def checkValues(self): return self.NOK def execute(self): - print "execute" + print("execute") dico = self.creeDico() NOK = self.testval(dico) if not(NOK): self.writeDefault(dico) + self.ui.lb_calcul.setText("--- Calcul en cours ---") self.ui.lb_calcul.show() - self.setLogVerbosity() + logfile=os.path.join(dico['reptrav'], dico['nomres']+".log") + self.setLogVerbosity(logfile) from blocFissure.gmu import geomsmesh # après intialisation log dans setLogVerbosity from blocFissure.gmu.casStandard import casStandard # après intialisation log dans setLogVerbosity - execInstance = casStandard(dico) + from blocFissure.gmu.fissError import fissError + try: + execInstance = casStandard(dico) + except fissError as erreur: + print('-'*60) + print(type(erreur)) + print('-'*60) + print(erreur.msg) + print('-'*60) + for ligne in erreur.pile: + print(repr(ligne)) + print('-'*60) + texte = erreur.msg +# texte += +"
" +'-'*60 +"
" +# for ligne in erreur.pile: +# texte += repr(ligne) +"
" + mbox = QMessageBox(self) + mbox.setWindowTitle("erreur blocFissure") + mbox.setText(str(texte)) + mbox.exec_() +# except Exception as erreur: +# print "exception non répertoriée" self.NOK = NOK - self.accept() - - pass + self.ui.lb_calcul.hide() + #self.accept() + + pass # ---------------------------------------------------------------------------- - - print "main" + + print("main") window = fissureGeneraleDialog() retry = True while(retry): @@ -341,9 +379,9 @@ def fissureGeneraleDlg(context): result = window.result() if result: # dialog accepted - print "dialog accepted, check" + print("dialog accepted, check") retry = window.checkValues() else: - print "dialog rejected, exit" + print("dialog rejected, exit") pass - +