今天是升版本保存第二部分, 这次要增加: 第一次保存给出提醒,第二次保存自动加版本号,主动判断当前版本和磁盘中已有文件是否同名冲突,如果冲突就继续升版。

# coding=utf-8
# author : 

import os
import pymel.core as pm
import maya.cmds as mc
import maya.mel as mel


def up_version_save():
    path = pm.sceneName()
    try:
        version_str = path.split('.')[-2].lstrip('v')
    except:
        message = u'<font size="15"><b>请先保存文件<\font><br><b>'
        pm.confirmDialog(title=u'Save',
                      message=message,
                      button=['Cancel', 'OK'],
                      defaultButton='OK',
                      cancelButton='Cancel',
                      dismissString='Cancel')
        mel.eval("SaveSceneAs")
        return

    try:
        version_int = int(version_str)
    except:
        path_split = path.split('.')
        path_split.insert(-1, 'v001')
        version_str = path_split[-2].lstrip('v')
        version_int = int(version_str)
        path = '.'.join(path_split)

    new_version_str = str(version_int+1).zfill(3)
    new_path = path.replace('.v%s.' % version_str, '.v%s.' % new_version_str)
    auto_up_version = 0
    if os.path.exists(new_path):
        auto_up_version = 1
        while(auto_up_version):
            version_int = version_int+1
            new_version_str = str(version_int).zfill(3)
            new_path = path.replace('.v%s.' % version_str, '.v%s.' % new_version_str)
            auto_up_version = 0
            if os.path.exists(new_path):
                auto_up_version = 1
        pm.saveAs(new_path)
        # cmds.error(u"file exist")
    else:
        pm.saveAs(new_path)

up_version_save()

这次用到了几个简单的pymel命令:
pm.sceneName() # 获取当前文件地址
pm.confirmDialog() # 一个提示窗口
pm.saveAs(new_path) # 另存到new_path
os.path.exists(new_path) # 判断new_path这个文件是否存在
其它还用到了一些简单的字符串处理:
dir('string') 可以获取所有针对字符串的方法。
auto_up_version 是一个只有0和1两种状态的变量,1代表当前的版本有重复,需要继续升一个版本;0代表当前文件版本没有冲突。