def on_axesToggleButton_clicked(self): undoInfo(openChunk=True) sel = selected() select(self.get_affected_joints()) toggle(localAxis=True) select(sel) undoInfo(closeChunk=True)
def on_handlesToggleButton_clicked(self): undoInfo(openChunk=True) sel = selected() select(self.get_affected_joints()) toggle(selectHandle=True) select(sel) undoInfo(closeChunk=True)
def on_orientJointsButton_clicked(self): undoInfo(openChunk=True) sel = selected() kwargs = {} if self.zeroScaleOrientCB.isChecked(): kwargs.update({'zeroScaleOrient': True}) if self.aimAxisNoneRadio.isChecked(): val = 'none' else: for i, radio in enumerate( (self.aimAxisXRadio, self.aimAxisYRadio, self.aimAxisZRadio)): if radio.isChecked(): xyz = 'xyz' if self.upAxisNoneRadio.isChecked(): val = xyz[i:] + xyz[:i] else: val = str(radio.text()).lower() for up_radio in (self.upAxisXRadio, self.upAxisYRadio, self.upAxisZRadio): if up_radio.isChecked(): val += str(up_radio.text()).lower() break for c in xyz: if c not in val: val += c break sao = self.worldUpYRadio.isChecked() and 'y' \ or self.worldUpZRadio.isChecked() and 'z' \ or upAxis(query=True, axis=True) sao += self.worldUpReverseCB.isChecked() \ and 'down' or 'up' kwargs.update({'secondaryAxisOrient': sao}) break reverse_aim = self.aimAxisReverseCB.isChecked() \ and Vector([val[1] == c for c in 'xyz']) * 180 or None reverse_up = self.upAxisReverseCB.isChecked() \ and Vector([val[0] == c for c in 'xyz']) * 180 or None for j in self.get_affected_joints(): if j.numChildren(): j.orientJoint(val, **kwargs) else: p = j.getParent() if p: delete(orientConstraint(p, j)) else: self.freeze(j, jointOrient=True) if self.zeroScaleOrientCB.isChecked(): j.zeroScaleOrient() if reverse_aim: self.tweak_joint_orientation(1, rotateAxis=reverse_aim) if reverse_up: self.tweak_joint_orientation(1, rotateAxis=reverse_up) select(sel) undoInfo(closeChunk=True)
def on_orientJointsButton_clicked(self): undoInfo(openChunk=True) sel = selected() kwargs = {} if self.zeroScaleOrientCB.isChecked(): kwargs.update({'zeroScaleOrient': True}) if self.aimAxisNoneRadio.isChecked(): val = 'none' else: for i, radio in enumerate((self.aimAxisXRadio, self.aimAxisYRadio, self.aimAxisZRadio)): if radio.isChecked(): xyz = 'xyz' if self.upAxisNoneRadio.isChecked(): val = xyz[i:] + xyz[:i] else: val = str(radio.text()).lower() for up_radio in (self.upAxisXRadio, self.upAxisYRadio, self.upAxisZRadio): if up_radio.isChecked(): val += str(up_radio.text()).lower() break for c in xyz: if c not in val: val += c break sao = self.worldUpYRadio.isChecked() and 'y' \ or self.worldUpZRadio.isChecked() and 'z' \ or upAxis(query=True, axis=True) sao += self.worldUpReverseCB.isChecked() \ and 'down' or 'up' kwargs.update({'secondaryAxisOrient': sao}) break reverse_aim = self.aimAxisReverseCB.isChecked() \ and Vector([val[1] == c for c in 'xyz']) * 180 or None reverse_up = self.upAxisReverseCB.isChecked() \ and Vector([val[0] == c for c in 'xyz']) * 180 or None for j in self.get_affected_joints(): if j.numChildren(): j.orientJoint(val, **kwargs) else: p = j.getParent() if p: delete(orientConstraint(p, j)) else: self.freeze(j, jointOrient=True) if self.zeroScaleOrientCB.isChecked(): j.zeroScaleOrient() if reverse_aim: self.tweak_joint_orientation(1, rotateAxis=reverse_aim) if reverse_up: self.tweak_joint_orientation(1, rotateAxis=reverse_up) select(sel) undoInfo(closeChunk=True)
def on_freezeButton_clicked(self): undoInfo(openChunk=True) kwargs = dict( \ rotate=self.rotateCB.isChecked(), scale=self.scaleCB.isChecked(), jointOrient=self.orientCB.isChecked(), skip_locked=self.skipRadio.isChecked()) [self.freeze(j, **kwargs) for j in self.get_affected_joints()] undoInfo(closeChunk=False)
def on_bufferButton_clicked(self): undoInfo(openChunk=True) for j in self.get_affected_joints(): buf = group(empty=True, world=True, name='BUF_' + j.nodeName()) p = j.getParent(1) if p: parent(buf, p) dupe = duplicate(j, renameChildren=True, returnRootsOnly=True)[0] snap(dupe, buf, space='object') delete(dupe) parent(j, buf) undoInfo(closeChunk=True)
def on_resetButton_clicked(self): undoInfo(openChunk=True) skip_locked = self.skipRadio.isChecked() joints = self.get_affected_joints() for cb in (self.rotateCB, self.scaleCB): if not cb.isChecked(): continue rs = str(cb.text()[0]).lower() v = rs == 's' and 1 or 0 for j in joints: for axis in 'xyz': a = j.attr(rs + axis) if a.isLocked(): if skip_locked: continue a.unlock() a.set(v) a.lock() else: a.set(v) undoInfo(closeChunk=True)
def on_runButton_clicked(self): self._nodes = self.get_affected_nodes() if not self._nodes: return error('No affected nodes to manipulate.') # Filter-out shape nodes from the list, but only if their # parents are also in the list, because they will get renamed # automatically. for n in [n for n in ls(self._nodes, geometry=True) \ if n.getParent(1) in self._nodes]: del self._nodes[self._nodes.index(n)] undoInfo(openChunk=True) if self.searchReplaceRadio.isChecked(): self.search_replace_names() else: self.assign_new_names() undoInfo(closeChunk=True) self.display_renamed_nodes()
def on_labelsToggleButton_clicked(self): undoInfo(openChunk=True) for j in self.get_affected_joints(): j.attr('drawLabel').set(1 - j.attr('drawLabel').get()) undoInfo(closeChunk=True)
def on_tweakMinusButton_clicked(self): undoInfo(openChunk=True) self.tweak_joint_orientation(-1) undoInfo(closeChunk=True)