| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | __title__ = "FreeCAD FEM constraint initial pressure task panel for the document object" |
| | __author__ = "Uwe Stöhr" |
| | __url__ = "https://www.freecad.org" |
| |
|
| | |
| | |
| | |
| |
|
| | 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/InitialPressure.ui" |
| | ) |
| | self._initParamWidget() |
| |
|
| | |
| | |
| | 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 |
| |
|
| | 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._restoreVisibility() |
| | self._selectionWidget.finish_selection() |
| | 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): |
| | self._paramWidget.pressureQSB.setProperty("value", self.obj.Pressure) |
| | FreeCADGui.ExpressionBinding(self._paramWidget.pressureQSB).bind(self.obj, "Pressure") |
| |
|
| | def _applyWidgetChanges(self): |
| | pressure = None |
| | try: |
| | pressure = self._paramWidget.pressureQSB.property("value") |
| | except ValueError: |
| | FreeCAD.Console.PrintMessage( |
| | "Wrong input. Not recognised input: '{}' " |
| | "Pressure has not been set.\n".format(self._paramWidget.pressureQSB.text()) |
| | ) |
| | if pressure is not None: |
| | self.obj.Pressure = pressure |
| |
|