1 # -*- coding: utf-8 -*-
3 # Copyright (C) 2006-2015 EDF R&D
5 # This library is free software; you can redistribute it and/or
6 # modify it under the terms of the GNU Lesser General Public
7 # License as published by the Free Software Foundation; either
8 # version 2.1 of the License.
10 # This library is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 # Lesser General Public License for more details.
15 # You should have received a copy of the GNU Lesser General Public
16 # License along with this library; if not, write to the Free Software
17 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 # if you already have plugins defined in a salome_plugins.py file, add this file at the end.
23 # if not, copy this file as ${HOME}/Plugins/smesh_plugins.py or ${APPLI}/Plugins/smesh_plugins.py
27 from blocFissure import gmu
28 from blocFissure.gmu import initLog
32 from blocFissure.gmu import geomsmesh
33 from blocFissure.gmu.casStandard import casStandard
35 def fissureGeneraleDlg(context):
36 # get context study, studyId, salomeGui
38 studyId = context.studyId
44 from PyQt4 import QtCore
45 from PyQt4 import QtGui
46 from PyQt4.QtGui import QFileDialog
47 from PyQt4.QtGui import QMessageBox
48 from PyQt4.QtGui import QPalette
49 from PyQt4.QtGui import QColor
50 from fissureGenerale_ui import Ui_Dialog
52 class fissureGeneraleDialog(QtGui.QDialog):
55 QtGui.QDialog.__init__(self)
56 # Set up the user interface from Designer.
60 self.blackPalette = self.ui.dsb_influence.palette()
61 self.redPalette = QPalette()
62 self.redPalette.setColor(QPalette.Text, QColor(255,0,0))
66 self.initDialog(self.defaut)
67 self.ui.lb_calcul.hide()
69 # Connect up the buttons.
70 self.connect(self.ui.pb_valPrec, QtCore.SIGNAL("clicked()"),
72 self.connect(self.ui.pb_reset, QtCore.SIGNAL("clicked()"),
74 self.connect(self.ui.pb_recharger, QtCore.SIGNAL("clicked()"),
76 self.connect(self.ui.pb_sauver, QtCore.SIGNAL("clicked()"),
78 self.connect(self.ui.pb_maillage, QtCore.SIGNAL("clicked()"),
80 self.connect(self.ui.pb_facefiss, QtCore.SIGNAL("clicked()"),
82 self.disconnect(self.ui.bb_OkCancel, QtCore.SIGNAL("accepted()"), self.accept)
83 self.connect(self.ui.bb_OkCancel, QtCore.SIGNAL("accepted()"),
89 maillageSain = os.path.join(gmu.pathBloc, 'materielCasTests/CubeAngle.med'),
90 brepFaceFissure = os.path.join(gmu.pathBloc, "materielCasTests/CubeAngleFiss.brep"),
98 areteFaceFissure = 10)
101 def initDialog(self, dico):
102 self.ui.le_maillage.setText(dico['maillageSain'])
103 self.ui.le_facefiss.setText(dico['brepFaceFissure'])
104 self.ui.le_fondfiss.setText(str(dico['edgeFissIds']))
105 self.ui.dsb_influence.setValue(dico['lgInfluence'])
106 self.ui.dsb_meshBrepMin.setValue(dico['meshBrep'][0])
107 self.ui.dsb_meshBrepMax.setValue(dico['meshBrep'][1])
108 self.ui.dsb_rayonPipe.setValue(dico['rayonPipe'])
109 self.ui.dsb_lenSegPipe.setValue(dico['lenSegPipe'])
110 self.ui.sb_couronnes.setValue(dico['nbSegRad'])
111 self.ui.sb_secteurs.setValue(dico['nbSegCercle'])
112 self.ui.dsb_areteFaceFissure.setValue(dico['areteFaceFissure'])
113 incomplet = self.testval(dico)
116 def testval(self, dico):
118 if not os.path.lexists(dico['maillageSain']):
119 self.ui.le_maillage.setPalette(self.redPalette)
122 self.ui.le_maillage.setPalette(self.blackPalette)
123 if not os.path.lexists(dico['brepFaceFissure']):
124 self.ui.le_facefiss.setPalette(self.redPalette)
127 self.ui.le_facefiss.setPalette(self.blackPalette)
130 l = dico['edgeFissIds']
132 if not isinstance(i, int):
133 print"not isinstance(i, int)"
142 self.ui.le_fondfiss.setPalette(self.blackPalette)
144 self.ui.le_fondfiss.setPalette(self.redPalette)
145 if dico['meshBrep'][0] == 0:
146 self.ui.dsb_meshBrepMin.setPalette(self.redPalette)
149 self.ui.dsb_meshBrepMin.setPalette(self.blackPalette)
150 if dico['meshBrep'][1] == 0:
151 self.ui.dsb_meshBrepMax.setPalette(self.redPalette)
154 self.ui.dsb_meshBrepMax.setPalette(self.blackPalette)
155 if dico['rayonPipe'] == 0:
156 self.ui.dsb_rayonPipe.setPalette(self.redPalette)
159 self.ui.dsb_rayonPipe.setPalette(self.blackPalette)
160 if dico['lenSegPipe'] == 0:
161 self.ui.dsb_lenSegPipe.setPalette(self.redPalette)
164 self.ui.dsb_lenSegPipe.setPalette(self.blackPalette)
165 if dico['areteFaceFissure'] == 0:
166 self.ui.dsb_areteFaceFissure.setPalette(self.redPalette)
169 self.ui.dsb_areteFaceFissure.setPalette(self.blackPalette)
171 print "incomplet: ", incomplet
174 def fileDefault(self):
175 filedef = os.path.expanduser("~/.config/salome/dialogFissureGenerale.dic")
179 def writeDefault(self, dico):
180 filedef = self.fileDefault()
181 f = open(filedef, 'w')
185 def readValPrec(self):
186 filedef = self.fileDefault()
187 if os.path.exists(filedef):
188 f = open(filedef, 'r')
192 self.initDialog(dico)
196 self.initDialog(self.defaut)
200 fileDiag = QFileDialog(self)
201 fileDiag.setFileMode(QFileDialog.AnyFile)
202 fileDiag.setNameFilter("Parametres *.dic (*.dic)")
203 fileDiag.setViewMode(QFileDialog.List)
204 if fileDiag.exec_() :
205 fileNames = fileDiag.selectedFiles()
206 filedef = fileNames[0]
207 dico = self.creeDico()
208 f = open(filedef, 'w')
214 fileDiag = QFileDialog(self)
215 fileDiag.setFileMode(QFileDialog.ExistingFile)
216 fileDiag.setNameFilter("Parametres *.dic (*.dic)")
217 fileDiag.setViewMode(QFileDialog.Detail)
218 if fileDiag.exec_() :
219 fileNames = fileDiag.selectedFiles()
220 filedef = fileNames[0]
222 if os.path.exists(filedef):
223 f = open(filedef, 'r')
227 self.initDialog(dico)
229 def selectMaillage(self):
230 fileDiag = QFileDialog(self)
231 fileDiag.setFileMode(QFileDialog.ExistingFile)
232 fileDiag.setNameFilter("Maillage *.med (*.med)")
233 fileDiag.setViewMode(QFileDialog.Detail)
234 if fileDiag.exec_() :
235 fileNames = fileDiag.selectedFiles()
236 filedef = fileNames[0]
238 self.ui.le_maillage.setText(filedef)
240 def selectFacefiss(self):
241 fileDiag = QFileDialog(self)
242 fileDiag.setFileMode(QFileDialog.ExistingFile)
243 fileDiag.setNameFilter("Face fissure *.brep (*.brep)")
244 fileDiag.setViewMode(QFileDialog.Detail)
245 if fileDiag.exec_() :
246 fileNames = fileDiag.selectedFiles()
247 filedef = fileNames[0]
249 self.ui.le_facefiss.setText(filedef)
253 maillageSain = str(self.ui.le_maillage.text()),
254 brepFaceFissure = str(self.ui.le_facefiss.text()),
255 edgeFissIds = eval(str(self.ui.le_fondfiss.text())),
256 lgInfluence = self.ui.dsb_influence.value(),
257 meshBrep = [self.ui.dsb_meshBrepMin.value(),self.ui.dsb_meshBrepMax.value()],
258 rayonPipe = self.ui.dsb_rayonPipe.value(),
259 lenSegPipe = self.ui.dsb_lenSegPipe.value(),
260 nbSegRad = self.ui.sb_couronnes.value(),
261 nbSegCercle = self.ui.sb_secteurs.value(),
262 areteFaceFissure = self.ui.dsb_areteFaceFissure.value()
267 def checkValues(self):
271 dico = self.creeDico()
272 NOK = self.testval(dico)
274 self.writeDefault(dico)
275 self.ui.lb_calcul.show()
276 execInstance = casStandard(dico)
282 # ----------------------------------------------------------------------------
284 window = fissureGeneraleDialog()
289 result = window.result()
292 print "dialog accepted, check"
293 retry = window.checkValues()
295 print "dialog rejected, exit"