diff --git a/src/Tools/blocFissure/gmu/CMakeLists.txt b/src/Tools/blocFissure/gmu/CMakeLists.txt index c0afb86be..64c18760a 100644 --- a/src/Tools/blocFissure/gmu/CMakeLists.txt +++ b/src/Tools/blocFissure/gmu/CMakeLists.txt @@ -51,6 +51,7 @@ SET(plugin_SCRIPTS facesVolumesToriques.py findWireEndVertices.py findWireIntermediateVertices.py + fissError.py fissureCoude.py fissureGenerique.py fusionMaillageAttributionDefaut.py diff --git a/src/Tools/blocFissure/gmu/fissError.py b/src/Tools/blocFissure/gmu/fissError.py new file mode 100644 index 000000000..74b058740 --- /dev/null +++ b/src/Tools/blocFissure/gmu/fissError.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- + +class fissError(Exception): + """ + usage: + try: + instructions() + except: + raise fissError(traceback.extract_stack(),"mon message") + """ + def __init__(self, pile, msg): + self.pile = pile + self.msg = msg + + def __str__(self): + return 'msg=%s\npile=%s\n'%(self.msg, repr(self.pile)) + diff --git a/src/Tools/blocFissure/gmu/partitionneFissureParPipe.py b/src/Tools/blocFissure/gmu/partitionneFissureParPipe.py index 7d6289797..9ad26b854 100644 --- a/src/Tools/blocFissure/gmu/partitionneFissureParPipe.py +++ b/src/Tools/blocFissure/gmu/partitionneFissureParPipe.py @@ -6,8 +6,10 @@ from geomsmesh import geompy from geomsmesh import geomPublish from geomsmesh import geomPublishInFather import initLog +import traceback from findWireEndVertices import findWireEndVertices from prolongeWire import prolongeWire +from fissError import fissError def partitionneFissureParPipe(shapesFissure, elementsDefaut, rayonPipe): """ @@ -33,7 +35,12 @@ def partitionneFissureParPipe(shapesFissure, elementsDefaut, rayonPipe): cercle = geompy.MakeRotation(cercle, norms[0], math.pi/3.0 ) # éviter d'avoir l'arête de couture du pipe presque confondue avec la face fissure geomPublish(initLog.debug, cercle, 'cercle') fondFissProlonge = prolongeWire(fondFiss, extrem, norms, 2*rayonPipe) - pipeFiss = geompy.MakePipe(cercle, fondFissProlonge) + try: + pipeFiss = geompy.MakePipe(cercle, fondFissProlonge) + except: + texte = "génération du pipe le long de la ligne de fond de fissure prolongée impossible. " + texte += "Cause éventuelle : la ligne s'autointersecte lorsqu'on la prolonge." + raise fissError(traceback.extract_stack(),texte) geomPublish(initLog.debug, pipeFiss, 'pipeFiss') partFissPipe = geompy.MakePartition([shapeDefaut, pipeFiss], [], [], [], geompy.ShapeType["FACE"], 0, [], 1) geomPublish(initLog.debug, partFissPipe, 'partFissPipe') diff --git a/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py b/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py index 9e602ed68..e2d5d9dc1 100644 --- a/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py +++ b/src/Tools/blocFissure/ihm/fissureGenerale_plugin.py @@ -41,6 +41,7 @@ def fissureGeneraleDlg(context): from PyQt4.QtGui import QMessageBox from PyQt4.QtGui import QPalette from PyQt4.QtGui import QColor + from PyQt4.QtCore import QString from fissureGenerale_ui import Ui_Dialog class fissureGeneraleDialog(QtGui.QDialog): @@ -307,6 +308,7 @@ def fissureGeneraleDlg(context): areteFaceFissure = self.ui.dsb_areteFaceFissure.value(), reptrav = str(self.ui.le_reptrav.text()), nomres = str(self.ui.le_nomres.text()), + verbosite = self.ui.cb_log.currentIndex() ) print dico return dico @@ -325,7 +327,28 @@ def fissureGeneraleDlg(context): 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(QString.fromUtf8(texte)) + mbox.exec_() +# except Exception as erreur: +# print "exception non répertoriée" self.NOK = NOK self.accept()