[mayaPython]バージョンを上げてシーンを保存する

Mayaに限らず、作業しているシーンを保存する場合は 前に保存したものを上書きするのではなく _v01 のようにバージョンをつけて保存する…というのを日常的にやってる人も多いかと思います。

そのとき、Windowsの仕様なのか FileDialogで バージョンナシのものをリネームして、ファイル名をバージョンなしに設定して保存する をすると リネームしたはずなのに、上書きしますか?と聞かれ

非常に ウザい

ので、バージョンをつけて保存してくれるコマンドを書いてみました。

[python]
import os,os.path,re,glob
import maya.cmds as mc

#フォルダ内にあるバージョンファイルのバージョンに+1したファイル名を返すスクリプト

def incrementFileName(ST_path,ST_vName="_",IN_defIncrementNum=2):

if os.path.exists(ST_path):

basename = os.path.basename(ST_path)
fileName = os.path.splitext(basename)[0]
fileNameNonVer = re.sub(ST_vName+"v[0-9]+$","",fileName)
fileExt = os.path.splitext(basename)[1]
dirName = os.path.dirname(ST_path)

fileList = glob.glob(dirName+"/"+ fileNameNonVer + ST_vName + "v" + "*"+fileExt)

incrimentNum = 0

if len(fileList) == 0:

incrimentNum = 1

else:

maxNum = 1

for files in fileList:

buff = files.split(ST_vName + "v")

if maxNum < int(buff[len(buff) -1].strip(fileExt)):

maxNum = int(buff[len(buff) -1].strip(fileExt))

incrimentNum = maxNum + 1

return dirName + "/" + fileNameNonVer + ST_vName + "v" + str(incrimentNum).zfill(IN_defIncrementNum) + fileExt

#バージョンを残して保存するスクリプト本体
def incrementSaveFile():

ST_mayaScenes = mc.file(q=True,sceneName=True)

if ST_mayaScenes != "":

ST_IncrementFileName = incrementFileName(ST_mayaScenes)
os.rename(ST_mayaScenes,ST_IncrementFileName)
mc.file(save=True)
else:
#新規ファイルの場合は、ダイアログを出して新規保存
multipleFilters = "Maya ASCII (*.ma);;Maya Binary (*.mb);;All Files (*.*)"
saveFileName = mc.fileDialog2(fileFilter=multipleFilters, dialogStyle=1)
print saveFileName[0]
ST_type = "mayaAscii"
if os.path.splitext(saveFileName[0])[1] == ".mb":

ST_type = "mayaBinary"

mc.file(rename=saveFileName[0])
mc.file(save=True,f=True,type=ST_type)

#実行
incrementSaveFile()

[/python]

新しいシーンの場合は、ダイアログを出してファイル名を指定して保存します。

上のコマンドの場合、バージョンは _v00 のように _ + v + 数字二桁 のバージョンがつきますが、それを変更したい場合は、

47行目の

ST_IncrementFileName = incrementFileName(ST_mayaScenes)

ST_IncrementFileName = incrementFileName(ST_mayaScenes,<区切る文字>,<桁数>)

ex: test.mb => incrementFileName(ST_mayaScenes,".",3) => test.v001.mb

に変更すると、桁数と区切る文字を変えられます。

 

これでバージョンをつけて保存する手間も減って楽チン☆ と、気楽に保存しまくって バージョンがすごいことになったりしなかったり。。。

コメントを残す

メールアドレスが公開されることはありません。

*