一、ArtEase规则的定义
在创建Maya规则前,需要在项目组内的规则方案先创建Maya类型的规则方案,然后点击新建规则即可创建Maya的规则。
二、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
三、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
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规则,在插件中是以按钮方式执行。