def matchRot(obj, target, **kwargs): logMsg(log='all') bPreserveChild = kwargs.pop('preserveChild', kwargs.pop('pc', False)) bObjSpace = kwargs.get('objectSpace', kwargs.get('os', False)) (oObj, oTarget) = argsToPyNode(obj, target) sSpace = 'world' if bObjSpace == True: sSpace = "object" objWorldPos = mc.xform(oObj.name(), q=True, ws=True, t=True) objScale = mc.xform(oObj.name(), q=True, r=True, s=True) oChildren = None if bPreserveChild: oChildren = oObj.getChildren(typ='transform') oParent = oObj.getParent() if oChildren: if oParent: pm.parent(oChildren, oParent) else: pm.parent(oChildren, world=True) matchTRS(oObj, oTarget, logMsg=False, **kwargs) logMsg("'%s' rotate %s to %s" % (sSpace, oObj, oTarget), log='all') if oChildren: pm.parent(oChildren, oObj) mc.xform(oObj.name(), ws=True, t=objWorldPos) mc.xform(oObj.name(), s=objScale)
def matchPos(obj, target, **kwargs): logMsg(log='all') bPreserveChild = kwargs.get('preserveChild', kwargs.get('pc', False)) bObjSpace = kwargs.get('objectSpace', kwargs.get('os', False)) (oObj, oTarget) = argsToPyNode(obj, target) sSpace = 'world' if bObjSpace == True: sSpace = "object" fPosVec = mc.xform(oTarget.name(), q=True, ws=not bObjSpace, os=bObjSpace, t=True) oChildren = None if bPreserveChild: oChildren = oObj.getChildren(typ='transform') oParent = oObj.getParent() if oChildren: if oParent: pm.parent(oChildren, oParent) else: pm.parent(oChildren, world=True) mc.xform(oObj.name(), ws=not bObjSpace, os=bObjSpace, t=fPosVec) logMsg("'%s' translate %s to %s" % (sSpace, oObj, oTarget), log='all') if oChildren: pm.parent(oChildren, oObj)
def matchRot(obj, target, **kwargs): logMsg(log="all") bPreserveChild = kwargs.pop("preserveChild", kwargs.pop("pc", False)) bObjSpace = kwargs.get("objectSpace", kwargs.get("os", False)) (oObj, oTarget) = argsToPyNode(obj, target) sSpace = "world" if bObjSpace == True: sSpace = "object" objWorldPos = mc.xform(oObj.name(), q=True, ws=True, t=True) objScale = mc.xform(oObj.name(), q=True, r=True, s=True) oChildren = None if bPreserveChild: oChildren = oObj.getChildren(typ="transform") oParent = oObj.getParent() if oChildren: if oParent: pm.parent(oChildren, oParent) else: pm.parent(oChildren, world=True) matchTRS(oObj, oTarget, logMsg=False, **kwargs) logMsg("'%s' rotate %s to %s" % (sSpace, oObj, oTarget), log="all") if oChildren: pm.parent(oChildren, oObj) mc.xform(oObj.name(), ws=True, t=objWorldPos) mc.xform(oObj.name(), s=objScale)
def matchScalePivot(obj, target, **kwargs): logMsg(log='all') bPreserveChild = kwargs.get('preserveChild', kwargs.get('pc', False)) (oObj, oTarget) = argsToPyNode(obj, target) fPosVec = mc.xform(oTarget.name(), q=True, ws=True, sp=True) oChildren = None if bPreserveChild: oChildren = oObj.getChildren(typ='transform') oParent = oObj.getParent() if oChildren: if oParent: pm.parent(oChildren, oParent) else: pm.parent(oChildren, world=True) mc.xform(oObj.name(), ws=True, t=fPosVec) logMsg("'world' translate %s to %s's scale pivot" % (oObj, oTarget), log='all') if oChildren: pm.parent(oChildren, oObj)
def matchPos(obj, target, **kwargs): logMsg(log="all") bPreserveChild = kwargs.get("preserveChild", kwargs.get("pc", False)) bObjSpace = kwargs.get("objectSpace", kwargs.get("os", False)) (oObj, oTarget) = argsToPyNode(obj, target) sSpace = "world" if bObjSpace == True: sSpace = "object" fPosVec = mc.xform(oTarget.name(), q=True, ws=not bObjSpace, os=bObjSpace, t=True) oChildren = None if bPreserveChild: oChildren = oObj.getChildren(typ="transform") oParent = oObj.getParent() if oChildren: if oParent: pm.parent(oChildren, oParent) else: pm.parent(oChildren, world=True) mc.xform(oObj.name(), ws=not bObjSpace, os=bObjSpace, t=fPosVec) logMsg("'%s' translate %s to %s" % (sSpace, oObj, oTarget), log="all") if oChildren: pm.parent(oChildren, oObj)
def matchTransform(obj, target, **kwargs): logMsg(log='all') bPreserveChild = kwargs.pop('preserveChild', kwargs.pop('pc', False)) sAttr = kwargs.pop('attributeToMatch', kwargs.pop('atm', 'trs')) bObjSpace = kwargs.get('objectSpace', kwargs.get('os', False)) (oObj, oTarget) = argsToPyNode(obj, target) oChildren = None if bPreserveChild: oChildren = oObj.getChildren(typ='transform') oParent = oObj.getParent() if oChildren: if oParent: pm.parent(oChildren, oParent) else: pm.parent(oChildren, world=True) sAttrList = list(sAttr) if sAttr == "trs": matchTRS(oObj, oTarget, **kwargs) elif sAttr == "rpvt": matchRotatePivot(oObj, oTarget, **kwargs) elif sAttr == "spvt": matchScalePivot(oObj, oTarget, **kwargs) else: for sAttr in sAttrList: if sAttr == "t": matchPos(oObj, oTarget, **kwargs) elif sAttr == "r": matchRot(oObj, oTarget, **kwargs) elif sAttr == "s": if bObjSpace == True: matchScl(oObj, oTarget, **kwargs) else: logMsg('scale cannot be matched in world space !!', log='all') else: logMsg("'%s' not a valid attribute to match !!" % sAttr, log='all') if oChildren: pm.parent(oChildren, oObj)
def matchTransform(obj, target, **kwargs): logMsg(log="all") bPreserveChild = kwargs.pop("preserveChild", kwargs.pop("pc", False)) sAttr = kwargs.pop("attributeToMatch", kwargs.pop("atm", "trs")) bObjSpace = kwargs.get("objectSpace", kwargs.get("os", False)) (oObj, oTarget) = argsToPyNode(obj, target) oChildren = None if bPreserveChild: oChildren = oObj.getChildren(typ="transform") oParent = oObj.getParent() if oChildren: if oParent: pm.parent(oChildren, oParent) else: pm.parent(oChildren, world=True) sAttrList = list(sAttr) if sAttr == "trs": matchTRS(oObj, oTarget, **kwargs) elif sAttr == "rpvt": matchRotatePivot(oObj, oTarget, **kwargs) elif sAttr == "spvt": matchScalePivot(oObj, oTarget, **kwargs) else: for sAttr in sAttrList: if sAttr == "t": matchPos(oObj, oTarget, **kwargs) elif sAttr == "r": matchRot(oObj, oTarget, **kwargs) elif sAttr == "s": if bObjSpace == True: matchScl(oObj, oTarget, **kwargs) else: logMsg("scale cannot be matched in world space !!", log="all") else: logMsg("'%s' not a valid attribute to match !!" % sAttr, log="all") if oChildren: pm.parent(oChildren, oObj)
def matchScl(obj, target, **kwargs): logMsg(log='all') bPreserveChild = kwargs.get('preserveChild', kwargs.get('pc', False)) (oObj, oTarget) = argsToPyNode(obj, target) fScaleVec = mc.xform(oTarget.name(), q=True, r=True, s=True) oChildren = None if bPreserveChild: oChildren = oObj.getChildren(typ='transform') oParent = oObj.getParent() if oChildren: if oParent: pm.parent(oChildren, oParent) else: pm.parent(oChildren, world=True) mc.xform(oObj.name(), s=fScaleVec) logMsg("'object' scale %s to %s" % (oObj, oTarget), log='all') if oChildren: pm.parent(oChildren, oObj)
def matchScalePivot(obj, target, **kwargs): logMsg(log="all") bPreserveChild = kwargs.get("preserveChild", kwargs.get("pc", False)) (oObj, oTarget) = argsToPyNode(obj, target) fPosVec = mc.xform(oTarget.name(), q=True, ws=True, sp=True) oChildren = None if bPreserveChild: oChildren = oObj.getChildren(typ="transform") oParent = oObj.getParent() if oChildren: if oParent: pm.parent(oChildren, oParent) else: pm.parent(oChildren, world=True) mc.xform(oObj.name(), ws=True, t=fPosVec) logMsg("'world' translate %s to %s's scale pivot" % (oObj, oTarget), log="all") if oChildren: pm.parent(oChildren, oObj)
def matchScl(obj, target, **kwargs): logMsg(log="all") bPreserveChild = kwargs.get("preserveChild", kwargs.get("pc", False)) (oObj, oTarget) = argsToPyNode(obj, target) fScaleVec = mc.xform(oTarget.name(), q=True, r=True, s=True) oChildren = None if bPreserveChild: oChildren = oObj.getChildren(typ="transform") oParent = oObj.getParent() if oChildren: if oParent: pm.parent(oChildren, oParent) else: pm.parent(oChildren, world=True) mc.xform(oObj.name(), s=fScaleVec) logMsg("'object' scale %s to %s" % (oObj, oTarget), log="all") if oChildren: pm.parent(oChildren, oObj)