3D脚本 maxscript入门教程(3)

 (2013-05-23 18:24:57)
标签: 

3dmax

 

maxscript

 

建模

 

it

分类: 脚本

这四个属性适用于对象集(ObjectSet) ,路径名(PathName)、选择集(selectionSet)等集合

变量、数组和集合之间的关系

从数组、对象集、路径名、选择集等之间的定义可以知道,它们都是存放的数据,这些数据类型可以是数目,字符串,也可以是对象,这和变量是一样的用途,这么说来,它们的实质是变量的集合,因此把它们统称为集合(collections)。集合中的每一个元素都是一个变量,所以访问集合中的元素可以像访问数组中的元素一样来访问,对于数组中的每一个元素可以像对待变量一样。输入:
Box()
Sphere()
然后选择它们,再输入:
selection[1]
监听器窗口中会返回第一个元素的路径名和位置。

3、表达式

要得到想要的值,就要对数据进行计算,计算规则不同,其结果也就不一样。例如2和3两个数据,按减法规则来计算,结果是-1,按加法来计算,结果是5。像这种按某种计算规则来求值的公式,MAXScript把它称为表达式(expressions,简写为expr),表达式是一种求值的规则。从语法的角度来看,用操作符把操作对象连接起来的式子称为表达式,有的编程语言也叫语句 (statements) ,意思一样。我们以前在学校里学的加减乘除四则运算也可以看作是最简单的表达式了,也就是说我们没有编程之前就会使用表达式了。前面提到的常量,变量,数组 ,构造器,函数以及输入的任何一句代码,都是表达式,因为总会返回一个值。 MAXScript有大多数编程语言常见的表达式,例如数学表达式(Math Expressions),比较表达式(comparison expressions ),逻辑表达式(Logical expressions ),以及MAXScript特有的关联表达式(Context expressions ),后面的教程会涉及。下面是有效的表达式:
x=1
y=2*3+5
print y --输出y的值到屏幕上

上面的代码可以写成一块,这就是块表达式(block-expression):
(
x=1
y=2*3+5
print y
)

还可以把这三行代码写成一行,用分号;把它们分开:
( x=1; y=2*3+5; print y )

几个常用的表达式
比较表达式(Comparison Expressions)

比较表达式总是返回两个布尔值中的一个,true 和 flase ,true(真)表示条件成立,flase(假)表示条件不成立。这个表达式特别有用,很多情况下都会用到,常常和 if ……then ……结合使用。比较表达式在小学数学中就有了,就是那些大于,等于,小于号连接起来的式子,有一点要注意,那就是等于号要用两个=表示,一个是表示赋值符号。示例如下:
10= =10 --条件成立,返回 true
11= =10 --条件不能成立,返回 flase
11!= 10 --条件成立,返回 true
11>= 10 --条件成立,返回 true
11<= 10 --条件成立,返回 true

x=8
y=36
x>y--条件不能成立,返回 flase


逻辑表达式(Logical Expressions)

逻辑表达式有or、and 和 not 三种,同比较表达式一样返回一个布尔值 true 和 flase之一,它是对比较表达式的进一步组合计算,也就是说对true和flase的重新组合,得到一个新的布尔值。

or(或),只要两者有一个成立,那么整个都成立,例如在中国发现了外星人或者在美国发现了外星人,只要有谁发现了一个,那么就说明这个宇宙上还有另外的生命。示例:
x=8
y=36
x= =8 or y= =8 --有一个成立,返回 true

and(与),两者要同时成立,才能整个成立,否则都不能成立。真是有福同享,有难同当的患难之交啊,一损俱损,一荣俱荣,关系密切。从中也可以看出些人生道理出来,那就是两个人合伙做事一定要同心协力,任何一个怀有异心,就办不成事。示例:
x=8
y=36
x= =8 and y= =8 --有一个成立,另一个不成立,返回 flase
x= =8 and y= =36 --两者同时成立,返回 true

not(非),对立派,总是唱反调,你要上山,它就要下水,你说是对的,它偏要说是错的。示例:
a=13
a>10 -- 返回 true
not a>10 -- 因为a>10 是true,所以not a>10返回 flase

相关文章: