ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:42.81KB ,
资源ID:26716911      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26716911.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(RhinoScript入门.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

RhinoScript入门.docx

1、RhinoScript入门RhinoScript可以翻译为“犀牛脚本”。RhinoScript是架构在Visual Basic语言之上的Rhino专属程序语言,大致上又可分做Marco与Script两大部分。以下简单地说明Marco与Script两者之间的差 别。Marcos (可以称做宏)就像是一个口令一个动作的叫Rhino帮我们执行动作(actions)。Marco 的命令行是线性、静态的,意思就是说,如果我们下了一百条指令,Rhino就会从第一条、第二条、第三条、这样一路执行到第一百条命令,无法跳跃也无法重复执行某个命令。Scripts 则是动态且非线性的。首先,透过 FlowContr

2、ol 我们可以跳过或者重复某些命令行,而Variable Control 则可以让我们创造出逻辑与数学的运算,Input and Output (I/O)则是使用者与Rhino之间的互动,使用者可以送进许多种类型的资料 (data),再经过运算之后以许多种数据形态输出。在了解 Marcos 与 Scripts 之间的差别之后,我们首先开始来介绍一点简单的语法(syntax)。在计算机程序语言中的语法,其实就跟我们学英文或其他外国语言一般,我们需要背单词也需要学文法,而在此的语法就有点像是文法。因此,语法就是一种成套(a set)的规则组合。于是乎,当然也就会有所谓合法与不合法的语法,只不过,一

3、般日常生活中,如果我们说出不合文法的语句,人基本上还可以透过上下文来猜懂。但是,计算机就没这么聪明了,如果我们写出不合语法的命令行,计算机不但不会去猜,根本就不理会,只会告诉我们:描述方式有误、语法不合规定等警 告句,告诉我们必须回头去检查到底是哪句命令行说错了。RhinoScript 所使用的VB语言的语法基本上算是简单的,已经非常接近日常的口语,这算是非信息背景用户的一大福音(版主也是这两个月才真的开始学程序)。所以,以下我们就来简单说明一下在Rhino中会用到的几种基本语法。如果我们要画一条线,我们大概会这么说:画一条线,起点在坐标(0,0,0)的位置,端点在(10,0,0)的位置。同样

4、地,在Rhino的Marco命令行我们可以这么下指令(请开启ToolsCommandsMarco Editor):_Line 0,0,0 10,0,0然而,如果我们不是在Marco中,而是在Script的环境下(请开启ToolsRhinoScriptEdit),会有两种说法。一种就像是直接在Rhino工作接口中的Command列下指令一般,可以这样讲:Rhino.Command _Line 0,0,0 10,0,0另一种讲法,则是呼叫RhinoScript中内部建构的许多Methods(超过200种),所以我们应该写成:Call Rhino.AddLine(Array(0,0,0), Arra

5、y(10,0,0)基 本上,本文的目的不在于将所有指令或者Rhino内建的Methods解说完毕,用意只在于很简单地说明在计算机语言中的语法与日常用语中文法的关系。差别 只在于,计算机还挺很忠心的,我们叫他做啥,他就会做啥(这是陈教授的名言之一)。所以,如果指令下了,Rhino却没反应,决不是Rhino有错,赶 紧回头检查自己的命令行是否下错了。此外,如果要详细了解VB的语法可以参考网络上的Microsoft教学手册,可以免费下载 并且有中文版。如果想详细了解RhinoScript中所有Methods的语法,请开启 HelpPlug-insRhinoScript,这里头详细记载了每个Mehod

6、s的用途、语法以及回传 (return)值等说明,当然,如果各位不心急的话,之后我们也会一一提到。 在 了解RhinoScript的基本语法之后,我们这次要说明的是VB中的循环(Loops)种类与概念。VB的循环基本上可以分为三种:(1) For.Next (计数循环)、(2) Do.Loop (条件式循环)、(3) For Each.In.Next (数组循环)。三种循环的特色与用法各有不同,端看在何种需要来选择。举例来说,计数循环顾名思义就是指当我们已经知道某一个数量时所使用;而条件式循环 则是循环本身具有条件的设定功能,透过条件的符合与不符合判断可以决定进入循环或者离开循环;数组循环则是

7、将在一个数组(array)中的对象一一取 出来执行某些命令动作。将上述的循环种类与表达方式整理如下:(1) 计数循环For.Next(2) 条件式循环Do While.Loop (前侧式)Do Until.Loop (前侧式)Do.Loop While (后测式)Do.Loop Until (后测式)Do.Loop (无穷)While.Wend (如果为真)(3) 数组循环For Each.In.Next接下来,我们就一一说明上述的循环运用方式以及提供简易的范例。先从计数循环说起,如果我们执行下列程序,我们可以在Rhino工作接口的Command列看到Rhino当我们印出1。Dim A: A=

8、1Call Rhino.Print(A)以此类堆,如果我们要依序印出1 2 3 4 5 6 7 8,当然可以很辛苦地这么写:Dim A: A=1Dim B: B=2Dim C: C=3Dim D: D=4Dim E: E=5Dim F: F=6Dim G: G=7Dim H: H=8 Call Rhino.Print(A)Call Rhino.Print(B) Call Rhino.Print(C)Call Rhino.Print(D)Call Rhino.Print(E)Call Rhino.Print(F)Call Rhino.Print(G)Call Rhino.Print(H)但是计算

9、机如果真的只能这么笨地一个口令一个动作,那我会请各位现在就放弃吧!这时候如果我们运用计数循环,为得到同样的结果,可以改成这么写:Dim iFor i =1 To 8Call Rhino.Print(i)Next这就是所谓的计数循环,当我们已知某个数量(从1到8),就可以利用计数循环重复执行某个动作,而在此所定义的 i 是个变量,每次重新进入循环时,i 值会被替换为下一个数字。因此,如果我们很快地将计数循环结合RhinoScript Methods,试着执行下列的指令看看:Dim StratPoint, EndPointDim iFor i = 0 To 10StartPoint = Array

10、 ( i*10, 0, 0)EndPoint = Array ( i*10, 10, 0)Call Rhino.AddLine(StartPoint, EndPoint)Next我 们可以很快地得到11条线,每条线的长度都是10,间距也都是10,第一条线的起点为(0,0,0)终点为(0,10,0),每个下一条线则是间距上一条 线10的单位的并行线。如果善加利用计数循环与函数规则,就可以做出许多复杂的形体,不仅可省下许多力气,也可能会产生出一些出乎意料的形体。这次只是简 单地介绍了计数循环的最基本用法,之后我们分别会再说明其他种类循环的基本用法,并且提供一些比较复杂的循环组合运用方式。04=In

11、torduction to RhinoScript (Loops-2 & Comparisons)An Short Introduction to Rhinoscript本文接着要说明上文所提到的条件式循环,但因为这会运用到VB语言中的比较(comparisons)功能,因此,一开始我们将先就此部分做说明。在VB中的比较式其实已经非常接近一般的数学式,详细如下:A = BA and B are equalA BA and B are not equalA BA is greater then BA = BA is greater then or equal to BA BA is less t

12、hen BA = BA is less then or equal to B有了上述比较式的概念,我们就可以开始说明条件式循环了。首先,我们说明两个前侧式循环:Do While.Loop 以及 Do Until.Loop。如果我们用口语的方式来翻译,会像是下面的说法:Do While.Loop当符合,就一直做 Do Until.Loop一直做,直到符合为止上 述口语翻译中的其实就是一个条件式,因此,Do While.Loop 的意思就是,当条件式成立时就进入循环,直到条件式式不成立才离开循环接着下一个命令行执行下去。而Do Until.Loop 则是如果一开始条件式不成立就进入循环,不断重复到

13、条件式成立才离开循环接着下一个命令行执行下去。这两个循环的正式语法如下:Do While Statement(s)Loop-Do Until Statement(s)Loop而 另外两个后测式循环的语法基本上与前测式循环类似,唯一的差别只在于进入循环的先后顺序,在一般状态下前测式与后测式循环是不具差别的,但若要细微地控制 进入循环的时间点就必须要特别留意了。举例来说,Do While.Loop 是先判断条件式是否成立,若成立才进入循环的叙述区块(statements),而Do.Loop While 则是先进入循环中的叙述区块,再判断条件式是否成立,若成立则重复进入循环,若不成立则离开循环。两个

14、后测式循环的语法如下:Do Statement(s)Loop While -DoStatement(s)Loop Until 还 有两个循环我们还没介绍,由于Do.Loop 这个无限循环一般来说在RhinoScript 很少使用,另一方面也经常会造成问题与困扰,所在此将不做说明。但是,另一个 While.Wend 则经常使用,甚至应该说很好用,所以大家可以特别注意一下,其口语翻译如下: Whlie.Wend当为真就做,一直到为假在 此的依旧是个条件式,整个循环的运作过程就是当条件式为真(True),则进入循环中的叙述区块,接着当进行到 Wend 的语句时,再回去检查一开始的条件式是否依旧为真,

15、若为真就一直重复这些动作,直到当条件式为假(False)则离开循环接着下一个命令行执行下 去。其正式语法如下: Whlie Statement(s)Wend接下来,我们要对计数循环与条件式循环做个简单的比较来说明两者的适用时机。请比较下列两个循环:Dim iFor i = 0 To 10Call Rhino.Print(i)Next-Dimn:n = 1Do While n=10 Call Rhino.Print(n) n = n+1Loop若 各位有实际测试,应该会发现到得到的结果是相同的。那么,For.Next 循环与Do.Loop 循环的差别究竟在哪里?我们可以发现,For.Next 循

16、环一开始就必须知道循环的执行次数,而 Do.Loop 循环则不用知道循环的执行次数。也就是说,当我们可以确认循环的执行次数时,将建议使用计数循环。但是,有些时候我们无法得知循环的执行次数,这时候就应 该用条件式循环。此外,循环彼此还可以互相搭配,产生循环内还有循环,也就是所谓的巢状循环(Nested Loop),这类相对目前来说比较复杂的运用之后我们会在实际范例中进行说明。 05=Introduction to RhinoScript (Textflie Layout) An Short Introduction to RhinoScript 在 进入其他VB语言与RhinoScript的说明

17、之前,先提示一点轻松但是却重要的提醒。由于其实写程序就跟做设计很类似,设计者如果没有良好的档案管理 方法,经常会图纸乱丢又乱塞,等到某天想要用时却找不到,就算找到了也忘记这张图到底是何时完成的,或者忘了最后的版本是谁修正的。当我们程序越写越多时 也会面临到上述的情形,因此,保持良好的工作习惯以及建立正确的档案管理统对日后不仅有莫大的帮助也是不可或缺的必备功课。另一方 面,一个程序除了要让计算机读得懂之外,常常也要让朋友或者是其他使用者能够阅读,于是乎,有一些共通的标注方式,就变成不同用户要读懂程序的重要媒 介。一般来说,一个较为完整的VBScript会由四个部分所组成:(1) Option E

18、xplicit area (语句区块)、(2) Mainsubroutine (主要的子程序)、(3) Addtional subroutines and functions (附加的子程序与函数式)、(4) Execution commenting (执行批注),其详细说明如下:(1)Option Explicit area在 VB语言中,当我们在程序的一开始加上了Option Explicit 这个语句,表示我们在模块中的所有变量都必须以 Dim, ReDim, Public, Private, Static 等语句 (这些语句我们之后会另行说明) 来加以宣告。若有出现未宣告的变量,在模块

19、的编译阶段会以错误方式警示告知。Option Explicit 必须放在所有程序 (Subs, Functions) 之前,加上它的好处是:可以帮我们检查是否输入错误的变量名称,或是有某些变量被重复定义。另外,一般来说,我们会在这个区加上一些批注 列(commenting lists)来说明作者、建档日期以及参考来源。在VB语言中,当我们在某段字符串前方加上撇号 (apostrophe,即 ),VB就会略过这段字符串不读,也就是成为单纯的叙述文字。Option Exlicit 语法范例如下:Option ExplicitScript written by Script copyrighted

20、by Script version (2) Main subroutineVB语言中的 Main subroutine 由四个部分所组成,语法如下: Sub Main()End Sub上面这个范例句是没有其他子程序 (Subs) 的情况,若有其他的子程序,在 Sub Main( ) 与 End Sub 之间则放放进呼叫其他子程序的语句。(3) Additional subroutines and functions在 VB语言中,Subs 与 Functions几乎可以做相同的事。但是,Functions 可以有回传值(returns) 来做运算的动作,而 Subs 则无法。因此,通常我们将一

21、些数值的运算交给 Functions 来做。另外,在 VB中 Function 可以自己呼叫自己,也就是可以做出递归(recursion) 运算,而且呼叫 Function 时可以在其左方直接加上一些函数表达式 (像是:Sqr、Cos 或 Chr 等) ,使 Function 就如同是内建函数一般。比较详细的 Function 实际使用方式之后会进一步说明,在此仅作初步介绍。最后,我们经常会在 Sub 或 Function 的名称左方看见一对括号,这表示可以送入变量,在 VB 中, Sub 与 Function 都可以送入变量,而当我们即使不送入变量时,也会以空的括号来表示。(4) Excut

22、ion commenting通 常我们会在模块中将某些重要的程序做批注,批注的方式请参照本文一开始所提到的 commenting 。做批注的好处是提醒自己日后在程序越写越复杂时,方便检查与阅读,另外也提供其他用户了解程序内容的用途。此外,一个好的程序撰写者经常会在一个复杂 程序的最后端加入一系列的步骤分解批注,用以说明整个程序执行过程的每个步骤(step) 用途。最 后,一个RhinoScript的档案会被存成 *.rvb 的文件格式,在此的 rvb 即是代表 RhinoVisualBasic 。本文主要是说明RhinoScript 档案的格式与良好的完整程序架构,内文中所碰触到的一些新知识若

23、有位详细说明之处,都会在之后陆续提供详细的解说。06=Introduction to RhinoScript (Oprators & Functions) An Short Introduction to RhinoScript 这次我们要简单介绍几个在VB语言中经常出现的几种不同类型的码(code)。在说明之前,请先看下列例子:A = 10 + 20B = 10 + 20 * 0.5A = Sin(10 + 20) + Sqr(0.5)B = Tan(10 + 20) / Log(0.5)在这面的这几个式子中出现了四种类型VB语言码:(1) Numbers (数值)、(2) Variable

24、s (变数)、(3) Operators (运算符)、(4) Functions (函数)。(1) Numbers & (2) Variables在 VB中,数字可以是整数或具有小数点,同时也可是正数或负数。式子中的A,B 我们称为变量,在VB语言中所有变量都必须被宣告,而宣告的方式有很多种,最常用的宣告语句是 Dim ,在VB中 Dim 的意思基本上就像是定义。当我们在宣告陈述区写下 Dim A,B,表示计算机会为我们预先留下内存的位置给 A,B 这两个变量。有时后我们也会看见有人这样写:Dim A As String,这样的写法是事先告诉计算机这个变量的数据类型,差别在于因为不同的数据类型

25、计算机为我们预先留下的内存位数 (bits) 是不同的。不过,这时候我们还不需要了解的如此深入,只要知道变量的宣告方式即可,其他的知识大略有个概念即可。另外,上面范例式中的 = ,在数学式中是表示等于的概念,但是在计算机语言中用等于来解释会出现问题。譬如说,如果我们写下 N = N+1 的式子,这在数学中是不成立的,因为如果我们将 N 以 1 带入,那 1 = 1+1 当然就不成立。因此,在计算机语言中 = 的概念是:将 = 右边的答案或结果代入左边的变量。我们用下面的例子做个简单的练习:Dim AA = 10 + 20A = A +1Call Rhino.Print(A)我 们会发现答案是

26、31。为什么?因为VB语言的程序代码是由上往下读的,例子中第一行的意思是:宣告一个 A 变量;第二行的意思是:将 10+20 的结果代入 A,所以这时候的 A 是 30;第三行的意思是:将 A 加 1 之后再带入 A 所以最后 A 是 30+1 也就是 31。(3) Operators再 来要说明的就不这么复杂了,在VB语言中的运算符大致可以分为三类:数学运算符、逻辑运算符、布尔值 (booleanvalues) 运算符。逻辑运算符在先前的文章中已经做过说明本文就不再重复,数学运算符则相当容易理解,基本上数学运算符的功能跟数学上的方法相同只需要了解其在于 VB中表达与运用的方式即可。另外,布尔值运算符在此只做简单的介绍,详细的用法及概念会在之后详细说明。+ add two values-substract

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1