NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

  [复制链接]
跳转到指定楼层
m
发表于 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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
63m
发表于 2014-4-27 22:26:36 | 只看该作者
下载了,谢谢分享
62m
发表于 2013-2-27 22:05:08 | 只看该作者
学习中。。。。
61m
发表于 2012-12-31 16:03:10 | 只看该作者
感谢分享 。。。。。
60m
发表于 2012-6-12 16:13:44 | 只看该作者
万分感谢~~~~~~
59m
发表于 2012-6-11 16:18:16 | 只看该作者
恩,学习学习
58m
发表于 2012-6-5 11:01:57 | 只看该作者
学这个要有c语言基础啊
57m
发表于 2012-6-4 20:19:39 | 只看该作者
好难懂。。。。。
56m
发表于 2012-5-24 17:53:02 | 只看该作者
good contribution!~
55m
发表于 2012-5-24 10:21:24 | 只看该作者
非常非常好,THX!
54m
发表于 2012-1-13 06:40:32 | 只看该作者
xue xi zhong  a .zhichi .
53m
发表于 2011-11-13 14:55:07 | 只看该作者
1# f(x)
52m
发表于 2011-11-11 20:38:39 | 只看该作者
1# f(x)
51m
发表于 2011-11-3 23:32:42 | 只看该作者
各位辛苦了!强力支持!!
50m
发表于 2011-11-3 15:56:49 | 只看该作者
感谢楼主~~~~~··
49m
发表于 2011-11-1 17:26:58 | 只看该作者
看来不下功夫学不行了
48m
发表于 2011-9-8 18:35:00 | 只看该作者
学习中…………
47m
发表于 2011-8-30 16:28:51 | 只看该作者
楼主有图分享吗?
46m
发表于 2011-7-16 13:14:09 | 只看该作者
脚本的代码语言需要多久学会阿!
45m
发表于 2011-7-14 15:29:50 | 只看该作者
头大啊。。。。
44m
发表于 2011-5-22 23:53:06 | 只看该作者
感谢感谢!!!!

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

GMT+8, 2024-11-26 20:37 , Processed in 0.070484 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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