| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | __title__ = "FreeCAD FEM constraint initial flow velocity task panel for the document object" |
| | __author__ = "Markus Hovorka, Bernd Hahnebach" |
| | __url__ = "https://www.freecad.org" |
| |
|
| | |
| | |
| | |
| |
|
| | from PySide import QtCore |
| |
|
| | import FreeCAD |
| | import FreeCADGui |
| |
|
| | from femguiutils import selection_widgets |
| | from femtools import membertools |
| | from . import base_femtaskpanel |
| |
|
| |
|
| | class _TaskPanel(base_femtaskpanel._BaseTaskPanel): |
| |
|
| | def __init__(self, obj): |
| | super().__init__(obj) |
| |
|
| | self._paramWidget = FreeCADGui.PySideUic.loadUi( |
| | FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/InitialFlowVelocity.ui" |
| | ) |
| |
|
| | |
| | |
| | self._selectionWidget = selection_widgets.GeometryElementsSelection( |
| | obj.References, ["Solid", "Face"], True, False |
| | ) |
| |
|
| | |
| | self.form = [self._paramWidget, self._selectionWidget] |
| |
|
| | analysis = obj.getParentGroup() |
| | self._mesh = None |
| | self._part = None |
| | if analysis is not None: |
| | self._mesh = membertools.get_single_member(analysis, "Fem::FemMeshObject") |
| | if self._mesh is not None: |
| | self._part = self._mesh.Shape |
| | self._partVisible = None |
| | self._meshVisible = None |
| |
|
| | |
| | QtCore.QObject.connect( |
| | self._paramWidget.velocityXBox, QtCore.SIGNAL("toggled(bool)"), self._velocityXEnable |
| | ) |
| | QtCore.QObject.connect( |
| | self._paramWidget.velocityYBox, QtCore.SIGNAL("toggled(bool)"), self._velocityYEnable |
| | ) |
| | QtCore.QObject.connect( |
| | self._paramWidget.velocityZBox, QtCore.SIGNAL("toggled(bool)"), self._velocityZEnable |
| | ) |
| |
|
| | |
| | QtCore.QObject.connect( |
| | self._paramWidget.formulaXCB, QtCore.SIGNAL("toggled(bool)"), self._formulaXEnable |
| | ) |
| | QtCore.QObject.connect( |
| | self._paramWidget.formulaYCB, QtCore.SIGNAL("toggled(bool)"), self._formulaYEnable |
| | ) |
| | QtCore.QObject.connect( |
| | self._paramWidget.formulaZCB, QtCore.SIGNAL("toggled(bool)"), self._formulaZEnable |
| | ) |
| |
|
| | self._initParamWidget() |
| |
|
| | def _velocityXEnable(self, toggled): |
| | if toggled: |
| | self._paramWidget.formulaX.setDisabled(toggled) |
| | self._paramWidget.velocityX.setDisabled(toggled) |
| | else: |
| | if self._paramWidget.formulaXCB.isChecked(): |
| | self._paramWidget.formulaX.setDisabled(toggled) |
| | else: |
| | self._paramWidget.velocityX.setDisabled(toggled) |
| |
|
| | def _velocityYEnable(self, toggled): |
| | if toggled: |
| | self._paramWidget.formulaY.setDisabled(toggled) |
| | self._paramWidget.velocityY.setDisabled(toggled) |
| | else: |
| | if self._paramWidget.formulaYCB.isChecked(): |
| | self._paramWidget.formulaY.setDisabled(toggled) |
| | else: |
| | self._paramWidget.velocityY.setDisabled(toggled) |
| |
|
| | def _velocityZEnable(self, toggled): |
| | if toggled: |
| | self._paramWidget.formulaZ.setDisabled(toggled) |
| | self._paramWidget.velocityZ.setDisabled(toggled) |
| | else: |
| | if self._paramWidget.formulaZCB.isChecked(): |
| | self._paramWidget.formulaZ.setDisabled(toggled) |
| | else: |
| | self._paramWidget.velocityZ.setDisabled(toggled) |
| |
|
| | def _formulaXEnable(self, toggled): |
| | FreeCAD.Console.PrintMessage("_formulaXEnable\n") |
| | if self._paramWidget.velocityXBox.isChecked(): |
| | FreeCAD.Console.PrintMessage("velocityXBox isChecked\n") |
| | return |
| | else: |
| | FreeCAD.Console.PrintMessage("velocityXBox not checked\n") |
| | self._paramWidget.formulaX.setEnabled(toggled) |
| | self._paramWidget.velocityX.setDisabled(toggled) |
| |
|
| | def _formulaYEnable(self, toggled): |
| | if self._paramWidget.velocityYBox.isChecked(): |
| | return |
| | else: |
| | self._paramWidget.formulaY.setEnabled(toggled) |
| | self._paramWidget.velocityY.setDisabled(toggled) |
| |
|
| | def _formulaZEnable(self, toggled): |
| | if self._paramWidget.velocitZXBox.isChecked(): |
| | return |
| | else: |
| | self._paramWidget.formulaZ.setEnabled(toggled) |
| | self._paramWidget.velocityZ.setDisabled(toggled) |
| |
|
| | def open(self): |
| | if self._mesh is not None and self._part is not None: |
| | self._meshVisible = self._mesh.ViewObject.isVisible() |
| | self._partVisible = self._part.ViewObject.isVisible() |
| | self._mesh.ViewObject.hide() |
| | self._part.ViewObject.show() |
| |
|
| | def reject(self): |
| | self._selectionWidget.finish_selection() |
| | self._restoreVisibility() |
| | return super().reject() |
| |
|
| | def accept(self): |
| | if self.obj.References != self._selectionWidget.references: |
| | self.obj.References = self._selectionWidget.references |
| | self._applyWidgetChanges() |
| | self._selectionWidget.finish_selection() |
| | self._restoreVisibility() |
| | return super().accept() |
| |
|
| | def _restoreVisibility(self): |
| | if self._mesh is not None and self._part is not None: |
| | if self._meshVisible: |
| | self._mesh.ViewObject.show() |
| | else: |
| | self._mesh.ViewObject.hide() |
| | if self._partVisible: |
| | self._part.ViewObject.show() |
| | else: |
| | self._part.ViewObject.hide() |
| |
|
| | def _initParamWidget(self): |
| | unit = "m/s" |
| | self._paramWidget.velocityX.setProperty("unit", unit) |
| | self._paramWidget.velocityY.setProperty("unit", unit) |
| | self._paramWidget.velocityZ.setProperty("unit", unit) |
| |
|
| | self._paramWidget.velocityX.setProperty("value", self.obj.VelocityX) |
| | FreeCADGui.ExpressionBinding(self._paramWidget.velocityX).bind(self.obj, "VelocityX") |
| | self._paramWidget.velocityXBox.setChecked(self.obj.VelocityXUnspecified) |
| | self._paramWidget.formulaX.setText(self.obj.VelocityXFormula) |
| | self._paramWidget.formulaXCB.setChecked(self.obj.VelocityXHasFormula) |
| |
|
| | self._paramWidget.velocityY.setProperty("value", self.obj.VelocityY) |
| | FreeCADGui.ExpressionBinding(self._paramWidget.velocityY).bind(self.obj, "VelocityY") |
| | self._paramWidget.velocityYBox.setChecked(self.obj.VelocityYUnspecified) |
| | self._paramWidget.formulaY.setText(self.obj.VelocityYFormula) |
| | self._paramWidget.formulaYCB.setChecked(self.obj.VelocityYHasFormula) |
| |
|
| | self._paramWidget.velocityZ.setProperty("value", self.obj.VelocityZ) |
| | FreeCADGui.ExpressionBinding(self._paramWidget.velocityZ).bind(self.obj, "VelocityZ") |
| | self._paramWidget.velocityZBox.setChecked(self.obj.VelocityZUnspecified) |
| | self._paramWidget.formulaZ.setText(self.obj.VelocityZFormula) |
| | self._paramWidget.formulaZCB.setChecked(self.obj.VelocityZHasFormula) |
| |
|
| | def _applyVelocityChanges(self, enabledBox, velocityQSB): |
| | enabled = enabledBox.isChecked() |
| | velocity = None |
| | try: |
| | velocity = velocityQSB.property("value") |
| | except ValueError: |
| | FreeCAD.Console.PrintMessage( |
| | "Wrong input. Not recognised input: '{}' " |
| | "Velocity has not been set.\n".format(velocityQSB.text()) |
| | ) |
| | velocity = "0.0 m/s" |
| | return enabled, velocity |
| |
|
| | def _applyWidgetChanges(self): |
| | |
| | self.obj.VelocityXUnspecified, self.obj.VelocityX = self._applyVelocityChanges( |
| | self._paramWidget.velocityXBox, self._paramWidget.velocityX |
| | ) |
| | self.obj.VelocityXHasFormula = self._paramWidget.formulaXCB.isChecked() |
| | self.obj.VelocityXFormula = self._paramWidget.formulaX.text() |
| |
|
| | self.obj.VelocityYUnspecified, self.obj.VelocityY = self._applyVelocityChanges( |
| | self._paramWidget.velocityYBox, self._paramWidget.velocityY |
| | ) |
| | self.obj.VelocityYHasFormula = self._paramWidget.formulaYCB.isChecked() |
| | self.obj.VelocityYFormula = self._paramWidget.formulaY.text() |
| |
|
| | self.obj.VelocityZUnspecified, self.obj.VelocityZ = self._applyVelocityChanges( |
| | self._paramWidget.velocityZBox, self._paramWidget.velocityZ |
| | ) |
| | self.obj.VelocityZHasFormula = self._paramWidget.formulaZCB.isChecked() |
| | self.obj.VelocityZFormula = self._paramWidget.formulaZ.text() |
| |
|