最近项目要求通过java给max发送任务指令,max接收指令执行任务,并且返回执行的结果。不管为什么会有这样的需求,有就要去实现。

1、OLE开启

Max本身提供了一个方式,它可以将自己注册成一个Ole自动化对象,默认是没有开启的,开启这个接口只需要操作注册表即可。将该脚本存放的max的安装路径下的Scripts\StartUp,即max启动时会默认加载的脚本。保证max启动以后会执行该脚本。

关于脚本中内容具体请参考Maxscript的自带文档 OLE Automation 章节。

 1 (
 2     /* Dynamically writes the necessary Registry information to allow
 3         Simon Felton's MXSCOM bridge to work.
 4         IF RUNNING THIS SCRIPT ON AN VERSION OF MAX OLDER THAN MAX 10
 5         THE AVG EXTENSION *MUST* BE INSTALLED
 6     */
 7 
 8     local reg_key
 9     local max_version = ((maxVersion())[1] / 1000) as string
10 
11     fn create_reg_key hkey key_name &reg_key key_value_name key_value_type key_value =
12     (
13         registry.createKey hkey key_name key:&reg_key
14         registry.setValue reg_key key_value_name key_value_type key_value
15     )
16 
17     fn write_sub_key_data reg_key sub_key_name sub_key_type sub_key_value =
18     (
19         local sub_key
20         registry.createKey reg_key sub_key_name key:&sub_key
21         registry.setValue sub_key "" sub_key_type sub_key_value
22     )
23 
24 
25     -- Establish a root key for generalized Max data
26     create_reg_key HKEY_CURRENT_USER @"Software\Classes\MAX.Application" &reg_key "" #REG_SZ "OLE Automation MAX Application"
27 
28     -- Add the Clsid information
29     write_sub_key_data reg_key "Clsid" #REG_SZ "{7FA22CB1-D26F-11d0-B260-00A0240CEEA3}"
30 
31     -- Add the CurVer information
32     write_sub_key_data reg_key "CurVer" #REG_SZ ("MAX.Application." + max_version)
33 
34     -- Establish a new root key for the version of Max being used
35     create_reg_key HKEY_CURRENT_USER (@"Software\Classes\MAX.Application." + max_version) &reg_key "" #REG_SZ ("OLE Automation MAX " + max_version + ".0 Application")
36 
37     -- Add the Clsid information
38     write_sub_key_data reg_key "Clsid" #REG_SZ "{7FA22CB1-D26F-11d0-B260-00A0240CEEA3}"
39 
40     -- Make a new root key for the CLSID data
41     create_reg_key HKEY_CURRENT_USER @"Software\Classes\CLSID\{7FA22CB1-D26F-11d0-B260-00A0240CEEA3}" &reg_key "" #REG_SZ ("OLE Automation MAX " + max_version + ".0 Application")
42 
43     -- Add sub key data
44     write_sub_key_data reg_key "ProgID" #REG_SZ ("MAX.Application." + max_version)
45     write_sub_key_data reg_key "VersionIndependentProgID" #REG_SZ "MAX.Application"
46 
47     -- Register the running of files and executing script code to OLE.
48     registerOLEInterface #( filein, execute, edit, encryptscript )
49 
50 )
ole开启脚本

相关文章: