def uiFunc_valuesTweak(self, mode='+'): _str_func = 'uiFunc_valuesTweak' if mode == 'zero': log.info("|{0}| >> Zeroing ".format(_str_func)) for a in 'XYZ': self.__dict__['uiff_transformTweak{0}'.format(a)].setValue(0) for k, cb in self._d_transformCBs.iteritems(): cb.setValue(0) return _ml_targets = uiFunc_getTargets(self) if not _ml_targets: raise ValueError, "Must have targets" _l_toTweak = [] for k, cb in self._d_transformCBs.iteritems(): if cb.getValue(): _l_toTweak.append(k) _tweak = [] for a in 'XYZ': _tweak.append( self.__dict__['uiff_transformTweak{0}'.format(a)].getValue()) pprint.pprint([mode, _l_toTweak, _tweak]) if mode == '+': _tweak_call = MATH.list_add else: _tweak_call = MATH.list_subtract for mObj in _ml_targets: for attr in _l_toTweak: if attr in [ 'translate', 'rotate', 'scale', 'jointOrient', 'rotateAxis' ]: _v = ATTR.get(mObj.mNode, attr) log.info("|{0}| >> pre tweak: [{1}] ".format(_str_func, _v)) _v = _tweak_call(_v, _tweak) log.info("|{0}| >> post tweak: [{1}] ".format(_str_func, _v)) ATTR.set(mObj.mNode, attr, _v) elif attr == 'position': _v = TRANS.position_get(mObj.mNode) log.info("|{0}| >> pre tweak: [{1}] ".format(_str_func, _v)) _v = _tweak_call(_v, _tweak) log.info("|{0}| >> post tweak: [{1}] ".format(_str_func, _v)) TRANS.position_set(mObj.mNode, _v) elif attr == 'orient': _v = TRANS.orient_get(mObj.mNode) log.info("|{0}| >> pre tweak: [{1}] ".format(_str_func, _v)) _v = _tweak_call(_v, _tweak) log.info("|{0}| >> post tweak: [{1}] ".format(_str_func, _v)) TRANS.orient_set(mObj.mNode, _v) else: log.warning("|{0}| >> Haven't setup for {1}...".format( _str_func, _s)) pass
log.info("|{0}| >> Trying Object: {1} | [{2}]... ".format(_str_func,mObj.mNode,_s)) pos = TRANS.position_get(mObj.mNode) log.info("|{0}| >> pre pos: [{1}] ".format(_str_func,pos)) for k,v in _d_fieldValues.iteritems(): pos['XYZ'.index(k)] = v log.info("|{0}| >> pos pos: [{1}] ".format(_str_func,pos)) try: TRANS.position_set(mObj.mNode, pos) except Exception,err: log.error("|{0}| >> Failed to get set data. Object: {0} | section: {2}...".format(_str_func,mObj.mNode,_s)) log.error(err) elif _s == 'orient': for mObj in _ml_targets: log.info("|{0}| >> Trying Object: {1} | [{2}]... ".format(_str_func,mObj.mNode,_s)) val = TRANS.orient_get(mObj.mNode) log.info("|{0}| >> pre val: [{1}] ".format(_str_func,val)) for k,v in _d_fieldValues.iteritems(): val['XYZ'.index(k)] = v log.info("|{0}| >> post val: [{1}] ".format(_str_func,val)) try: TRANS.orient_set(mObj.mNode, val) except Exception,err: log.error("|{0}| >> Failed to get set data. Object: {0} | section: {2}...".format(_str_func,mObj.mNode,_s)) log.error(err) elif _s == 'scaleLossy': log.warning("|{0}| >> NOTE - Scale lossy is pushed to local scale on targets ".format(_str_func,mObj.mNode,_s)) for mObj in _ml_targets: log.info("|{0}| >> Trying Object: {1} | [{2}]... ".format(_str_func,mObj.mNode,_s)) scale = TRANS.scaleLossy_get(mObj.mNode)
def create_at(obj=None, create='null', midPoint=False, l_pos=[], baseName='created'): """ Create a null matching a given obj :parameters: obj(str): Object to modify create(str): What to create :returns name(str) """ _str_func = 'create_at' obj = VALID.mNodeString(obj) _create = create log.debug("|{0}| >> obj:{1}".format(_str_func, obj)) log.debug("|{0}| >> create:{1}".format(_str_func, _create)) if midPoint: _d = TRANS.POS.get_midPointDict(obj) objTrans = _d['position'] objRot = _d['rotation'] objRotAxis = None elif _create in ['null', 'joint']: objTrans = TRANS.position_get( obj) #mc.xform (obj, q=True, ws=True, rp=True) objRot = TRANS.orient_get( obj) #mc.xform (obj, q=True, ws=True, ro=True) objRotAxis = mc.xform(obj, q=True, ws=True, ra=True) if _create == 'null': _created = mc.group(w=True, empty=True) if not midPoint: mc.xform(_created, roo=mc.xform(obj, q=True, roo=True)) #...match rotateOrder mc.move(objTrans[0], objTrans[1], objTrans[2], [_created]) mc.xform(_created, ws=True, ro=objRot, p=False) if objRotAxis: mc.xform(_created, ws=True, ra=objRotAxis, p=False) elif _create == 'joint': mc.select(cl=True) _created = mc.joint() if not midPoint: mc.xform(_created, roo=mc.xform(obj, q=True, roo=True)) #...match rotateOrder mc.move(objTrans[0], objTrans[1], objTrans[2], [_created]) mc.xform(_created, ws=True, ro=objRot, p=False) if objRotAxis: mc.xform(_created, ws=True, ra=objRotAxis, p=False) elif _create in ['curve', 'curveLinear', 'linearTrack', 'cubicTrack']: if not l_pos: l_pos = [] #_sel = mc.ls(sl=True,flatten=True) for i, o in enumerate(obj): p = TRANS.position_get(o) log.debug("|{0}| >> {3}: {1} | pos: {2}".format( _str_func, o, p, i)) l_pos.append(p) if len(l_pos) <= 1: raise ValueError, "Must have more than one position to create curve" if _create in ['linearTrack', 'cubicTrack']: _d = 1 if _create == 'cubicTrack': _d = 3 _trackCurve = mc.curve(d=1, p=l_pos) _trackCurve = mc.rename(_trackCurve, "{0}_trackCurve".format(baseName)) l_clusters = [] #_l_clusterParents = [mStartHandle,mEndHandle] for i, cv in enumerate( mc.ls(['{0}.cv[*]'.format(_trackCurve)], flatten=True)): _res = mc.cluster(cv, n='{0}_{1}_cluster'.format(baseName, i)) TRANS.parent_set(_res[1], obj[i]) ATTR.set(_res[1], 'visibility', 0) l_clusters.append(_res) ATTR.set(_res[1], 'visibility', False) return _trackCurve, l_clusters elif _create == 'curve': knot_len = len(l_pos) + 3 - 1 _created = mc.curve(d=3, ep=l_pos, k=[i for i in range(0, knot_len)], os=True) else: _created = mc.curve(d=1, ep=l_pos, k=[i for i in range(0, len(l_pos))], os=True) log.debug("|{0}| >> created: {1}".format(_str_func, _created)) elif _create == 'locator': raise NotImplementedError, "locators not done yet" else: raise NotImplementedError, "|{0}| >> unknown mode: {1}".format( _str_func, _create) mc.select(_created) return _created
def create_localAxisProxyBAK(obj=None): """ Make a local axis box around a given object so that you can then """ try: _str_func = 'create_localAxisProxy' _dag = VALID.getTransform(obj) if not _dag: raise ValueError, "Must have a dag node" l_shapes = TRANS.shapes_get(_dag) _dup = mc.duplicate(l_shapes, po=False, rc=True)[0] #_dup = TRANS.parent_set(_dup,False) #Get some values... t = ATTR.get(_dup, 'translate') r = ATTR.get(_dup, 'rotate') s = ATTR.get(_dup, 'scale') o = TRANS.orient_get(_dup) shear = ATTR.get(_dup, 'shear') _scaleLossy = TRANS.scaleLossy_get(_dag) #Reset our stuff before we make our bb... TRANS.orient_set(_dup, (0, 0, 0)) ATTR.set(_dup, 'scale', [1, 1, 1]) _size = POS.get_bb_size(_dup, True) import cgm.core.lib.math_utils as COREMATH reload(COREMATH) #_proxy = create_proxyGeo('cube',COREMATH.list_div(_scaleLossy,_size)) _proxy = create_proxyGeo('cube', _size) mc.makeIdentity(_proxy, apply=True, scale=True) return #mc.xform(_proxy, scale = _size, worldSpace = True, absolute = True) #Parent it to the dup... _proxy = TRANS.parent_set(_proxy, _dup) ATTR.reset(_proxy, ['t', 'r', 'shear']) #_dup = TRANS.parent_set(_dup, TRANS.parents_get(_dag)) SNAP.go(_dup, _dag) ATTR.set(_dup, 'shear', shear) #TRANS.scaleLocal_set(_dup, s) #mc.delete(_dup) #_scaleLossy = TRANS.scaleLossy_get(_dag) #import cgm.core.lib.math_utils as COREMATH #TRANS.scaleLocal_set(_dup, COREMATH.list_mult([-1.0,-1.0,-1.0],_scaleLossy,)) #proxy = TRANS.parent_set(_proxy, False) cgmGEN.func_snapShot(vars()) #ATTR.set(_dup,'translate',t) #ATTR.set(_dup,'rotate',r) #SNAP.go(_proxy[0],_dag) #ATTR.set(_proxy[0],'scale',_scaleLossy) #TRANS.scaleLocal_set(_dup,[1,1,1]) #ATTR.set(_dup,'shear',[0,0,0]) #_proxy = TRANS.parent_set(_proxy, False) #TRANS.scaleLocal_set(_proxy,_scaleLossy) #ATTR.set(_dup,'scale',s) return mc.rename(_proxy, "{0}_localAxisProxy".format(NAMES.get_base(_dag))) except Exception, err: cgmGEN.cgmExceptCB(Exception, err, msg=vars())
def create_axisProxy(obj=None): """ Make a local axis box around a given object so that you can then """ try: _str_func = 'create_axisProxy' _dag = VALID.getTransform(obj) if not _dag: raise ValueError, "Must have a dag node. Obj: {0}".format(obj) if VALID.is_shape(obj): l_shapes = [obj] else: l_shapes = TRANS.shapes_get(_dag, True) _parent = TRANS.parent_get(_dag) _dup = mc.duplicate(l_shapes, po=False, rc=True)[0] #TRANS.pivots_recenter(_dup) _dup = TRANS.parent_set(_dup, False) ATTR.set_standardFlags(_dup, lock=False, keyable=True) #Get some values... l_reset = ['t', 'r', 's', 'shear', 'rotateAxis'] t = ATTR.get(_dup, 'translate') r = ATTR.get(_dup, 'rotate') s = ATTR.get(_dup, 'scale') ra = ATTR.get(_dup, 'rotateAxis') if ATTR.has_attr(_dup, 'jointOrient'): l_reset.append('jointOrient') jo = ATTR.get(_dup, 'jointOrient') o = TRANS.orient_get(_dup) shear = ATTR.get(_dup, 'shear') _scaleLossy = TRANS.scaleLossy_get(_dag) #Reset our stuff before we make our bb... ATTR.reset(_dup, l_reset) _size = POS.get_bb_size(_dup, True) #_proxy = create_proxyGeo('cube',COREMATH.list_div(_scaleLossy,_size)) _proxy = create_proxyGeo('cube', _size) mc.makeIdentity(_proxy, apply=True, scale=True) #Now Put it back _dup = TRANS.parent_set(_dup, TRANS.parent_get(_dag)) _proxy = TRANS.parent_set(_proxy, _dup) #_dup = TRANS.parent_set(_dup, TRANS.parents_get(_dag)) SNAP.go(_dup, _dag) #ATTR.set(_dup,'s',(0,0,0)) ATTR.reset(_dup, ['s', 'shear']) ATTR.reset(_proxy, ['t', 'r', 's', 'shear', 'rotateAxis']) _proxy = TRANS.parent_set(_proxy, _dag) ATTR.reset(_proxy, ['t', 'r', 's', 'shear', 'rotateAxis']) #match_transform(_proxy,_dag) #SNAP.go(_proxy,_dag,pivot='bb') #cgmGEN.func_snapShot(vars()) _proxy = TRANS.parent_set(_proxy, False) mc.delete(_dup) #match_transform(_proxy,_dag) return mc.rename(_proxy, "{0}_localAxisProxy".format(NAMES.get_base(_dag))) except Exception, err: cgmGEN.cgmExceptCB(Exception, err, msg=vars())
from cgm.core.lib import transform_utils as TRANS from cgm.core.lib import position_utils as POS reload(TRANS) reload(POS) _root = 'node' _euclid = False #...gets... TRANS.translate_get(_root,_euclid) TRANS.position_get(_root,asEuclid = _euclid) TRANS.rotate_get(_root,_euclid) TRANS.eulerAngles_get(_root) TRANS.orient_get(_root,_euclid) TRANS.orient_get(_root,_euclid) TRANS.orientObject_get(_root,_euclid) TRANS.rotateAxis_get(_root,_euclid) TRANS.worldMatrix_get(_root,_euclid) TRANS.scaleLocal_get(_root,_euclid) TRANS.scaleLossy_get(_root,_euclid) #...sets... _pos = [0,1,1] _rot = [10,66,80] _scale = [1,2,1] _rot = TRANS.rotate_get('NotBatman_master_block1',True) TRANS.translate_set(_root,_pos) TRANS.position_set(_root,_pos) TRANS.rotate_set(_root,_rot)