一、ArtEase规则的定义

在创建Maya规则前,需要在项目组内的规则方案先创建Maya类型的规则方案,然后点击新建规则即可创建Maya的规则。 10.png
11.png

二、Maya规则的字段含义

字段 描述
适用版本 记录规则适用的范围
对象 规则适用对象的分类
严重程度 规则不通过时报错等级
desc 规则描述
type 规则类型,目前仅支持function、tool_function和global_function, 核心字段
condition 规则执行的函数名, 核心字段
func_str 规则执行的函数体, 核心字段
enable_para 是否启动自定义参数
rule_para 自定义参数,在函数体内通过rule=argv.get(‘rule’),rule_para = rule.get(‘rule_para’)获取
enable_batch 是否支持批量检查,暂不支持
changable 是否可以改变设置的值,暂不支持

三、Maya中规则的执行流程 Maya中使用ArtEase插件时,会将定义的规则拉取的本地,最终会在Maya内运行,所以关键的内容还是Maya内的运行流程,一般来说函数内容分为三个部分。这里以一个获取未知依赖的函数作为例子。

def CheckUnknownPlugin(**kargv):
    from maya import cmds
    lUnknown = cmds.unknownPlugin(q=True, l=True)
    state = True
    msg = str()
    if lUnknown:
        state = False
        msg = u"存在未知Plug依赖:{}".format("\n".join(lUnknown))

    return state, msg, False
1.引入规则需要的maya函数,推荐使用cmds和pyxms库进行开发。 2.执行的函数内容,这里规则是要选中场景中未知的依赖,cmds中已有封装好的函数,直接使用即可。 3.三个返回值的定义,为固定的写法,state为bool,表示规则是否通关检查,msg为不通过时展示的信息,最后一个值为是否跳过检查,如果跳过,则不会再结果中展示。

三、function和tool_function规则举例 function表示普通规则,适用于经常需要执行检查的规则,比如某个资源是否符合设计标准。
tool_function表示功能规则,以按钮的方式呈现,不会随一键检查的方式触发,需要单独点击检查按钮去触发,适用于检查频率不高的规则或者一些对资源进行修改的规则。
global_function表示全局规则,不用选中任何物体,适用于一些全局检查的规则
三种规则,都支持自定义选中物体,不要求一定要选中物体
1.function规则

def CheckUnits(**kargv):
    from maya import cmds
    units = cmds.currentUnit(q=True, linear=True)
    state = True
    msg = str()
    if units != "cm":
        state = False
        msg = u"单位设置必须为centimeter"

    return state, msg, False
function和global_function规则,通常可以用来作为场景中一类物体或者标准的判断,如上是判断当前场景是否设置的cm作为单位。如果不满足,返回False即可 function规则,在插件中是以勾选的方式执行。通过rule和rule_para拿到动态传入的参数
12.png
2.tool_function规则
def Check_Name(**argv):
    from maya import cmds
    rule=argv.get("rule")
    rule_para = rule.get("rule_para")
    obj_list = cmds.ls(sl=True)
    name_list = []
    for obj in obj_list:
        obj_name = str(obj)
        if obj_name.startswith(rule_para):
            continue
        else:
            name_list.append(obj_name)
    if name_list:
        return False, name_list, False
    else:
        return True,[],False
tool_function规则,通常可以作为某一类功能执行,或者修改属性,并且支持自定义参数。如果上当前场景中被选中的物体,命名前缀需要满足特定字符。 通过rule和rule_para拿到动态传入的参数,执行maya对应指令即可。
tool_function规则,在插件中是以按钮方式执行。
13.png