自由者CG

标题: 零起点入门MAXScript(第七节) [打印本页]

作者: 有空    时间: 2015-12-2 11:43
标题: 零起点入门MAXScript(第七节)
本帖最后由 有空 于 2016-5-9 10:17 编辑

通过前6节的学习,大家应该学会编写一些处理物体或者材质的简单程序代码,往下我们学习制作界面,按钮,并保存常见的ms文件。
首先,我们要用到的是
visual maxscript 编辑器,通过菜单——maxscript——新建脚本,可以新建一个max脚本窗口,它就跟记事本差不多,以后我们所有代码将在这里进行编写。
(, 下载次数: 8)
(, 下载次数: 5)

进入主题:
首先我们在maxscript脚本编辑器里面写如下代码
rollout myrollout "cs"
(
)
注释:
rollout  --maxscript保留关键词,只要它出现就表示这儿有个新的卷展栏。
myrollout  --这是你自己定义的一个变量,它必须遵循变量的命名规则,详见第三节。
"test"  --这是此卷展栏标题的名称,引号里面内容任意填写。
现在把光标放在rollout的括号内,在Editor菜单——工具——编辑卷展栏(各max版本位置不一定,请自己查找一下),找到并选择后,会弹出一个新的界面,myrollout可视化界面编辑。
(, 下载次数: 5) (, 下载次数: 6)

http://static.video.qq.com/TPout.swf?vid=v01743vcibp&auto=0

高清下载
  访问密码 d6f6

通过上面的视频操作,我们得到这样的代码
rollout myrollout "cs" width:162 height:98
(
        editText edt3 "名称" pos:[17,8] width:130 height:30
        button btn2 "重命名" pos:[34,54] width:96 height:30
)



我们注意到,rollout myrollout "重命名"后面多了两个参数,宽度和高度,这是我们在visual maxscript 编辑器拖放窗口时,自动生成的,也可以手动设置数值。
再看另外两行:
editText edt3 "名称" pos:[17,8] width:130 height:30editText    --表示这是一个编辑文本。
edt3         --这是变量名,以后要调用这个编辑文本就用这个值。
"名称:"   --这个编辑文本的名称,出现在脚本界面。
pos:[17,8]  --此编辑文本在脚本界面的相对位置,可以在visual maxscript 编辑器界面用上下左右方向键调整位置。
width:130 height:30    --此编辑文本的宽度和高度。
下面的button意思差不多,只不过把控制器类型(Controls)换成了按钮(button)
上面的editText和button都是rollout的控制器类型,这些控制器可以在visual maxscript 编辑器界面拖出来。rollout的所有控制器:

我们在程序最后加上一句代码:createdialog myrollout,变成
rollout myrollout "cs" width:162 height:98
(
        editText edt3 "名称" pos:[17,8] width:130 height:30
        button btn2 "重命名" pos:[34,54] width:96 height:30
)

createdialog myrollout
再执行菜单——工具——计算所有(快捷键ctrl+E)

(, 下载次数: 9)
这样就执行了此脚本,弹出如下对话框

(, 下载次数: 5)


当然现在单击重命名,还不行,我们还没有告诉它要做什么。

打开刚刚保存的脚本,
max菜单——maxscript——打开脚本,弹出maxscript编辑器,选择maxscript编辑器——菜单工具——编辑卷展栏,进行如下操作:
(, 下载次数: 7)

得到如下代码:
rollout myrollout "cs" width:162 height:98
(
        edittext edt3 "名称" pos:[17,8] width:130 height:30
        button btn2 "重命名" pos:[34,54] width:96 height:30
        on btn2 pressed  do
(
        
        )
)
createdialog myrollout


比之前代码多出了
on btn2 pressed  do
(
        
        )

这句就是当按钮btn2按下时,做些什么。括号内就是需要做的内容,现在为空,即什么也不做。


在我们第五节中,讲到命名脚本:
for i in objects do i.name = uniquenme "cg"


这里我们只想命名选择的物体,应该是:
for i in selection do i.name = uniquenme "cg"
"cg"是个常量,我们想要用户可以自己输入,写到脚本中即为:
on btn2 pressed  do
(
        if edt3.text != "" then for i in selection do i.name = uniquename edt3.text
        )

这里edt3.text表示编辑文本edt3里面输入的内容,if edt3.text != "" then意思是,如果此编辑框里面内容不是空的,就执行下面命令(重命名)
至此,完整代码如下:
rollout myrollout "cs" width:162 height:98
(
        edittext edt3 "名称" pos:[17,8] width:130 height:30
        button btn2 "重命名" pos:[34,54] width:96 height:30
        on btn2 pressed  do
(
        if edt3.text != "" then for i in selection do i.name = uniquename edt3.text
        )
)
createdialog myrollout



ok,你再ctrl+E运行一下此代码,选择几个物体,在文本框输入字符,再点击重命名,看一下,物体是不是完成了重命名?


——————本节完——————








欢迎光临 自由者CG (https://bbs.zhise168.com/) Powered by Discuz! X3.4