changing path to references witha callback

114 views
Skip to first unread message

Michał Frątczak

unread,
Nov 29, 2017, 11:04:21 AM11/29/17
to Python Programming for Autodesk Maya
Hi

We move maya scenes between linux and windows machines.
When linux references a file it uses UNC paths like: /server/project/file.ext
whereas windows needs double slash in front: //server/project/file.ext

I have a MSceneMessage.kBeforeSave callback that fixes paths on texture nodes (ensures leading //).
I remember having done similar thing with references too, but I lost the script and can't recall details... any hints how to change path to reference ?

Here is my texture fixing code:

def addFirstSlash(i_str):
   
if i_str[0] == '/' and i_str[1] != '/':
       
return '/' + i_str
   
return i_str

def mf_MSceneMessage_BeforeSave_CB(*args, **kwargs):
   
for f in mc.ls(type='file'):
        mc
.setAttr(f + '.ftn', addFirstSlash(mc.getAttr(f + '.ftn')), type='string')

om
.MSceneMessage.addCallback(om.MSceneMessage.kBeforeSave, mf_MSceneMessage_BeforeSave_CB)





Mahendra Gangaiwar

unread,
Nov 29, 2017, 12:13:05 PM11/29/17
to python_in...@googlegroups.com

I think better approach here would be make use of "dirmap" command, so you could map Linux to Windows and vice versa..

Something like this:

dirmap("//server", "/server");
dirmap("/server", "//server");

Try running above command, and open file, all references and texture paths should remapped automatically by Maya.


--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/d2c24e10-41f8-4b90-a05e-38369c42b8f5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
Best,

-M

f.michal

unread,
Nov 29, 2017, 12:23:25 PM11/29/17
to python_in...@googlegroups.com
Yeah, dirmap is better. If only I could remember how I did it last time :)
Will use dirmap() from now on, thanks !


W dniu 29.11.2017 o 18:12, Mahendra Gangaiwar pisze:

Robert White

unread,
Nov 29, 2017, 1:40:38 PM11/29/17
to Python Programming for Autodesk Maya

MSceneMessage.addCheckFileCallback with kBeforeLoadReferenceCheck should get you what you want. 

You'll get a reference to the file object before the reference has been loaded, and you should be able to tweak and update the file paths from there. 
I've used this in the past to fix issues where some machines were replacing environment variables with the full path.


To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.
--
Best,

-M
--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

Michał Frątczak

unread,
Nov 30, 2017, 10:33:05 AM11/30/17
to Python Programming for Autodesk Maya
Thanks !
Which is precisely what I needed.

cheers
-michal
Reply all
Reply to author
Forward
0 new messages