Maxscript的回调函数其实就是3dsMax提供的事件发布机制,可以把自己写的函数注册到事件中,3dsMax在执行了某项操作时会发布这些事件,然后之前注册的函数就会被调用
例子:当视图改变的时候,就会打印当前窗口的矩阵
-- 用于测试的回调函数
fn fnPrintViewportMT=
(
-- 打印当前视图的矩阵
print (viewport.GetTM())
)
-- 注册函数到回调函数:#viewportChange是当视图改变时的事件
callbacks.addScript #viewportChange "fnPrintViewportMT()" id:#TestCallBacks
-- 如果要删除回调函数
-- callbacks.removeScripts id:#TestCallBacks
关于可用的回调函数事件信息,具体查询:Maxscript.chm
关键字: General Event Callback Mechanism
里面也有关于 添加,删除 回调函数的例子
要注意的是,自己写的函数是正确的,如果不确定,最好加上try()catch(),否则容易出现 不停的弹错误窗口的现象!
应用例子
单位锁功能,每次 Reset 场景的时候,单位会自动重设,防止意外的修改
-- 单位设置
fn fnUnitLock=
(
-- 在此设置好单位
units.SystemType = #centimeters
units.SystemScale = 1.0
units.DisplayType = #Metric
units.MetricType = #Meters)
-- 尝试删除已经有的 回调函数
fn fnUnitUnLock=
( try(execute "callbacks.removeScripts id:#UnitLock")catch()
)
-- 添加到回调:注册到场景重设事件
callbacks.addScript #systemPostReset "fnUnitLock()" id:#UnitLock
作者:TAZORN
著作权归作者所有
【相关阅读】:
Maxscript_基础_回调函数:http://tk.v5cg.com/help/246.html
Maxscript_基础_材质处理:http://tk.v5cg.com/help/247.html
Maxscript_基础_修改器操作:http://tk.v5cg.com/help/248.html
Maxscript_基础_创建窗口:http://tk.v5cg.com/help/249.html
Maxscript_基础_遍历与递归:http://tk.v5cg.com/help/250.html
Maxscript_与DotNet交互:http://tk.v5cg.com/help/251.html
【上传发布插件】:
编写3DMAX插件到发布上线全流程:http://tk.v5cg.com/help/147.html
代码上传与工具发布:http://tk.v5cg.com/help/99.html
代码发布,部署实例参考:http://tk.v5cg.com/help/140.html
PS【动作库】代码部署指南:http://tk.v5cg.com/help/141.html
CG云盘 - 开发者使用说明:http://tk.v5cg.com/help/34.html