NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 93941|回复: 63
打印 上一主题 下一主题

[相关书籍] RhinoScript语法(入门基础3)

  [复制链接]
跳转到指定楼层
1m
发表于 2009-8-28 19:16:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
2m
发表于 2009-9-7 03:02:40 | 只看该作者
連續看了4篇...有點頭昏呢....明天再來好好的拜讀一次...
3m
发表于 2009-9-20 16:47:01 | 只看该作者
好强大..敬佩楼主的精神!支持啦
4m
发表于 2009-10-21 14:17:55 | 只看该作者
恩~鼎一个 我收藏呵呵
5m
发表于 2009-10-31 16:09:13 | 只看该作者
看完 好帖,但不太好懂!{:3_49:}
6m
发表于 2009-12-11 17:19:24 | 只看该作者
很好的资料 已经做成pdf保存了
7m
发表于 2010-1-2 16:42:09 | 只看该作者
感谢楼主啊
8m
发表于 2010-1-6 12:54:20 | 只看该作者
真不错!!!好好学习!
9m
发表于 2010-1-7 21:53:29 | 只看该作者
努力学习中
10m
发表于 2010-1-17 22:18:16 | 只看该作者
精神可嘉,鼓励鼓励,希望做成pdf
11m
发表于 2010-1-28 20:45:19 | 只看该作者
3比其他1,2难理解
12m
发表于 2010-3-1 12:44:22 | 只看该作者
不错`清楚很多概念
13m
发表于 2010-3-22 16:39:10 | 只看该作者
太感谢!!!!
14m
发表于 2010-3-23 11:03:58 | 只看该作者
感激                 .................
15m
发表于 2010-3-26 23:02:51 | 只看该作者
看起來很不賴壓~  好棒 !!我喜歡  樓主就甘心
16m
发表于 2010-4-18 12:03:47 | 只看该作者
- = 好难懂
17m
发表于 2010-4-24 12:17:03 | 只看该作者
学习中。。。。
18m
发表于 2010-4-26 20:51:29 | 只看该作者
太好了 太好了太好了
19m
发表于 2010-5-12 13:11:18 | 只看该作者
nice materials
20m
发表于 2010-5-16 10:56:13 | 只看该作者
请问一下楼主,后面还有吗?

小黑屋|手机版|NCF参数化建筑论坛 ( 浙ICP备2020044100号-2 )    辽公网安备21021102000973号

GMT+8, 2024-12-12 05:18 , Processed in 0.469738 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表