def uiFunc_getVectorOfSelected(self, axis='x+'): if axis == 'between': _sel = MMCONTEXT.get_list() else: _sel = MMCONTEXT.get_list(getTransform=True) if not _sel: return log.error('Nothing selected') if axis == 'between': if not len(_sel) >= 2: raise ValueError, 'Must have more than two objects selected for between mode' try: vec = MATH.get_vector_of_two_points(POS.get(_sel[0]), POS.get(_sel[-1])) except Exception, err: log.error("Query fail: {0}".format(_sel)) raise Exception, err
def contextual_select(self): _str_func = 'contextual_select' _sel = MMCONTEXT.get_list(self.var_contextTD.value, 'joint') if not _sel: return log.error("|{0}| >> Nothing in context: {1}".format( _str_func, self.var_contextTD.value)) mc.select(_sel) return _sel
def orientJoints(self): _str_func = 'orientJoints' _d = uiFunc_getCreateData(self) _sel = MMCONTEXT.get_list() if not _sel: return log.error("|{0}| >> Nothing selected".format(_str_func)) #pprint.pprint(_sel) JOINTS.orientChain(_sel, axisAim=_d['aim'], axisUp=_d['up'], worldUpAxis=_d['world'], progressBar=self.uiPB_cgmJointTools, relativeOrient=_d['relativeOrient']) mc.select(_sel)
def radius_modify(self, mode='+', factor=10): _str_func = 'radius_modify' _sel = MMCONTEXT.get_list(self.var_contextTD.value, 'joint') if not _sel: return log.error("|{0}| >> Nothing selected".format(_str_func)) for j in _sel: _r = ATTR.get(j, 'radius') if mode == '+': _r = _r + factor elif mode == '-': _r = _r - factor elif mode == '*': _r = _r * factor elif mode == '/': _r = _r / factor ATTR.set(j, 'radius', _r)
def uiFunc_tweak(self, mode='zero'): _base_str = 'uiFF_orientTweak' #mUI.MelFloatField(_row , ut='cgmUISubTemplate', w= 60 ).setV _l = [] for i, arg in enumerate('xyz'): if arg is not None: mField = self.__dict__['{0}{1}'.format(_base_str, 'xyz'[i].capitalize())] if mode == 'zero': mField.setValue(0.0) else: if mode == '-': _l.append(-mField.getValue()) else: _l.append(mField.getValue()) if mode != 'zero': _sel = MMCONTEXT.get_list(mType='joint') if not _sel: return log.error('No joints selected') JOINTS.tweakOrient(_sel, _l)
def createJoints(self, mode='each'): _str_func = 'createJoints' _d = uiFunc_getCreateData(self) _sel = MMCONTEXT.get_list() if not _sel: return log.error("|{0}| >> Nothing selected".format(_str_func)) _resplit = _d['resplit'] _splitMode = ['linear', 'curve', 'sub'][_d['resplit'] - 1] if mode != 'curve': if _splitMode == 'sub': if len(_sel) == 1: _buffer = mc.listRelatives(_sel[0], type='joint') if _buffer: _sel.append(_buffer[0]) elif len(_sel) < 2: return log.error( "|{0}| >> Need more objects for resplitting 'each' mode. ". format(_str_func)) log.info("|{0}| >> mode: {1}".format(_str_func, mode)) mc.select(cl=True) #pprint.pprint(_sel) if mode == 'curve': for o in _sel: mObj = cgmMeta.validateObjArg(o, 'cgmObject') for mShape in mObj.getShapes(asMeta=True): _type = mShape.getMayaType() if _type == 'nurbsCurve': JOINTS.build_chain(curve=mShape.mNode, axisAim=_d['aim'], axisUp=_d['up'], worldUpAxis=_d['world'], count=_d['count'], splitMode='curveCast', parent=_d['parent'], orient=_d['orient'], progressBar=self.uiPB_cgmJointTools, relativeOrient=_d['relativeOrient']) else: log.warning( "|{0}| >> shape: {1} | invalid type: {2}".format( _str_func, mShape.mNode, _type)) elif mode == 'each': #posList = [POS.get(o) for o in _sel] if not _resplit: log.info("|{0}| >> No resplit...".format(_str_func)) JOINTS.build_chain(targetList=_sel, axisAim=_d['aim'], axisUp=_d['up'], worldUpAxis=_d['world'], parent=_d['parent'], orient=_d['orient'], progressBar=self.uiPB_cgmJointTools, relativeOrient=_d['relativeOrient']) else: log.info("|{0}| >> resplit...".format(_str_func)) if _splitMode == 'sub': count = _d['count'] #+ len(_sel) else: count = _d['count'] JOINTS.build_chain(targetList=_sel, axisAim=_d['aim'], axisUp=_d['up'], worldUpAxis=_d['world'], count=count, splitMode=_splitMode, parent=_d['parent'], orient=_d['orient'], progressBar=self.uiPB_cgmJointTools, relativeOrient=_d['relativeOrient']) else: raise ValueError, "Unknown mode: {0}".format(mode) mc.select(_sel)