Fem: Enable expression for the centrif constraint task panel

This commit is contained in:
marioalexis
2024-10-08 16:46:40 -03:00
committed by Chris Hennes
parent d94c65ba3f
commit a5720ec496
3 changed files with 68 additions and 87 deletions

View File

@@ -48,35 +48,35 @@ class _TaskPanel(base_femtaskpanel._BaseTaskPanel):
super().__init__(obj)
# parameter widget
self.parameterWidget = FreeCADGui.PySideUic.loadUi(
self.parameter_widget = FreeCADGui.PySideUic.loadUi(
FreeCAD.getHomePath() + "Mod/Fem/Resources/ui/ConstraintCentrif.ui"
)
QtCore.QObject.connect(
self.parameterWidget.if_rotation_frequency,
self.parameter_widget.qsb_rotation_frequency,
QtCore.SIGNAL("valueChanged(Base::Quantity)"),
self.rotation_frequency_changed,
)
self.init_parameter_widget()
# axis of rotation selection widget
self.AxisSelectionWidget = selection_widgets.GeometryElementsSelection(
self.axis_selection_widget = selection_widgets.GeometryElementsSelection(
obj.RotationAxis, ["Edge"], False, False
)
# loaded body selection widget
self.BodySelectionWidget = selection_widgets.GeometryElementsSelection(
self.body_selection_widget = selection_widgets.GeometryElementsSelection(
obj.References, ["Solid"], False, False
)
# form made from param and selection widget
self.form = [self.parameterWidget, self.BodySelectionWidget, self.AxisSelectionWidget]
self.form = [self.parameter_widget, self.body_selection_widget, self.axis_selection_widget]
def accept(self):
# check values RotationAxis
items = len(self.AxisSelectionWidget.references)
items = len(self.axis_selection_widget.references)
FreeCAD.Console.PrintMessage(
"Task panel: found axis references: {}\n{}\n".format(
items, self.AxisSelectionWidget.references
items, self.axis_selection_widget.references
)
)
@@ -97,10 +97,10 @@ class _TaskPanel(base_femtaskpanel._BaseTaskPanel):
pass
# check values BodyReference
items = len(self.BodySelectionWidget.references)
items = len(self.body_selection_widget.references)
FreeCAD.Console.PrintMessage(
"Task panel: found body references: {}\n{}\n".format(
items, self.BodySelectionWidget.references
items, self.body_selection_widget.references
)
)
@@ -137,20 +137,23 @@ class _TaskPanel(base_femtaskpanel._BaseTaskPanel):
pass
self.obj.RotationFrequency = self.rotation_frequency
self.obj.RotationAxis = self.AxisSelectionWidget.references
self.obj.References = self.BodySelectionWidget.references
self.AxisSelectionWidget.finish_selection()
self.BodySelectionWidget.finish_selection()
self.obj.RotationAxis = self.axis_selection_widget.references
self.obj.References = self.body_selection_widget.references
self.axis_selection_widget.finish_selection()
self.body_selection_widget.finish_selection()
return super().accept()
def reject(self):
self.AxisSelectionWidget.finish_selection()
self.BodySelectionWidget.finish_selection()
self.axis_selection_widget.finish_selection()
self.body_selection_widget.finish_selection()
return super().reject()
def init_parameter_widget(self):
self.rotation_frequency = self.obj.RotationFrequency
self.parameterWidget.if_rotation_frequency.setText(self.rotation_frequency.UserString)
FreeCADGui.ExpressionBinding(self.parameter_widget.qsb_rotation_frequency).bind(
self.obj, "RotationFrequency"
)
self.parameter_widget.qsb_rotation_frequency.setProperty("value", self.rotation_frequency)
def rotation_frequency_changed(self, base_quantity_value):
self.rotation_frequency = base_quantity_value