原标题:Rhino插件开发:RhinoScript脚本教程(4):VBScript基础
这一期写得非常艰难(虽然是十年前写的),因为讲编程基础语法最无聊。但我还是硬着头皮整理完格式并发出来了,我希望学生们自己看看弄明白,上课时就不用再讲这些东西了,就可以拿出宝贵的课堂时间来操练各种实战案例。
创意之代码以后还会发很多教程,除了CorelDraw、Rhino以外,还会有参数化软件(如Solidworks)的二次开发教程,目的都差不多,就是希望能跟同好们多讨论一些有价值的问题,而不是搞成一个编程培训班。
写得有点马虎,将就看吧。公众号的文字编辑平台非常糟糕,乱七八糟的代码格式也懒得改了,没使用截图是为了方便直接拷贝代码运行,下次我会附一个格式正确的截图在后面以增强阅读体验。
第3章VB基础
本期结合Rhino的具体操作集中介绍一些Rhino编程中常用的VB基本语法知识。如果已经会用这种语言,那么本节可以跳过去了。
为了节省篇幅,这里只介绍与Rhin有关的内容。VB语言结构简洁清晰,非常容易学,即使没有任何编程基础也可以很快上手。如果本章学会后认为有必要了解更多,以便在程序中增加一些有趣的花样,那么可以去查阅VB的帮助文档自学。
3.1变量与数组
程序用变量用来保存信息,如数值、名称、模型、灯光、材质等等,并可以在必要的时候改变一个变量的值。
在VB中可以使用Dim语句定义一个变量:
Dim a
如果要定义多个变量,可使用同一个Dim语句,各变量间用逗号隔开:
Dim a, b, c,d
在VB中定义变量不需要指定变量类型,上面所定义的a、b、c、d可以是整数、浮点数、布尔值、字符串,特殊情况下甚至可以是数组。在Rhino程序中,变量还可以表示用户建立的物体,如点、线、曲面、灯光、材质等。
一个变量的具体类型是在赋值中确定的,VB使用等号“=”对变量赋值,下面是一些赋值语句:
a=7
b=3.1415926
c=”这是一个字符串变量”
d=Rhino.GetObject("选择一个物体")
上述语句中,a被赋予整数型变量,b被赋予浮点数变量,c被赋予字符串变量(字符串赋值要用双引号括起来)。d被赋予一个物体,Rhino.GetObject()是Rhino提供的选择物体函数,提示用户在场景中选择一个物体并将该物体作为函数返回值赋给变量d,以后用户就可以通过变量d对该物体进行操作,如移动、旋转、复制、隐藏、删除等。有关内容在后面的章节中还要详细讲解。
变量也可以不用Dim语句定义直接使用,这样变量第一次使用时被自动定义。但是这里作者建议所有变量使用前都预先定义,因为假如由于打字错误把变量名打错,系统会认为这是一个新变量,而且不给出错误提示。在大型程序中,这样的错误很难寻找。为了避免这种错误,可以在程序的最前面加上下列语句:
Option Explicit
该语句强制规定所有变量都必须用DIM语句定义后才能使用,否则给出错误提示。
数组是一系列编了序号的变量,数组必须定义后才能使用,定义数组也使用Dim语句:
Dim a(9)
上面的语句定义了一个具有10个元素的数组,因为VB的数组元素标号从0开始,所以定义a(9)就可以了。
数组中的每一个元素都是一个变量,可以单独进行赋值和操作。VB不要求数组中各变量的值保持类型一致,如:
a(0)=9 ’整数
a(1)=7.8 ’浮点数
a(2)=”这是一个数组变量” ’字符串
a(3)=a(0)+a(1) ’浮点数
VB中的变量和数组可以在程序中任何位置定义。如果需要长度可变的数组,用下面两个语句实现:
Dim a()
Redim a(2)
第一句中的变量括号是空的,第二句用Redim重定义时再指定它的长度,以后还可以使用Redim改变数组长度。用Redim语句重新定义后,原数组中的数据将被丢弃。如果要保留原数据,可以使用带Preserve关键字的重定义语句:
Redim Preserve a(9)
这样,数组从a(0)到a(2)中的数据将被保留。
也可以定义二维数组:
Dim a(2,3)
a(0,0)=1
a(0,1)=2.5
a(1,0)=”二维数组”
a(1,1)=”Rhino”
二维数组同样也可以使用Redim语句进行重新定义。不过Rhino很少用到二维数组,即使表达曲面网格控制点也是用一维数组,所以这里就不多做介绍了。
3.2运算符与表达式
VB中运算符的作用是对常量或变量的值进行运算得到一个新值。算术计算中的加减乘除号都是运算符,另外VB中还有一些通常的算术运算中没有的运算符。
VB中常用的运算符如下表所示。
类别
运算符
功能
例子
运算结果
数学运算符
+
相加
3+5
8
-
相减
12-7
5
*
相乘
4*8
32
/
除以
12/5
2.4
整除
125
2
^
指数
2^10
1024
MOD
取余数
12 MOD 5
2
连接运算符
&
字符串连接
“A”&“BC”
“ABC”
+
字符串连接
“A”+“BC”
“ABC”
比较运算符
=
等于
12+7=19
TRUE
<>
不等于
12+7<>19
FALSE
<
小于
3<5
TRUE
>
大于
3>5
FALSE
<=
小于或等于
2+5<=7
TRUE
>=
大于或等于
2+5>=7
TRUE
逻辑运算符
AND
与
3>5 AND 3<5
FALSE
NOT
非
NOT 3>5
TRUE
OR
或
3>5 OR 3<5
TRUE
XOR
异或<