NCF参数化建筑论坛

标题: RhinoScript语法(入门基础3) [打印本页]

作者: f(x)    时间: 2009-8-28 19:16
标题: RhinoScript语法(入门基础3)
Exit For 语句用于在计数器达到其终止值之前退出 For...Next 语句。因
为通常只是在某些特殊情况下(例如在发生错误时)要退出循环,所以可以在 If...Then...Else 语句的 True 语句块中使用 Exit For 语句。如果条件为 False,循环将照常运行

   使用 For Each...Next For Each...Next 循环与 For...Next 循环类似。For Each...Next 不是将语句运行指定的次数,而是对于数组中的每个元素或对象集合中的每一项重复
一组语句。这在不知道集合中元素的数目时非常有用。
   在以下示例中,Dictionary 对象的内容用于将文本分别放置在多个文本框中:
   <HTML>
   <HEAD><TITLE>窗体与元素</TITLE></HEAD>
   <SCRIPT LANGUAGE="VBScript">
   <!--
   Sub cmdChange_OnClick
          Dim d '创建一个变量
          Set d = CreateObject("Scripting.Dictionary")
          d.Add "0", "Athens" '添加键和项目
          d.Add "1", "Belgrade"
          d.Add "2", "Cairo"
          For Each I in d
                Document.frmForm.Elements(I).Value = D.Item(I)
          Next
    End Sub
    -->
    </SCRIPT>
    <BODY>
    <CENTER>
    <FORM NAME="frmForm"
    <Input Type = "Text"><p>
    <Input Type = "Text"><p>
    <Input Type = "Text"><p>
    <Input Type = "Text"><p>
    <Input Type = "Button" NAME="cmdChange" VALUE="单击此处"><p>
    </FORM>
    </CENTER>
    </BODY>
    </HTML>
VBScript 过程
     过程分类
     在 VBScript 中,过程被分为两类:Sub 过程和 Function 过程。
     Sub 过程是包含在 Sub 和 End Sub 语句之间的一组 VBScript 语句,执行操作但不返回值。Sub 过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果
Sub 过程无任何参数,则 Sub 语句必须包含空括号 ()。
     下面的 Sub 过程使用两个固有的(或内置的)VBScript 函数,即 MsgBox 和 InputBox,来提示用户输入信息。然后显示根据这些信息计算的结果。计算由使用
VBScript 创建的 Function 过程完成。此过程在以下讨论之
后演示。
     Sub ConvertTemp()
     temp = InputBox("请输入华氏温度。", 1)
     MsgBox "温度为 " & Celsius(temp) & " 摄氏度。"
     End Sub
     Function 过程
     Function 过程是包含在 Function 和 End Function 语句之间的一组 VBScript 语句。Function 过程与 Sub 过程类似,但是 Function 过程可以返回值。Function 过程
可以使用参数(由调用过程传递的常数、变量或表达式)。如果 Function 过程无任何参数,则 Function 语句必须包含空括号 ()。Function 过程通过函数名返回一个值,
这个值是在过程的语句中赋给函数名的。Function 返回值的数据类型总是 Variant。
     在下面的示例中,Celsius 函数将华氏度换算为摄氏度。Sub 过程 ConvertTemp 调用此函数时,包含参数值的变量被传递给函数。换算结果返回到调用过程并显示在消
息框中。
     Sub ConvertTemp()
     temp = InputBox("请输入华氏温度。", 1)
     MsgBox "温度为 " & Celsius(temp) & " 摄氏度。"
     End Sub
     Function Celsius(fDegrees)
     Celsius = (fDegrees - 32) * 5 / 9
     End Function
过程的数据进出
     给过程传递数据的途径是使用参数。参数被作为要传递给过程的数据的占位符。参数名可以是任何有效的变量名。使用 Sub 语句或 Function 语句创建过程时,过程名之
后必须紧跟括号。括号中包含所有参数,参数间用逗号分隔。例如,在下面的示例中,fDegrees 是传递给 Celsius 函数的值的占位符:
    Function Celsius(fDegrees)
    Celsius = (fDegrees - 32) * 5 / 9
    End Function
    要从过程获取数据,必须使用 Function 过程。请记住,Function 过程可以返回值;Sub 过程不返回值。
在代码中使用 Sub 和 Function 过程
   
    调用 Function 过程时,函数名必须用在变量赋值语句的右端或表达式中。例如:
    Temp = Celsius(fDegrees)
    或
    MsgBox "温度为 " & Celsius(fDegrees) & " 摄氏度。"
    调用 Sub 过程时,只需输入过程名及所有参数值,参数值之间使用逗号分隔。不需使用 Call 语句,但如果使用了此语句,则必须将所有参数包
含在括号之中。
    下面的示例显示了调用 MyProc 过程的两种方式。一种使用 Call 语句;另一种则不使用。两种方式效果相同。
     Call MyProc(firstarg, secondarg)
     MyProc firstarg, secondarg
     请注意当不使用 Call 语句进行调用时,括号被省略。
VBScript 编码约定
    编码约定是帮助您使用 Microsoft Visual Basic Scripting Edition 编写代码的一些建议。编码约定包含以下内容:
    * 对象、变量和过程的命名约定
    * 注释约定
    * 文本格式和缩进指南
    使用一致的编码约定的主要原因是使 Script 或 Script 集的结构和编码样式标准化,这样代码易于阅读和理解。使用好的编码约定可以使源代码明白、易读、准确,更加
直观且与其他语言约定保持一致。
常数命名约定
    VBScript 的早期版本不允许创建用户自定义常数。如果要使用常数,则常数以变量的方式实现,且全部字母大写以和其他变量区分。常数名中的多个单词用下划线 (_) 分
隔。例如:
    USER_LIST_MAX
    NEW_LINE
    这种标识常数的方法依旧可行,但您还可以选择其他方案,用 Const 语句创建真正的常数。这个约定使用大小写混合的格式,并以“con”作为常数名的前缀。例如  
    conYourOwnConstant
变量命名约定
    出于易读和一致性的目的,请在 VBScript 代码中使用以下变量命名约定:
    ttt
格式化代码
    应尽可能多地保留屏幕空间,但仍允许用代码格式反映逻辑结构和嵌套。以下为几点提示:
    * 标准嵌套块应缩进 4 个空格。
    * 过程的概述注释应缩进 1 个空格。
    * 概述注释后的最高层语句应缩进 4 个空格,每一层嵌套块再缩进 4 个空格。
    例如:
    '*********************************************************
    ' 目的: 返回指定用户在 UserList 数组中第一次出现的位置。
    ' 输入: strUserList(): 所查找的用户列表。
    ' strTargetUser: 要查找的用户名。
    ' 返回: strTargetUser 在 strUserList 数组中第一次出现时的索引。
    ' 如果目标用户未找到,返回 -1。
    '*********************************************************
    Function intFindUser (strUserList(), strTargetUser)
          Dim i ' 循环计数器。
          Dim blnFound ' 发现目标的标记。
          intFindUser = -1 i = 0 ' 初始化循环计数器。
          Do While i <= Ubound(strUserList) and Not blnFound
                If strUserList(i) = strTargetUser Then
                        blnFound = True ' 标记设为 True。
                        intFindUser = i ' 返回值设为循环计数器。
               End If
               i = i + 1 ' 循环计数器加 1。
           Loop
     End Function
作者: arkuo    时间: 2009-9-7 03:02
連續看了4篇...有點頭昏呢....明天再來好好的拜讀一次...
作者: 射手明    时间: 2009-9-20 16:47
好强大..敬佩楼主的精神!支持啦
作者: SmallTotal    时间: 2009-10-21 14:17
恩~鼎一个 我收藏呵呵
作者: tianrock2002    时间: 2009-10-31 16:09
看完 好帖,但不太好懂!{:3_49:}
作者: better    时间: 2009-12-11 17:19
很好的资料 已经做成pdf保存了
作者: 肥猫飞天    时间: 2010-1-2 16:42
感谢楼主啊
作者: renzhe3421    时间: 2010-1-6 12:54
真不错!!!好好学习!
作者: luoyijiang    时间: 2010-1-7 21:53
努力学习中
作者: bryson    时间: 2010-1-17 22:18
精神可嘉,鼓励鼓励,希望做成pdf
作者: 发现档案    时间: 2010-1-28 20:45
3比其他1,2难理解
作者: huanglee    时间: 2010-3-1 12:44
不错`清楚很多概念
作者: ss409335769    时间: 2010-3-22 16:39
太感谢!!!!
作者: tao    时间: 2010-3-23 11:03
感激                 .................
作者: df13    时间: 2010-3-26 23:02
看起來很不賴壓~  好棒 !!我喜歡  樓主就甘心
作者: fengkongx9    时间: 2010-4-18 12:03
- = 好难懂
作者: wj881115    时间: 2010-4-24 12:17
学习中。。。。
作者: freeze23    时间: 2010-4-26 20:51
太好了 太好了太好了
作者: zoezhao    时间: 2010-5-12 13:11
nice materials
作者: imghp    时间: 2010-5-16 10:56
请问一下楼主,后面还有吗?
作者: caijieteng    时间: 2010-5-16 12:27
多谢分享。。。。。。。
作者: zoezhao    时间: 2010-5-16 20:18
很好的学习指导~
作者: zdb888    时间: 2010-5-30 10:15
[刚看了第二篇,再次谢谢
作者: PARADAN    时间: 2010-9-24 11:36
持续关注中。。。辛苦了
作者: PARADAN    时间: 2010-9-27 21:54
感谢楼主  初来乍学。。。
作者: 顾顾    时间: 2010-10-14 20:12
多谢。。。。
作者: an7    时间: 2010-11-10 01:17
谢谢楼主~~~
作者: 子子萧    时间: 2010-11-12 16:28
真不错!!!好好学习!
作者: henryjames0501    时间: 2010-12-5 20:12
难懂。。。现收藏下~
作者: huangchang0528    时间: 2010-12-11 14:08
这里还有,太强大了~
作者: OceanCago    时间: 2010-12-14 23:40
找不到第二个的?
作者: 蓝灵666    时间: 2010-12-15 00:27
谢谢楼主分享。。
作者: 05310130    时间: 2010-12-21 00:08
不错不错!!
作者: chris523liu    时间: 2011-1-18 11:42
good
good
good
good
good
good
作者: LAVAHA    时间: 2011-1-28 23:09
有人看着不晕的吗。。。是不是 视频教学会好点 。。。
作者: giggs163    时间: 2011-2-7 12:49
学习中~~~~~~~~~
作者: mini_rhino    时间: 2011-3-1 16:14
编程什么的最头大了
作者: 豆豆45    时间: 2011-4-15 08:37
看不懂啊aa
作者: 豆豆45    时间: 2011-4-15 08:40
19# zoezhao

作者: 豆豆45    时间: 2011-4-15 08:41
39# 豆豆45 好啊
作者: 豆豆45    时间: 2011-4-15 08:42
40# 豆豆45
没照明度啊
作者: wawa    时间: 2011-5-3 10:54
thanks you!
作者: ping88    时间: 2011-5-8 00:26
看不懂啊   头疼
作者: frank6270    时间: 2011-5-9 03:31
努力学习中!
作者: 314159    时间: 2011-5-22 23:53
感谢感谢!!!!
作者: duys08    时间: 2011-7-14 15:29
头大啊。。。。
作者: fyexkxue    时间: 2011-7-16 13:14
脚本的代码语言需要多久学会阿!
作者: yuyuyu5200    时间: 2011-8-30 16:28
楼主有图分享吗?
作者: wszjr007    时间: 2011-9-8 18:35
学习中…………
作者: thinksong    时间: 2011-11-1 17:26
看来不下功夫学不行了
作者: accsse    时间: 2011-11-3 15:56
感谢楼主~~~~~··
作者: baoyi    时间: 2011-11-3 23:32
各位辛苦了!强力支持!!
作者: guishengda    时间: 2011-11-11 20:38
1# f(x)
作者: guishengda    时间: 2011-11-13 14:55
1# f(x)
作者: lieren    时间: 2012-1-13 06:40
xue xi zhong  a .zhichi .
作者: 呼呼    时间: 2012-5-24 10:21
非常非常好,THX!
作者: Nucifena    时间: 2012-5-24 17:53
good contribution!~
作者: 子子萧    时间: 2012-6-4 20:19
好难懂。。。。。
作者: miaomiaoacmlan    时间: 2012-6-5 11:01
学这个要有c语言基础啊
作者: angel120317    时间: 2012-6-11 16:18
恩,学习学习
作者: angel120317    时间: 2012-6-12 16:13
万分感谢~~~~~~
作者: 江风渔火    时间: 2012-12-31 16:03
感谢分享 。。。。。
作者: 人子    时间: 2013-2-27 22:05
学习中。。。。
作者: liyuqun    时间: 2014-4-27 22:26
下载了,谢谢分享




欢迎光临 NCF参数化建筑论坛 (http://ncf-china.com/) Powered by Discuz! X3.2