热烈欢迎新会员,新手报到帖maxscript BUG和技巧收集场景助手3.0下载飞浪脚本零起点入门
返回列表 发帖

欢迎捐助本站:支付宝账号 cgplusplus@qq.com,谢谢支持!

[原创]飞浪脚本零起点入门系列(十)macroscript编写快捷方式

声明:本教程为CG++原创,转载请注明,谢谢合作:)

查看上一节:飞浪脚本零起点入门系列(九)maxscript函数

飞浪脚本零起点入门系列(十)macroscript编写快捷方式


本节关键词:macroscript filein


不写教程很多个月了!生活在继续,maxscript也要继续。
macroscript是maxscript中很重要的一部分,但是也很简单。想自己设置快捷键的朋友,不需要前面的章节的基础,直接看本节就知道怎么弄了。


macroscript 宏脚本

macroscript是一种生成工具栏按钮的脚本,当然也可以设置快捷键,右键菜单等等。下面来看个简单的实例:
打开MAXscript --> MAXscript listener,在红色区域复制以下内容:

  1. messagebox "成功!"
复制代码


选中这些代码并拖放到工具栏上,这时候工具栏上自动生成了一个按钮。单击此按钮,如果你看到了如图所示的对话框“成功!”,那么恭喜你,你真的成功了。是不是很简单?

下面我们来看看真正的macroscript是怎么写的。在刚才生成的那个按钮是右键单击,选择并单击“Edit Macro Script”,这样就会自动跳出一个maxscript编辑器,这里才是真正的macroscript代码。

代码如下:

  1. macroScript Macro4
  2. category:"DragAndDrop"
  3. toolTip:""
  4. (
  5. messagebox "成功!"
  6. )
复制代码


这个代码里面只有一句是我们刚才编写的,即messagebox "成功!",其他的代码均为max自动生成,逐行解释如下:
macroScript Macro4 --前面macroScript是申明,表示这是一个macroscript脚本,后面的Macro4是变量,可以自行更改,这个变量是自动生成,可能你的并不是Macro4,而是Macro1,Macro2...
category:"DragAndDrop" --category表示目录,设置快捷键的时候经常会遇到,"DragAndDrop"是目录的名字,可以是任意字符串,DragAndDrop的字面意思是拖放。
toolTip:""--表示按钮提示,后面的双引号里面没有字符,就没有提示了,可以改成toolTip:"这是一个按钮"。
后面有一对括号,所有要执行的代码都扔到这个括号里面。
下面来看看macroscript究竟怎么来调用。
依次打开Customize -> Customize User Interface -->选择Toolbars看看这个面板。
Group默认是MainUI,Category默认是All Commands现在把All Commands下拉后选择DragAndDrop,下面就有我们刚才的脚本,我的是Macro4,在它上面点右键,可以选择编辑此脚本。好,我们来编辑一下脚本改成如下:

  1. macroScript Macro4
  2. category:"DragAndDrop"
  3. toolTip:"这是我的按钮"
  4. buttontext:"我的按钮"
  5. (
  6. messagebox "成功!"
  7. )
复制代码

这里加了一行buttontext:"我的按钮",修改之后按快捷键ctrl+E执行脚本,再关闭并重新打开一下Customize User Interface,这时Macro4已经变成了“我的按钮”,没错,这个buttontext就是此脚本的显示文字,把它拖放到工具栏上,按钮的名字会是“我的按钮”。


制作按钮的图标

在刚才制作的按钮上面单击右键,选择“Edit Button Apperance”,可以修改按钮的显示方式。如图所示,上面的Text Button可以修改按钮的名字和提示语。我们着重来讲一下下面的Image Button。选择Image Button,在Group后面选择Render,我们会看到下面有一排图标,你可以选择一个图标单击OK,那么刚才那么按钮的图标就变成了你选择的图标。

如何自己制作这样的图标呢?现在在max根目录下打开以下路径:...\Autodesk\3ds Max 2009\ui\Icons,找到文件Render_16a.bmp,按名称排列的话依次会看到:Render_16i.bmp,Render_24a.bmp,Render_24i.bmp,打开这些图片一看,原来这就是刚才我们设置按钮图标时候看到的图标啊。制作这样的图标很简单,只要遵循以下几条即可:
1、图标大小分两种,如,24X24,和16X15,其中图标的高度不能变,高度是24的图片,宽度必须是24的整数倍,高度是15的图片,宽度必须是16的整数倍。两个图标的倍数要相同。即图标大小应该为:(N*24)X24和(N*16)X15。
2、一组图标必须有4个,其命名规则是,使用统一的前缀,后缀名字依次是_16a.bmp,_16i.bmp,_24a.bmp,_24i.bmp,如上面的Render系列图标,以_16i.bmp,_24i.bmp结尾的图标是最终显示在max界面上的图标,以_16a.bmp,_24a.bmp结尾的图标是黑白通道,控制图标需要显示的部分。
3、图标文件必须放到max根目录的ui\Icons文件夹下面。刚放进去的图标,重启MAX才生效。
本文最后附上场景助手的图标,请大家先下载,下面要拿来测试。
图标做好了,怎么写进macroscript呢?看如下代码:

  1. macroScript Macro4
  2. category:"DragAndDrop"
  3. toolTip:"我的按钮"
  4. buttontext:"我的按钮"
  5. icon:#("FeilangTools",3)
  6. (
  7. messagebox "成功!"
  8. )
复制代码


代码icon:#("FeilangTools",3)即为调用图标,因为我制作的图标文件前缀名是FeilangTools,这里调用就写这个名字,后面的3表示图标的第中的三个,我一共做了三个图标并列,所以大小分别是72X24和48X15。执行这个代码,再重新打开Customize User Interface找到Toolbars,按上面讲解选择DragAndDrop,可以看到刚才编写的macroscript已经有了图标了,这时再拖到工具栏上就会显示自己制作的图标。
上面一直讲的是macroscript作为快捷方式的编写,下面着重来看看那个括号里面的代码。
把代码

messagebox "成功!"

用记事本保存到E盘下,格式改为.ms,再修改macroscript那个括号里面的代码如下:

  1. macroScript Macro4
  2. category:"DragAndDrop"
  3. toolTip:"我的按钮"
  4. buttontext:"我的按钮"
  5. icon:#("FeilangTools",3)
  6. (
  7. filein "E:\\myscript.ms"
  8. )
复制代码


执行此代码,重新设置按钮到工具栏,单击按钮,如果你看到了对话框“成功!”,那么恭喜你,你又真的成功了^_^!
filein "脚本路径" 可以执行其他的脚本,用在这里你可以调用任何其他的脚本了,支持.ms , .mse, .mcr(用filein调用这个.mcr文件没有意义,这里只是列出来)。
再来看:
  1. macroScript Macro4
  2. category:"DragAndDrop"
  3. toolTip:"我的按钮"
  4. buttontext:"我的按钮"
  5. icon:#("FeilangTools",3)
  6. (
  7. on execute do
  8. ( s=sphere()
  9.   s.radius = 100
  10. )
  11. )
复制代码


on execute do是当macroscript被“召唤”的时候,需要运行的代码,运行此代码,单击工具栏按钮,此脚本会创建一个球体,半径为100。on execute do后面的括号可以是任意的代码块(block)。继续修改代码,只修改macroscript括号部分:

  1. (
  2. on execute do
  3. ( s=sphere()
  4.   s.radius = 100
  5. )
  6. on isChecked do selection.count==1
  7. )
复制代码


当你按下工具栏的按钮时,按钮状态会变吧,这个on isChecked do就可以控制按钮状态。这句后面可以是任意代码块,但是必须返回true或false。如果返回true,按钮会自动“被按下”,如果返回false,按扭会弹起来。运行刚才修改的macroscript,当你选择一个物体的时候,按钮就“被按下”,如果不选择物体或者选择多余一个物体,按钮就“被弹起”,(最近流行被字句...)
macroscript里面还有其他一些事件,大概说一下,有兴趣的可以看看:
on isEnabled do <expr> --<expr>返回true或false。当它是false的时候,如果你设置的快捷方式是右键菜单或者菜单栏菜单或按钮,则不可用(灰色显示)如:
on isEnabled do selection.count!=0
on isVisible do <expr> --<expr>返回true或false。当它是false的时候,如果你设置的快捷方式是右键菜单或者菜单栏菜单,则看不到此脚本。如果是按钮,没影响,如:
on isVisible do selection.count!=0
on closeDialogs do <expr> --这句是前提是必须要有on isChecked do语句,isChecked后面返回false时,on closeDialogs do将代替on execute do 语句。这样,可以用按钮等快捷方式控制在macroscript里面的rollout的开和关。例如:

  1. macroScript aNewTest  
  2. category:"CGplusplus"
  3. toolTip:"macroscript测试"
  4. buttontext:"macroscript测试"
  5. icon:#("FeilangTools",1)
  6. (
  7. rollout test "test" width:248 height:169
  8. (
  9.   label lbl "欢迎常回来看看!我们的网址是:" pos:[20,40] width:225 height:13
  10.   HyperLink hy "www.cgplusplus.com" pos:[65,67] width:100 height:15 color:(color 0 255 0) hovercolor:(color 255 127.5 0) visitedcolor:(color 0 255 0) address:"http://www.cgplusplus.com/"
  11. )
  12. on isChecked do test.open
  13. on execute do
  14. ( createdialog test bgcolor:black fgcolor:red
  15. )
  16. on closeDialogs do  
  17. ( destroydialog test
  18. )
  19. )
复制代码


运行此脚本,设置成按钮,并单击。如果你能看到对话框里面写着:
欢迎常回来看看!我们的网址是:www.cgplusplus.com
那么恭喜你,你真的学会了^_^!那本人也该退场了!哦,还加一句:macroscript不能加密,不信你试试^_^(加密方式是encryptscript "E:\\haha.mcr")。
本节到此结束,谢谢捧场^_^

场景助手的图标下载:(FeilangTools_Icons)

附件: 您需要登录才可以下载或查看附件。没有帐号?注册  
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

欢迎捐助本站:支付宝账号 cgplusplus@qq.com,谢谢支持!

我顶,我坐沙发了!

TOP

欢迎捐助本站:支付宝账号 cgplusplus@qq.com,谢谢支持!

支持飞浪的教程,学习了……

TOP

虽然我不懂但强烈支持

TOP

谢谢您的教学

快来学习一下吧~

TOP

有新的教程啦~论坛的兄弟新年快乐!

TOP

飞浪不能走啊!还指望你继续立新功呢。

TOP

多谢教程!!!

TOP

QUOTE:
以下是引用duolaoduowan在2010-1-10 4:26:25的发言:

飞浪不能走啊!还指望你继续立新功呢。

俺何时说要走了?本节退场而已。

TOP

那就好,我也放心了。支持你,继续为你顶起。

TOP

返回列表