MaxScript入门指引系列(五)数组和Visual MaxScript editor
在本系列主要探讨:数组,错误检查,弹出信息框提示错误信息,以及用户界面。
1. 数组
创建数组:数组名 = #(), 其中#是数组符号;
给数组赋值用append;
取数组中的某个值用[]操作符;
数组的个数:数组名.count。
Eg,
ourFirstArray = #()--创建了一个空数组;
append ourFirstArray 1 --给数组ourFirstArray添加了一个元素1;
append ourFirstArray 3 --给数组ourFirstArray又添加了一个元素3;
ourFirstArray --此时在listener中返回数组元素#(1,3);
ourFirstArray[2] -- 在listener中返回该数组的第二个元素 3;
ourFirstArray.count --在listener中返回该数组的元素个数 2。
注意:对场景中的选择我们用$表示,另一种表示方法是selection,它其实是一个数组。我们可以按照数组的方式使用,如selection.count, selection[1]等等。
2. 错误检查并弹出错误信息
在上一系列中制作成的菜单,提到两个注意事项:第一,如果没有选择场景中的物体,就执行该菜单下的动作会crash; 第二,如果想改变旋转的角度该怎么办? 这两个问题在这一系列将得到解决。
要加上两个判断:一,只有选择了场景中的物体,才执行旋转操作;二,如果没有选择场景中的物体,则弹出对话框提示出错信息。
for obj in $ do
(
--1. Error checking
if(selection.count > 0) then --if objs are selected do...
(
randXrot = random -3.0 3.0
randYrot = random -3.0 3.0
randZrot = random -3.0 3.0
rot_obj = eulerangles randXrot randYrot randZrot
rotate obj rot_obj
)
--2. messagebox
else -- if none in the scene is selected, then prompt out a message box
(
messagebox "You must have at least one object selected!"
)
)
3. 用visual MaxScript editor制作拥有用户交互的菜单
step1: MaxScript > visual MaxScript editor,打开之后出来一个窗口,如下左图示。根据需要,将底部的按钮栏直接拖动到左窗口,相应地可在右窗口改变其属性值。如下右图示,假设左窗口中添加了这些按钮。
step2: 将该界面save as...成.ms文件(默认的是.vms文件)。用maxScript打开它,会看到一段代码。
step3: 添加按钮响应,即按下button时,执行操作...
step4: 将上一系列(-3,3)间的随机数改为在(spn1.value spn2.value)间的随机数;
step5: 需要显示该rollout的对话框,添加如下代码:createDialog RandomRotateRollout 180 200
step6: 将上述代码制成MacroScript,按上一系列所讲,将该MacroScript制作成菜单。结果如下图。
practices: 完整代码如下
--step6: 将代码制作成MacroScript
MacroScript Random_Rotate category:"Shemmy Tools" buttonText:"Random Rotate" tooltip:"Random Rotate"
(
--step2: 将visual MaxScript editor的界面save as...成.ms文件,得到的代码
rollout RandomRotateRollout "Random Rotate" width:162 height:300
(
groupBox grp1 "Random Rotation Range" pos:[10,12] width:142 height:99
button btn1 "Randomly Rotate" pos:[19,81] width:125 height:22
--用两个spinner值来控制生成随机数的上,下界
spinner spn1 "Minimum Value" pos:[22,34] width:122 height:16 range:[-360,360,0]
spinner spn2 "Maximum Value" pos:[23,56] width:122 height:16 range:[-360,360,0]
--step3: 若按钮按下,则执行以下操作...
on btn1 pressed do --when button 1 is pressed, do..
(
for obj in $ do
(
if(selection.count > 0) then --Error checking is important.
(
--step4: 将上一系列(-3,3)间的随机数改为在(spn1.value spn2.value)间的随机数;
randXrot = random spn1.value spn2.value randYrot = random spn1.value spn2.value
randZrot = random spn1.value spn2.value
rot_obj = eulerangles randXrot randYrot randZrot
rotate obj rot_obj
)
else
(
messagebox "You must have at least one object selected!"
)
)
)
)
--step5: 需要显示该rollout的对话框,改代码在rollout代码块之后写
createDialog RandomRotateRollout 180 200
)
MaxScript入门指引系列(五)数组和Visual MaxScript editor相关推荐
- iOS入门指引系列(零)
俗话说的是,万事开头难. 意思是开了头,再把一件事办下去就没有那么难了. 我相信每一个人当想入门一项新技能的时候都有这样的体会吧.特别是现在网络上各式各样的学习资料,文章,这些零星的资料反而让初学者迷 ...
- RabbitMQ入门学习系列(五) Exchange的Direct类型
快速阅读 利用Exchange的Direct类型,实现对队列的过滤,消费者启动以后,输入相应的key值,攻取该key值对应的在队列中的消息 . 从一节知道Exchange有四种类型 Direct,To ...
- 剑指前端(前端入门笔记系列)——数组(基本语法)
数组--基本语法 除了Object之外,Array类型恐怕是ECMAScript中最常用的类型了,而且ECMAScript中的数组与其他语言中的数组有着相当大的区别.它的每一项可以保存任何类型的数据( ...
- arcgis api 3.x for js 入门开发系列五地图态势标绘(附源码下载)
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
- WPF入门学习----系列基础教程
WPF入门教程系列目录 WPF入门教程系列二--Application介绍 WPF入门教程系列三--Application介绍(续) WPF入门教程系列四--Dispatcher介绍 WPF入门教程系 ...
- Visual Studio2005入门.Net系列视频教程
Visual Studio2005入门.Net系列视频教程 严正声明:任何个人或者团体不得将本系列教程用于商业用途,一经发现,我们将追究其法律责任. 我做这个教程的主旨是为了帮助更多的人少走弯路,少花 ...
- Linux Shell脚本入门教程系列之(六)Shell数组
本文是Linux Shell脚本系列教程的第(六)篇,更多shell教程请看:Linux Shell脚本系列教程 Shell在编程方面非常强大,其数组功能也非常的完善,继上一篇之后,今天就为大家介绍下 ...
- 小猪的C语言快速入门系列(五)
小猪的C语言快速入门系列(五) 标签: C语言 本节引言: 上一节我们C语言 复合数据类型 中的 数组 进行了解读,本节我们会继续来学习 复合数据类型中的 指针,指针可是C语言的灵魂:利用指针可以表示 ...
- VS 中配置使用Visual SVN系列 五:SVN Client的配置和使用
VS 中配置使用Visual SVN系列 五:SVN Client的配置和使用 1.TortoiseSVN上传项目文件 2.VS中同步该项目文件 到此VS 中配置使用Visual SVN系列已经完成如 ...
最新文章
- cookie和url参数获取的常规实用方法合集(ES6)
- 安装 Enthought Tool Suite 时遇到的问题
- python django部署docker_Docker 部署 Django+Uwsgi+Nginx+Vue
- 原码、补码、反码、1的补码
- 太原理工计算机组成原理报告,太原理工《计算机组成原理与体系结构》--实验报告.docx...
- c语言怎么打开已经保存的文件,保存打开文件之后,怎么也不能在显示函数中出来。。...
- 养老金8000元左右,身体好,无负担,怎样安排退休生活好呢?
- python module错误_修复python的ModuleNotFoundError
- java 控制线程的顺序_【Java多线程系列四】控制线程执行顺序
- 凸优化第二章凸集 2.5 分离与支撑超平面
- adb 模拟器安装apk
- 初中信息技术计算机ppt课件,初中信息技术计算机ppt课件.ppt
- Pycharm远程连接服务器
- 丹佛大学计算机专业,丹佛大学计算机工程专业排名第(2018年USNEWS美国排名)...
- MySQL数据库对象
- Qt 笔锋 毛笔 钢笔 蜡笔 4k流畅画笔 Demo
- VMware虚拟机恢复系统的某个状态的方法
- 投研报告 - Polkadex(PDEX
- 面试怎样做自我介绍?
- 从《陈六事疏》说开去