MaxscriptLearn
2024年1月28日Maxscript
记录一些流程语句
gc()
垃圾清理
控制语句
- if 和 case of 用于判断选择的
- while 和for 用于执行多次历遍循环
- continue/exit 用于跳出循环/循环终止
- try catch 用于测试补抓代码异常
if
-- if....do.... :如果 xxx 那么执行 xxx
if 2>1 do sphere()
-- if....then.... :如果 xxx 正确 xxxx<那么执行>
if 2<3 then box name:"newbox" pos:[50,0,0]
-- $寻找对象
$newbox
-- if....then....else :如果 xxxx 正确<那么执行> 错误<那么执行>
if distance $sphere001 $newbox<10 then print 1 else $sphere001.segments=8
case of
ticketNumber=1
case ticketNumber of
( 1: (print "英雄")
2: (print "玩具总动员" )
3: (print "黑客帝国")
default: (print "新闻联播")
)
while
--while....do.... :如果循环表达式为真就执行循环体,每次执行循环体前都要先判断下,知道循环表达式为假就结束循环。
x=1
while x<5 do (print x; x=x+1)
for
--for i=1 to 10 do...
x=1
for i=1 to 10 do print 1
-- for a in set to....
for a in selection do print 1
for i =1 to 52 do (if i==50 do (print"出去休息下";continue); print i)
-- 达到条件 输出50 然后continue 继续判断 52结束
for i =1 to 52 do (if i=10 do (exit); print i)
-- 达到条件退出
try
-- try....catch(messageBox"....")
x=1
try x.name=i catch(messageBox"这可能说数据赋值错误")
函数
function sum x y =(x+y) -函数定义
fn adda x y =(x+y) -简写
sum 34 -函数调用
UI
Button
按钮控件用于在卷展栏上放置一个按下按钮,用户通常可以单击该按钮 执行某些任务。
语法为:
button <name> [<caption>] [images:<image_spec_array>] [toolTip:<string>] [border:<boolean>] [iconName:<filename> iconSize:<point2>]
button theButton2 "I a button"
常规按钮
button theButton iconName:@"PolyTools\TransformTools\PB_CW" iconSize:[20,20]
要用作按钮上图像的图标的文件名。如果指定了 iconName, 标题将被忽略。iconSize 指定 100% DPI 缩放的 iconName 大小。 如果未指定,则假定默认值为 [24,24]。
button theBorderlessButton "I am a button, too!" border:false
当设置为 true 或未指定时,将使用边框绘制按钮。这是 3ds Max 2009 之前的默认行为。
当设置为 false 时,该按钮将不带边框绘制,使其与 UI 背景。如果启用该按钮,则当按钮 按下,或鼠标悬停。
button btn_test "Test" tooltip:"This is a tooltip"
tooltip: 为按钮的工具提示提供文本;如果未提供,则没有工具提示。
window
结合综合所上
Code:点击查看
rollout menu1 "menu1"
(
button create "check concavity"
button theButton iconName:@"Merger_boy_256" iconSize:[20,20]
button theBorderlessButton "I am a button, too!" border:false
-- on对应按钮 do执行
on theButton pressed do
messagebox "Remember: Never press unknown buttons!"
)
rollout menu2 "menu2"
(
label label_a "tooltip button"
button btn_test "Test" tooltip:"This is a tooltip"
group "Group"
(
label l_warn "a label for showing group"
)
)
utility testCheckButton "Test The CheckButton"
(
-- 点击按钮时随着变量的内容而缩放
checkbutton myCheckButton "Check Me!"
-- theState is a user variable name that will contain the state
-- of the checkbox whenever the change handler is executed
on myCheckButton changed theState do
(
if theState == true then
myCheckButton.text = "Uncheck Me!"
else
myCheckButton.text = "Check Me!"
)
-- 提示check类型按钮
checkbutton chk_test "Check Me!" tooltip:"This is a tooltip"
on chk_test changed state do
chk_test.tooltip = if state then "I am checked!" else "I am unchecked!"
)--end utility
theNewFloater = newRolloutFloater "ButtonTest" 230 315
addRollout menu1 theNewFloater
addRollout menu2 theNewFloater
addRollout testCheckButton theNewFloater