mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-28 18:30:35 +05:00
new gui
This commit is contained in:
parent
b1672f75ae
commit
6b258aaf7a
@ -59,7 +59,7 @@ class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget):
|
||||
self.LE_ParamsFile.setText(self.paramsFile)
|
||||
self.LE_MeshFile.setText("")
|
||||
self.LE_MeshSmesh.setText("")
|
||||
|
||||
self.resize(800, 500)
|
||||
self.clean()
|
||||
|
||||
def connecterSignaux(self) :
|
||||
@ -75,7 +75,12 @@ class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget):
|
||||
self.connect(self.LE_MeshFile,SIGNAL("returnPressed()"),self.meshFileNameChanged)
|
||||
self.connect(self.LE_ParamsFile,SIGNAL("returnPressed()"),self.paramsFileNameChanged)
|
||||
|
||||
|
||||
#QtCore.QObject.connect(self.checkBox, QtCore.SIGNAL('stateChanged(int)'), self.change)
|
||||
self.connect(self.CB_FillHoles,SIGNAL("stateChanged(int)"),self.SP_minHoleSize.setEnabled)
|
||||
self.connect(self.CB_computedToleranceDisplacement,SIGNAL("stateChanged(int)"),self.SP_toleranceDisplacement.setDisabled)
|
||||
self.connect(self.CB_computedResolutionLength,SIGNAL("stateChanged(int)"),self.SP_resolutionLength.setDisabled)
|
||||
self.connect(self.CB_computedOverlapDistance,SIGNAL("stateChanged(int)"),self.SP_overlapDistance.setDisabled)
|
||||
|
||||
def PBHelpPressed(self):
|
||||
try :
|
||||
mydir=os.environ['SMESH_ROOT_DIR']
|
||||
@ -87,10 +92,10 @@ class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget):
|
||||
|
||||
|
||||
def PBOKPressed(self):
|
||||
if not(self.PrepareLigneCommande()) : return
|
||||
if not(self.PrepareLigneCommande()): return
|
||||
self.PBSavePressed(NomHypo=True)
|
||||
maFenetre=MGCleanerMonViewText(self,self.commande)
|
||||
if os.path.isfile(self.fichierOut) :self.enregistreResultat()
|
||||
if os.path.isfile(self.fichierOut): self.enregistreResultat()
|
||||
|
||||
def enregistreResultat(self):
|
||||
import smesh
|
||||
@ -127,9 +132,13 @@ class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget):
|
||||
return True
|
||||
|
||||
def PBSavePressed(self,NomHypo=False):
|
||||
if NomHypo : text = '# Params for Hypothese : anHypo_MGCleaner_'+str(self.num - 1)+"\n"
|
||||
else : text = '# Save intermediate params \n'
|
||||
if NomHypo:
|
||||
text = '# Params for Hypothese : anHypo_MGCleaner_'+str(self.num - 1)+"\n"
|
||||
else:
|
||||
text = '# Save intermediate params \n'
|
||||
text += "# Params for mesh : " + self.LE_MeshSmesh.text() +'\n'
|
||||
|
||||
"""
|
||||
for RB in self.GBOptim.findChildren(QRadioButton,):
|
||||
if RB.isChecked()==True:
|
||||
text+="Optimisation ='"+RB.text()+"'\n"
|
||||
@ -138,7 +147,6 @@ class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget):
|
||||
if RB.isChecked()==True:
|
||||
text+="Units ='"+RB.text()+"'\n"
|
||||
text+='Chordal_Tolerance_Deviation='+str(self.SP_Tolerance.value())+'\n'
|
||||
|
||||
text+='Ridge_Detection=' + str(self.CB_Ridge.isChecked())+'\n'
|
||||
text+='Split_Edge=' + str(self.CB_SplitEdge.isChecked())+'\n'
|
||||
text+='Point_Smoothing=' + str(self.CB_Point.isChecked())+'\n'
|
||||
@ -147,33 +155,31 @@ class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget):
|
||||
text+='Maximum_Size=' + str(self.SP_MaxSize.value()) +'\n'
|
||||
text+='Minimum_Size=' + str(self.SP_MaxSize.value()) +'\n'
|
||||
text+='Mesh_Gradation=' + str(self.SP_Gradation.value())+'\n'
|
||||
|
||||
text+='Verbosity=' + str(self.SP_Verbosity.value())+'\n'
|
||||
text+='Memory=' + str(self.SP_Memory.value())+'\n'
|
||||
text+='\n\n'
|
||||
|
||||
try :
|
||||
"""
|
||||
try:
|
||||
f=open(self.paramsFile,'a')
|
||||
except :
|
||||
QMessageBox.warning( self, "File", "Unable to open "+self.paramsFile)
|
||||
except:
|
||||
QMessageBox.warning(self, "File", "Unable to open "+self.paramsFile)
|
||||
return
|
||||
try :
|
||||
try:
|
||||
f.write(text)
|
||||
except :
|
||||
QMessageBox.warning( self, "File", "Unable to write "+self.paramsFile)
|
||||
except:
|
||||
QMessageBox.warning(self, "File", "Unable to write "+self.paramsFile)
|
||||
return
|
||||
f.close()
|
||||
|
||||
def PBLoadPressed(self):
|
||||
try :
|
||||
try:
|
||||
f=open(self.paramsFile,'r')
|
||||
except :
|
||||
QMessageBox.warning( self, "File", "Unable to open "+self.paramsFile)
|
||||
QMessageBox.warning(self, "File", "Unable to open "+self.paramsFile)
|
||||
return
|
||||
try :
|
||||
try:
|
||||
text=f.read()
|
||||
except :
|
||||
QMessageBox.warning( self, "File", "Unable to read "+self.paramsFile)
|
||||
QMessageBox.warning(self, "File", "Unable to read "+self.paramsFile)
|
||||
return
|
||||
f.close()
|
||||
d={}
|
||||
@ -183,7 +189,7 @@ class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget):
|
||||
RB.setChecked(True)
|
||||
break
|
||||
for RB in self.GBUnit.findChildren(QRadioButton,):
|
||||
if d['Units']== RB.text():
|
||||
if d['Units']==RB.text():
|
||||
RB.setChecked(True)
|
||||
break
|
||||
self.SP_Tolerance.setValue(d['Chordal_Tolerance_Deviation'])
|
||||
@ -218,7 +224,6 @@ class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget):
|
||||
self.LE_ParamsFile.setText(infile)
|
||||
self.paramsFile=infile.toLatin1()
|
||||
|
||||
|
||||
def meshFileNameChanged(self):
|
||||
self.fichierIn=self.LE_MeshFile.text()
|
||||
if os.path.exists(self.fichierIn): return
|
||||
@ -268,61 +273,54 @@ class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget):
|
||||
mg-cleaner.exe --in Porsche.mesh --out Porschefix.mesh --fix
|
||||
mg-cleaner.exe --in Porsche.mesh --out PorscheNewfix.mesh --fix --resolution_length 0.03
|
||||
"""
|
||||
|
||||
self.commande="mg-cleaner.exe "
|
||||
verbosity=str(self.SP_Verbosity.value())
|
||||
self.commande+="-v "+verbosity
|
||||
for obj in self.mesRB.children():
|
||||
try :
|
||||
if obj.isChecked():
|
||||
self.style=obj.objectName().remove(0,3)
|
||||
self.style.replace("_","-")
|
||||
break
|
||||
except :
|
||||
pass
|
||||
self.commande+=" -O "+self.style.toLatin1()
|
||||
|
||||
#self.commande="mg-cleaner.exe --in " + self.fichierIn + " --out " + self.fichierOut + " --fix2pass"
|
||||
#return True
|
||||
if self.fichierIn=="" and self.MeshIn=="" :
|
||||
QMessageBox.critical(self, "Mesh", "select an input mesh")
|
||||
return False
|
||||
QMessageBox.critical(self, "Mesh", "select an input mesh")
|
||||
return False
|
||||
if self.MeshIn!="" : self.prepareFichier()
|
||||
if not (os.path.isfile(self.fichierIn)):
|
||||
QMessageBox.critical(self, "File", "unable to read GMF Mesh in "+str(self.fichierIn))
|
||||
return False
|
||||
|
||||
QMessageBox.critical(self, "File", "unable to read GMF Mesh in "+str(self.fichierIn))
|
||||
return False
|
||||
|
||||
self.commande="mg-cleaner.exe"
|
||||
verbosity=str(self.SP_Verbosity.value())
|
||||
self.commande+=" --verbose " + verbosity
|
||||
self.commande+=" --in " + self.fichierIn
|
||||
deb=os.path.splitext(self.fichierIn)
|
||||
self.fichierOut=deb[0]+'.d.meshb'
|
||||
|
||||
if self.RB_Absolute.isChecked()==True :
|
||||
self.commande+=' -Dabsolute'
|
||||
else :
|
||||
self.commande+=' -Drelative'
|
||||
self.commande+=',tolerance=%f'%self.SP_Tolerance.value()
|
||||
if self.CB_Ridge.isChecked()==False : self.commande+=',nr'
|
||||
if self.CB_Point.isChecked()==False : self.commande+=',ns'
|
||||
if self.SP_Geomapp.value()!=0.04 : self.commande+=',geomapp=%f'%self.SP_Geomapp.value()
|
||||
if self.SP_Ridge.value()!=45.0 : self.commande+=',ridge=%f'%self.SP_Ridge.value()
|
||||
if self.SP_MaxSize.value()!=100 : self.commande+=',maxsize=%f'%self.SP_MaxSize.value()
|
||||
if self.SP_MinSize.value()!=5 : self.commande+=',minsize=%f'%self.SP_MinSize.value()
|
||||
if self.SP_Gradation.value()!=1.3 : self.commande+=',gradation=%f'%self.SP_MaxSize.value()
|
||||
if self.CB_SplitEdge.isChecked()==True : self.commande+=',splitedge=1'
|
||||
|
||||
if self.SP_Verbosity.value()!=3 : self.commande+=' -v %d'%self.SP_Verbosity.value()
|
||||
if self.SP_Memory.value()!=0 : self.commande+=' -m %d'%self.SP_Memory.value()
|
||||
|
||||
self.commande+=" "+self.fichierIn
|
||||
|
||||
#for the moment
|
||||
deb=os.path.splitext(self.fichierIn)
|
||||
self.fichierOut=deb[0]+'_fix.mesh'
|
||||
self.commande="mg-cleaner.exe --in " + self.fichierIn + " --out " + self.fichierOut + " --fix"
|
||||
|
||||
self.fichierOut=deb[0] + "_fix.mesh"
|
||||
self.commande+=" --out "+self.fichierOut
|
||||
if self.RB_Fix1.isChecked():
|
||||
self.commande+=" --fix1pass"
|
||||
else:
|
||||
if self.RB_Fix2.isChecked():
|
||||
self.commande+=" --fix2pass"
|
||||
else:
|
||||
self.commande+=" --check"
|
||||
if self.CB_PreserveTopology.isChecked():
|
||||
self.commande+=" --topology respect"
|
||||
else:
|
||||
self.commande+=" --topology ignore"
|
||||
if self.CB_FillHoles.isChecked(): #no fill holes default
|
||||
self.commande+=" --min_hole_size " + str(self.SP_minHoleSize.value())
|
||||
if not self.CB_computedToleranceDisplacement.isChecked(): #computed default
|
||||
self.commande+=" --tolerance_displacement " + str(self.SP_toleranceDisplacement.value())
|
||||
if not self.CB_computedResolutionLength.isChecked(): #computed default
|
||||
self.commande+=" --tolerance_displacement " + str(self.SP_resolutionLength.value())
|
||||
self.commande+=" --folding_angle " + str(self.SP_foldingAngle.value())
|
||||
if self.CB_RemeshPlanes.isChecked(): #no remesh default
|
||||
self.commande+=" --remesh_planes"
|
||||
if not self.CB_computedOverlapDistance.isChecked(): #computed default
|
||||
self.commande+=" --overlap_distance " + str(self.SP_overlapDistance.value())
|
||||
self.commande+=" --overlap_angle " + str(self.SP_overlapAngle.value())
|
||||
return True
|
||||
|
||||
|
||||
def clean(self):
|
||||
self.RB_Check.setChecked(False)
|
||||
self.RB_Fix1.setChecked(False)
|
||||
self.RB_Fix2.setChecked(True)
|
||||
self.CB_Preserve.setChecked(False)
|
||||
self.CB_PreserveTopology.setChecked(False)
|
||||
self.CB_FillHoles.setChecked(False)
|
||||
self.CB_RemeshPlanes.setChecked(False)
|
||||
|
||||
@ -330,7 +328,7 @@ class MGCleanerMonPlugDialog(Ui_MGCleanerPlugDialog,QWidget):
|
||||
self.SP_toleranceDisplacement.setProperty("value", 0)
|
||||
self.SP_resolutionLength.setProperty("value", 0)
|
||||
self.SP_foldingAngle.setProperty("value", 15)
|
||||
self.SP_overlapdistance.setProperty("value", 0)
|
||||
self.SP_overlapDistance.setProperty("value", 0)
|
||||
self.SP_overlapAngle.setProperty("value", 15)
|
||||
self.SP_Verbosity.setProperty("value", 3)
|
||||
|
||||
@ -351,3 +349,23 @@ def getDialog():
|
||||
# __dialog.clean()
|
||||
return __dialog
|
||||
|
||||
|
||||
#
|
||||
# ==============================================================================
|
||||
# Basic use cases and unit test functions
|
||||
# ==============================================================================
|
||||
#
|
||||
def TEST_MGCleanerMonPlugDialog():
|
||||
print 'TEST_MGCleanerMonPlugDialog'
|
||||
import sys
|
||||
from PyQt4.QtGui import QApplication
|
||||
from PyQt4.QtCore import QObject, SIGNAL, SLOT
|
||||
app = QApplication(sys.argv)
|
||||
QObject.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
|
||||
|
||||
dlg=MGCleanerMonPlugDialog()
|
||||
dlg.show()
|
||||
sys.exit(app.exec_())
|
||||
|
||||
if __name__ == "__main__":
|
||||
TEST_MGCleanerMonPlugDialog()
|
||||
|
@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>400</height>
|
||||
<height>500</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@ -221,7 +221,7 @@ Default is to fix with two passes.</string>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CB_Preserve">
|
||||
<widget class="QCheckBox" name="CB_PreserveTopology">
|
||||
<property name="toolTip">
|
||||
<string>Disables fixing operations which induce topology modifications.
|
||||
Default is enable topology modifications.
|
||||
@ -640,7 +640,7 @@ Default is 15 degrees.</string>
|
||||
</property>
|
||||
</widget>
|
||||
#5
|
||||
<widget class="QDoubleSpinBox" name="SP_overlapdistance">
|
||||
<widget class="QDoubleSpinBox" name="SP_overlapDistance">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
@ -665,7 +665,7 @@ Default is 15 degrees.</string>
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="LA_overlapdistance">
|
||||
<widget class="QLabel" name="LA_overlapDistance">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>130</x>
|
||||
@ -762,99 +762,44 @@ Default is 15 degrees.</string>
|
||||
<property name="title">
|
||||
<string>MGCleaner Generic Options</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="layoutWidget">
|
||||
|
||||
<widget class="QSpinBox" name="SP_Verbosity">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>40</x>
|
||||
<x>20</x>
|
||||
<y>30</y>
|
||||
<width>441</width>
|
||||
<height>27</height>
|
||||
<width>100</width>
|
||||
<height>25</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Verbosity Level</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>28</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="SP_Verbosity">
|
||||
<property name="maximum">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>7</number>
|
||||
<number>3</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="layoutWidget_2">
|
||||
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>40</x>
|
||||
<y>70</y>
|
||||
<width>441</width>
|
||||
<height>27</height>
|
||||
<x>130</x>
|
||||
<y>30</y>
|
||||
<width>600</width>
|
||||
<height>30</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>225</width>
|
||||
<height>25</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>sets the verbosity level.
|
||||
From 0 (no detail) to 10 (very detailed).
|
||||
Default is 3.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>zzz21</string>
|
||||
<string>Verbosity Level</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>28</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="SP_Memory">
|
||||
<property name="toolTip">
|
||||
<string>zzz22</string>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>100000</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
|
||||
|
||||
</widget>
|
||||
<widget class="QGroupBox" name="groupBox_6">
|
||||
<property name="geometry">
|
||||
|
Loading…
Reference in New Issue
Block a user