diff --git a/src/Mod/Machining_Distortion/MachDistAlignment.py b/src/Mod/Machining_Distortion/MachDistAlignment.py index 6187a9717..56fa72d2a 100644 --- a/src/Mod/Machining_Distortion/MachDistAlignment.py +++ b/src/Mod/Machining_Distortion/MachDistAlignment.py @@ -56,6 +56,9 @@ class _CommandAlignment: return FreeCAD.ActiveDocument.openTransaction("Alignment") + # switch on Bound Box + FemMeshObject.ViewObject.BoundingBox = True + n = FemMeshObject.FemMesh.Nodes p = Mesh.calculateEigenTransform(n) p2 = p.inverse() @@ -63,11 +66,12 @@ class _CommandAlignment: taskd = _AlignTaskPanel(FemMeshObject) FreeCADGui.Control.showDialog(taskd) - FreeCAD.ActiveDocument.commitTransaction() def IsActive(self): if FemGui.getActiveAnalysis(): - return True + for i in FemGui.getActiveAnalysis().Member: + if i.isDerivedFrom("Fem::FemMeshObject"): + return True else: return False @@ -87,6 +91,8 @@ class _AlignTaskPanel: #Connect Signals and Slots QtCore.QObject.connect(self.formUi.pushButton_FlipX, QtCore.SIGNAL("clicked()"), self.flipX) + QtCore.QObject.connect(self.formUi.pushButton_FlipY, QtCore.SIGNAL("clicked()"), self.flipY) + QtCore.QObject.connect(self.formUi.pushButton_FlipZ, QtCore.SIGNAL("clicked()"), self.flipZ) self.update() @@ -100,11 +106,30 @@ class _AlignTaskPanel: def accept(self): FreeCADGui.Control.closeDialog() + self.obj.ViewObject.BoundingBox = False + FreeCAD.ActiveDocument.commitTransaction() + def reject(self): FreeCADGui.Control.closeDialog() + self.obj.ViewObject.BoundingBox = False + FreeCAD.ActiveDocument.abortTransaction() def flipX(self): + p = self.obj.Placement + r2 = p.Rotation.multiply(FreeCAD.Rotation(FreeCAD.Vector(1,0,0),180)) + p.Rotation = r2 + return + def flipY(self): + p = self.obj.Placement + r2 = p.Rotation.multiply(FreeCAD.Rotation(FreeCAD.Vector(0,1,0),180)) + p.Rotation = r2 + return + def flipZ(self): + p = self.obj.Placement + r2 = p.Rotation.multiply(FreeCAD.Rotation(FreeCAD.Vector(0,0,1),180)) + zl = self.obj.FemMesh.BoundBox.ZLength + p.Rotation = r2 return FreeCADGui.addCommand('MachDist_Alignment',_CommandAlignment()) diff --git a/src/Mod/Machining_Distortion/MachDistIsostatic.py b/src/Mod/Machining_Distortion/MachDistIsostatic.py index 9185b952c..86a976dbe 100644 --- a/src/Mod/Machining_Distortion/MachDistIsostatic.py +++ b/src/Mod/Machining_Distortion/MachDistIsostatic.py @@ -52,7 +52,9 @@ class _CommandIsostatic: def IsActive(self): if FemGui.getActiveAnalysis(): - return True + for i in FemGui.getActiveAnalysis().Member: + if i.isDerivedFrom("Fem::FemMeshObject"): + return True else: return False diff --git a/src/Mod/Machining_Distortion/MachDistMaterial.py b/src/Mod/Machining_Distortion/MachDistMaterial.py index 8706c2ae3..aa2e57520 100644 --- a/src/Mod/Machining_Distortion/MachDistMaterial.py +++ b/src/Mod/Machining_Distortion/MachDistMaterial.py @@ -144,35 +144,9 @@ class _MaterialTaskPanel: self.formUi = form_class() self.form = QtGui.QWidget() self.formUi.setupUi(self.form) - #self.form.setObjectName("TaskPanel") - #self.grid = QtGui.QGridLayout(self.form) - #self.grid.setObjectName("grid") - #self.title = QtGui.QLabel(self.form) - #self.grid.addWidget(self.title, 0, 0, 1, 2) - # tree - #self.tree = QtGui.QTreeWidget(self.form) - #self.grid.addWidget(self.tree, 1, 0, 1, 2) - #self.tree.setColumnCount(3) - #self.tree.header().resizeSection(0,50) - #self.tree.header().resizeSection(1,80) - #self.tree.header().resizeSection(2,60) - - # buttons - #self.addButton = QtGui.QPushButton(self.form) - #self.addButton.setObjectName("addButton") - #self.addButton.setIcon(QtGui.QIcon(":/icons/MachDist_Add.svg")) - #self.grid.addWidget(self.addButton, 3, 0, 1, 1) - #self.addButton.setEnabled(True) + QtCore.QObject.connect(self.formUi.pushButton_FlipX, QtCore.SIGNAL("clicked()"), self.flipX) - #self.delButton = QtGui.QPushButton(self.form) - #self.delButton.setObjectName("delButton") - #self.delButton.setIcon(QtGui.QIcon(":/icons/MachDist_Remove.svg")) - #self.grid.addWidget(self.delButton, 3, 1, 1, 1) - #self.delButton.setEnabled(True) - - #QtCore.QObject.connect(self.addButton, QtCore.SIGNAL("clicked()"), self.addElement) - #QtCore.QObject.connect(self.delButton, QtCore.SIGNAL("clicked()"), self.removeElement) self.update() def isAllowedAlterSelection(self): @@ -194,5 +168,44 @@ class _MaterialTaskPanel: def reject(self): FreeCADGui.ActiveDocument.resetEdit() - + def add_L_data(self): + l_filename = QtGui.QFileDialog.getOpenFileName(None, 'Open file','','R-Script File for L Coefficients (*.txt)') + values = self.parse_R_output(l_filename) + self.lc1.setValue(values[0]) + self.lc2.setValue(values[1]) + self.lc3.setValue(values[2]) + self.lc4.setValue(values[3]) + self.lc5.setValue(values[4]) + self.lc6.setValue(values[5]) + + + def add_LT_data(self): + lt_filename = QtGui.QFileDialog.getOpenFileName(None, 'Open file','','R-Script File for LT Coefficients (*.txt)') + values = self.parse_R_output(lt_filename) + self.ltc1.setValue(values[0]) + self.ltc2.setValue(values[1]) + self.ltc3.setValue(values[2]) + self.ltc4.setValue(values[3]) + self.ltc5.setValue(values[4]) + self.ltc6.setValue(values[5]) + + + def parse_R_output(self,filename): + file = open(str(filename)) + lines = file.readlines() + found = False + coeff = [] + for line in lines: + if line[0:9] == "c0 to c5:": + found = True + coeff.append(float(line[15:])) + continue + if found and line[0:4] == "MSE:": + found = False + if found: + coeff.append(float(line[15:])) + + file.close() + return coeff[0],coeff[1],coeff[2],coeff[3],coeff[4],coeff[5] + FreeCADGui.addCommand('MachDist_Material',_CommandMaterial()) diff --git a/src/Mod/Machining_Distortion/MachDistMesh.py b/src/Mod/Machining_Distortion/MachDistMesh.py index 0f3798f26..f3c36b5e2 100644 --- a/src/Mod/Machining_Distortion/MachDistMesh.py +++ b/src/Mod/Machining_Distortion/MachDistMesh.py @@ -57,8 +57,8 @@ class _CommandMesh: FreeCADGui.doCommand("Gui.activeDocument().setEdit(App.ActiveDocument.ActiveObject.Name)") else: import os - filename = QtGui.QFileDialog.getOpenFileName(QtGui.qApp.activeWindow(),'Open part file..',os.getcwd(),'Mesh or Part files (*.bdf *.stp *.igs);;All files(*)') - if filename.right(3) in (u'bdf'): + filename = QtGui.QFileDialog.getOpenFileName(QtGui.qApp.activeWindow(),'Open part file..',os.getcwd(),'Mesh or Part files (*.bdf *.unv *.med *.dat *.stp *.igs);;All files(*)') + if filename.right(3) in (u'bdf',u'med',u'dat',u'unv'): FreeCADGui.addModule("Fem") FreeCADGui.doCommand("Fem.insert('" + str(filename) +"','"+FreeCAD.ActiveDocument.Name+ "')") FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [App.activeDocument().ActiveObject]")