在本系列主要探讨:数组,错误检查,弹出信息框提示错误信息,以及用户界面。

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相关推荐

  1. iOS入门指引系列(零)

    俗话说的是,万事开头难. 意思是开了头,再把一件事办下去就没有那么难了. 我相信每一个人当想入门一项新技能的时候都有这样的体会吧.特别是现在网络上各式各样的学习资料,文章,这些零星的资料反而让初学者迷 ...

  2. RabbitMQ入门学习系列(五) Exchange的Direct类型

    快速阅读 利用Exchange的Direct类型,实现对队列的过滤,消费者启动以后,输入相应的key值,攻取该key值对应的在队列中的消息 . 从一节知道Exchange有四种类型 Direct,To ...

  3. 剑指前端(前端入门笔记系列)——数组(基本语法)

    数组--基本语法 除了Object之外,Array类型恐怕是ECMAScript中最常用的类型了,而且ECMAScript中的数组与其他语言中的数组有着相当大的区别.它的每一项可以保存任何类型的数据( ...

  4. arcgis api 3.x for js 入门开发系列五地图态势标绘(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  5. WPF入门学习----系列基础教程

    WPF入门教程系列目录 WPF入门教程系列二--Application介绍 WPF入门教程系列三--Application介绍(续) WPF入门教程系列四--Dispatcher介绍 WPF入门教程系 ...

  6. Visual Studio2005入门.Net系列视频教程

    Visual Studio2005入门.Net系列视频教程 严正声明:任何个人或者团体不得将本系列教程用于商业用途,一经发现,我们将追究其法律责任. 我做这个教程的主旨是为了帮助更多的人少走弯路,少花 ...

  7. Linux Shell脚本入门教程系列之(六)Shell数组

    本文是Linux Shell脚本系列教程的第(六)篇,更多shell教程请看:Linux Shell脚本系列教程 Shell在编程方面非常强大,其数组功能也非常的完善,继上一篇之后,今天就为大家介绍下 ...

  8. 小猪的C语言快速入门系列(五)

    小猪的C语言快速入门系列(五) 标签: C语言 本节引言: 上一节我们C语言 复合数据类型 中的 数组 进行了解读,本节我们会继续来学习 复合数据类型中的 指针,指针可是C语言的灵魂:利用指针可以表示 ...

  9. VS 中配置使用Visual SVN系列 五:SVN Client的配置和使用

    VS 中配置使用Visual SVN系列 五:SVN Client的配置和使用 1.TortoiseSVN上传项目文件 2.VS中同步该项目文件 到此VS 中配置使用Visual SVN系列已经完成如 ...

最新文章

  1. cookie和url参数获取的常规实用方法合集(ES6)
  2. 安装 Enthought Tool Suite 时遇到的问题
  3. python django部署docker_Docker 部署 Django+Uwsgi+Nginx+Vue
  4. 原码、补码、反码、1的补码
  5. 太原理工计算机组成原理报告,太原理工《计算机组成原理与体系结构》--实验报告.docx...
  6. c语言怎么打开已经保存的文件,保存打开文件之后,怎么也不能在显示函数中出来。。...
  7. 养老金8000元左右,身体好,无负担,怎样安排退休生活好呢?
  8. python module错误_修复python的ModuleNotFoundError
  9. java 控制线程的顺序_【Java多线程系列四】控制线程执行顺序
  10. 凸优化第二章凸集 2.5 分离与支撑超平面
  11. adb 模拟器安装apk
  12. 初中信息技术计算机ppt课件,初中信息技术计算机ppt课件.ppt
  13. Pycharm远程连接服务器
  14. 丹佛大学计算机专业,丹佛大学计算机工程专业排名第(2018年USNEWS美国排名)...
  15. MySQL数据库对象
  16. Qt 笔锋 毛笔 钢笔 蜡笔 4k流畅画笔 Demo
  17. VMware虚拟机恢复系统的某个状态的方法
  18. 投研报告 - Polkadex(PDEX
  19. 面试怎样做自我介绍?
  20. 从《陈六事疏》说开去

热门文章

  1. python 登录新浪微博_Python 模拟登录新浪微博
  2. 送书【新书】 |《python数据科学实战》
  3. NEO改进协议提案9(NEP-9)
  4. 帝国时代3如何快速实现训练单位突破人口上限
  5. 汇编语言:使用汇编程序计算2的8次方
  6. 用MySQL数据库来处理中英文取首字母排序
  7. WZOI-359字符串哈希
  8. A-MPDU与A-MSDU各是什么意思
  9. 锂电池充电的同时也能放电吗?
  10. 商淘软件多用户商城系统WSTMart v2.0.8程序发布