CloseMaxScript6 命令

命令表达一段代码,你可以为不同的功能片段设置不同的命令
可以单独使用,也可以组合使用

命令授权

在命令执行前将会执行一次授权代码
根据授权代码返回true/false来判断是否继续执行命令

设置命令授权代码

config.UseCommandAuth = true
config.CommandAuthSource = (Cmxs6Publisher.readFile (thisDir + @"授权代码.ms"))

设置命令

方式1

外部设置,在打包时设置命令

-- cmdName --命令名字
-- useAuth --该是否使用授权
-- src --命令内容源代码
-- compress:false 是否开启压缩(文件太小可能导致压缩后尺寸更大)
config.AddCommandSource "功能1" true (Cmxs6Publisher.readFile (thisDir + @"功能1.ms")) compress:false

方式2

在源代码内部进行标记,会在编译时将内容提取并将标记移除,本质与方式1并无差别

  • @cmxs_cmd_auth@cmxs_cmd 开头
  • [] 内填写命令名字
  • 最后接需要调用的代码
global LA3DB02C873334E4F8
'@cmxs_cmd_auth [工具2] LA3DB02C873334E4F8()'
fn LA3DB02C873334E4F8 =
(
	print "这是第二个工具"
)

命令名字不区分大小写,建议使用全小写英文数字和下划线来进行命名

调用命令

product.Call "ExecuteCommand" "工具2" 
  • 返回值
"<no_cmd>" 未找到命令
"<ok>" 执行成功
"<err>" 执行失败

异步调用命令

注意:异步调用不能操作max对象,否则会崩溃或者出错
请在授权代码和命令中避开对max对象的操作

如果命令当前正在执行中,则不会触发

-- cmdName --命令名字
-- delay --延迟毫秒数
product.Call "ExecuteCommandAsync" "工具2" 2000
  • 返回值
    调用成功,返回true
    存在调用,返回false
    请不要关注返回值和错误,异步调用不可控制
posted @ 2023-09-19 17:21  trykle  阅读(35)  评论(0编辑  收藏  举报