Assembly: Joint creation: add expression support to spinboxes
This commit is contained in:
committed by
Yorik van Havre
parent
7eb1d6bd79
commit
28a977b5fc
@@ -1213,22 +1213,6 @@ class TaskAssemblyCreateJoint(QtCore.QObject):
|
||||
self.jType = JointTypes[self.form.jointType.currentIndex()]
|
||||
self.form.jointType.currentIndexChanged.connect(self.onJointTypeChanged)
|
||||
|
||||
self.form.distanceSpinbox.valueChanged.connect(self.onDistanceChanged)
|
||||
self.form.distanceSpinbox2.valueChanged.connect(self.onDistance2Changed)
|
||||
self.form.offsetSpinbox.valueChanged.connect(self.onOffsetChanged)
|
||||
self.form.rotationSpinbox.valueChanged.connect(self.onRotationChanged)
|
||||
self.form.offset1Button.clicked.connect(self.onOffset1Clicked)
|
||||
self.form.offset2Button.clicked.connect(self.onOffset2Clicked)
|
||||
|
||||
self.form.limitCheckbox1.stateChanged.connect(self.adaptUi)
|
||||
self.form.limitCheckbox2.stateChanged.connect(self.adaptUi)
|
||||
self.form.limitCheckbox3.stateChanged.connect(self.adaptUi)
|
||||
self.form.limitCheckbox4.stateChanged.connect(self.adaptUi)
|
||||
self.form.limitLenMinSpinbox.valueChanged.connect(self.onLimitLenMinChanged)
|
||||
self.form.limitLenMaxSpinbox.valueChanged.connect(self.onLimitLenMaxChanged)
|
||||
self.form.limitRotMinSpinbox.valueChanged.connect(self.onLimitRotMinChanged)
|
||||
self.form.limitRotMaxSpinbox.valueChanged.connect(self.onLimitRotMaxChanged)
|
||||
|
||||
self.form.reverseRotCheckbox.setChecked(self.jType == "Gears")
|
||||
self.form.reverseRotCheckbox.stateChanged.connect(self.reverseRotToggled)
|
||||
|
||||
@@ -1261,6 +1245,33 @@ class TaskAssemblyCreateJoint(QtCore.QObject):
|
||||
|
||||
self.adaptUi()
|
||||
|
||||
self.form.distanceSpinbox.valueChanged.connect(self.onDistanceChanged)
|
||||
self.form.distanceSpinbox2.valueChanged.connect(self.onDistance2Changed)
|
||||
self.form.offsetSpinbox.valueChanged.connect(self.onOffsetChanged)
|
||||
self.form.rotationSpinbox.valueChanged.connect(self.onRotationChanged)
|
||||
bind = Gui.ExpressionBinding(self.form.distanceSpinbox).bind(self.joint, "Distance")
|
||||
bind = Gui.ExpressionBinding(self.form.distanceSpinbox2).bind(self.joint, "Distance2")
|
||||
bind = Gui.ExpressionBinding(self.form.offsetSpinbox).bind(self.joint, "Offset2.Base.z")
|
||||
bind = Gui.ExpressionBinding(self.form.rotationSpinbox).bind(
|
||||
self.joint, "Offset2.Rotation.Yaw"
|
||||
)
|
||||
self.form.offset1Button.clicked.connect(self.onOffset1Clicked)
|
||||
self.form.offset2Button.clicked.connect(self.onOffset2Clicked)
|
||||
|
||||
self.form.limitCheckbox1.stateChanged.connect(self.adaptUi)
|
||||
self.form.limitCheckbox2.stateChanged.connect(self.adaptUi)
|
||||
self.form.limitCheckbox3.stateChanged.connect(self.adaptUi)
|
||||
self.form.limitCheckbox4.stateChanged.connect(self.adaptUi)
|
||||
|
||||
self.form.limitLenMinSpinbox.valueChanged.connect(self.onLimitLenMinChanged)
|
||||
self.form.limitLenMaxSpinbox.valueChanged.connect(self.onLimitLenMaxChanged)
|
||||
self.form.limitRotMinSpinbox.valueChanged.connect(self.onLimitRotMinChanged)
|
||||
self.form.limitRotMaxSpinbox.valueChanged.connect(self.onLimitRotMaxChanged)
|
||||
bind = Gui.ExpressionBinding(self.form.limitLenMinSpinbox).bind(self.joint, "LengthMin")
|
||||
bind = Gui.ExpressionBinding(self.form.limitLenMaxSpinbox).bind(self.joint, "LengthMax")
|
||||
bind = Gui.ExpressionBinding(self.form.limitRotMinSpinbox).bind(self.joint, "AngleMin")
|
||||
bind = Gui.ExpressionBinding(self.form.limitRotMaxSpinbox).bind(self.joint, "AngleMax")
|
||||
|
||||
if self.creating:
|
||||
# This has to be after adaptUi so that properties default values are adapted
|
||||
# if needed. For instance for gears adaptUi will prevent radii from being 0
|
||||
@@ -1630,16 +1641,28 @@ class TaskAssemblyCreateJoint(QtCore.QObject):
|
||||
needAngleLimits = self.jType in JointUsingLimitAngle
|
||||
if needLengthLimits:
|
||||
distance = UtilsAssembly.getJointDistance(self.joint)
|
||||
if not self.form.limitCheckbox1.isChecked():
|
||||
if (
|
||||
not self.form.limitCheckbox1.isChecked()
|
||||
and self.form.limitLenMinSpinbox.property("expression") == ""
|
||||
):
|
||||
self.form.limitLenMinSpinbox.setProperty("rawValue", distance)
|
||||
if not self.form.limitCheckbox2.isChecked():
|
||||
if (
|
||||
not self.form.limitCheckbox2.isChecked()
|
||||
and self.form.limitLenMaxSpinbox.property("expression") == ""
|
||||
):
|
||||
self.form.limitLenMaxSpinbox.setProperty("rawValue", distance)
|
||||
|
||||
if needAngleLimits:
|
||||
angle = UtilsAssembly.getJointXYAngle(self.joint) / math.pi * 180
|
||||
if not self.form.limitCheckbox3.isChecked():
|
||||
if (
|
||||
not self.form.limitCheckbox3.isChecked()
|
||||
and self.form.limitRotMinSpinbox.property("expression") == ""
|
||||
):
|
||||
self.form.limitRotMinSpinbox.setProperty("rawValue", angle)
|
||||
if not self.form.limitCheckbox4.isChecked():
|
||||
if (
|
||||
not self.form.limitCheckbox4.isChecked()
|
||||
and self.form.limitRotMaxSpinbox.property("expression") == ""
|
||||
):
|
||||
self.form.limitRotMaxSpinbox.setProperty("rawValue", angle)
|
||||
|
||||
def moveMouse(self, info):
|
||||
|
||||
Reference in New Issue
Block a user