Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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)