/Christian
- Sent from my iPhone -
import os
import string
import maya.OpenMaya as om
import maya.cmds as mc
__all__ = ['mfFixPathsOnSave_Register']
def addFirstSlash(i_str):
if len(i_str) and i_str[0] == '/' and i_str[1] != '/':
return '/' + i_str
return i_str
def PrependWithEnvVar(i_path, envVarList):
for ev in envVarList:
if ev not in os.environ:
continue
v = os.environ[ev]
if i_path.find(v) == 0:
return i_path.replace(v, '${%s}' % ev)
return i_path
def mfFixPaths():
loop = [('file', 'ftn', True), ('mfMTexture', 'texture', True),
('readCachedDeform', 'cacheFile', True), ('readCachedDeform', 'cacheFileExpanded', False),
('pgYetiMaya', 'cacheFileName', False), ('pgYetiMaya', 'outputCacheFileName', False)
]
for _t, _a, _envUpd in loop:
nodes = mc.ls(type=_t)
for f in nodes:
_p = mc.getAttr(f + '.' + _a)
_fixed = addFirstSlash(_p)
if _envUpd:
_fixed = PrependWithEnvVar(_fixed, ['PRROOT', 'PRDATA'])
mc.setAttr(f + '.' + _a, _fixed, type='string')
def mf_MSceneMessage_AfterOpen_CB(*args, **kwargs):
try:
mfFixPaths()
except:
mc.warning("mf_MSceneMessage_AfterOpen_CB() failed on mfFixPaths")
def mf_MSceneMessage_BeforeLoadReferenceCheck_CB(retCode, fileObject, clientData):
try:
_path = fileObject.rawFullName()
_path_fixed = addFirstSlash(_path)
_path_fixed = PrependWithEnvVar(_path_fixed, ['PRROOT', 'PRDATA'])
fileObject.setRawFullName( _path_fixed )
except:
mc.warning("mf_MSceneMessage_BeforeLoadReferenceCheck_CB() failed.")
om.MScriptUtil.setBool( retCode, True )
def mfFixPathsOnSave_Register():
print "Regisering MSceneMessage.kAfterOpen --> mf_MSceneMessage_AfterOpen_CB"
om.MSceneMessage.addCallback(om.MSceneMessage.kAfterOpen,
lambda *args, **kwargs:
mf_MSceneMessage_AfterOpen_CB(args, kwargs))
print "Regisering MSceneMessage.kBeforeLoadReferenceCheck --> mf_MSceneMessage_BeforeLoadReferenceCheck_CB"
om.MSceneMessage.addCheckFileCallback(om.MSceneMessage.kBeforeLoadReferenceCheck,
lambda retCode, fileObject, clientData:
mf_MSceneMessage_BeforeLoadReferenceCheck_CB(retCode, fileObject, clientData))
Enter code here...