几乎所有 Rhino 的指令都可以使用指令巨集执行,指令巨集可以由指令行输入、工具列按钮、快捷键、指令别名、以 ReadCommandFile 指令或将指令巨集以 Paste 指令粘贴至 Rhino 的指令行执行。
编写指令巨集就像在指令行中输入指令序列一样。
特殊字符 |
在巨集里的意思 |
(空格) |
巨集里的空格字符的作用类似于按下 Enter 键。 在编写包含空格的名称(或文本字符串)时,需要将其括在双引号中,以避免破坏指令序列。 例如: _-SelName "Table 01" ✔ _-SelName Table 01 ✘ |
* |
可以连续执行指令,不用按 Enter 键重复启动指令。 |
! |
中止前一个指令。 指令巨集以感叹号 (!) 开头可以中止任何正在执行中的指令,放在其它位置可以中止指令巨集,必要时也可以放在指令巨集的结尾。 |
- |
避免弹出对话框。 Rhino 的所有指令几乎都可以在指令行以指令巨集执行,即使是会弹出对话框的指令也可以。在指令名称前加上连字符 (-) 可以抑制指令弹出对话框,改以指令行选项执行。一些指令 (例如 DevLoft) 的选项只能在指令行中可用。 |
_ |
使用英文运行的指令和选项。 Rhino 有多种语言版本,不同语言版本中的指令和选项的翻译也不同,为了巨集可以在任意语言版本的 Rhino 运行,我们建议用英文编写巨集,并且在每个指令和选项之前加上下划线。 例如: Cerchio 3Punti 0,0,0 1,1,0 0,3,0 ❗ 这个巨集只在 Rhino 的意大利版本中有效。
_Circle _3Point 0,0,0 1,1,0 0,3,0 ✔ 这个巨集在 Rhino 的任意版本中都有效。
|
' |
下一个执行的是可以嵌套执行的指令,所谓的嵌套执行是指一个指令执行中可以插入另外一个指令,插入的指令完成后再继续执行原来的指令。 视图、工作平面操作及物件锁点指令是可以嵌套执行的指令,建立几何图形的指令则不行。 单次使用的物件锁点及选取副物件过滤器本身就可以嵌套执行,不需要再加上单引号。 |
\ |
如果工具列按钮巨集的最后一个字符是 "\", 则该巨集无需在指令的最后执行 Enter 操作即可完成指令操作。 例如: 创建一个对应巨集 "5\" 的工具列按钮。单击该按钮将在指令行中输入数字5,不需要其它操作就完成巨集设定。这个功能可以用来创建一个工具列,工具列中的按钮分别代表屏幕上的数字键盘按钮。
|
~ |
不显示指令选项,但指令巨集中设定的选项仍然可以正确执行。 |
; (分号) |
注解。 指令巨集中以分号开始的行并不是巨集的一部分,但可以让您在巨集里做注解。 例如: ; This is a test macro |
:: (双冒号) |
嵌套图层由图层名称之间的双冒号表示 - "::"。使用 -Layer 指令,在图层 Layer 01 下添加图层的巨集这样写: ! _-Layer New "Layer 01:: New Layer" Enter |
# # (井号) |
启用以下指令的历史记录。 例如: #ArcBlend |
% (百分号) |
停用以下指令的历史记录。 例如: %ArcBlend |
(感叹号+) |
在指令会话中禁用历史记录锁定。 例如: !&_Delete 和 !&_Join |
这个指令巨集可以建立一个中心点座标 5,5,半径 10 的圆:
! _-Circle 5,5 10
指令巨集中的空格就如同您在指令行输入时按下 Enter 键。
这个指令巨集可以确定在启动 Move 指令时没有任何物件被选取,在 Move 指令启动后会再要求选取要移动的物件。
! _SelNone _Move
这个指令巨集可以建立一些点物件,然后建立通过这些点物件的曲线。
! _SelAll _Points _Pause _Pause _Pause _Enter _Invert _CurveThroughPt _EnterEnd
这个指令巨集如何运行:
! _SelAll |
取消正在执行中的指令,然后选取模型中的所有物件。 |
_Points |
执行 Points 指令。 |
_Pause _Pause _Pause |
等待指定三个点,建立三个点物件。 |
_Enter |
模拟按下 Enter 键,结束建立点物件。 |
_Invert |
反选选取集合,在这个指令巨集开始的时候已经选取了模型中的所有物件,反选以后只剩下新建立的点物件会处于选取状态下。 |
_CurveThroughPt |
建立一条通过所有点物件的多重直线。 |
_EnterEnd |
结束指令。 |
! -_Rebuild _Pause _Points=10 _Degree=3 _Enter
选取一条曲线,然后执行这个指令巨集,所有选项由巨集设置,并不会弹出重建曲线对话框。
Pause |
暂停指令巨集等待使用者输入。 范例: ! _Circle _Pause 50 这个指令巨集会要求您指定圆的中心点,然后继续完成指令,建立一个半径为 50 单位的圆。 |
MultiPause |
在多选物件的时候停止脚本的执行,例如只执行 Join、Polyline 以及 FilletEdge 的时候。 |
Enter |
在指令巨集中模拟按下 Enter 键。 这个指令并不会像平常的时候按下 Enter 键会重复执行上一个指令。 |
EnterEnd |
结束指令。 |
SetRedrawOff |
在指令巨集执行过程中暂停画面重绘。 |
SetRedrawOn |
在使用 SetRedrawOff 指令之后再次打开画面重绘。 |
NoEcho |
使指令巨集不在指令视窗显示提示与信息。 |
Echo |
允许指令巨集在指令视窗显示提示与信息。 |
如果您不知道如何编写指令巨集,可以执行有连字号版本的指令,将指令历史视窗中的指令流程复制到指令巨集里。
MacroEditor 指令打开编写或测试指令巨集的编辑视窗。
巨集编辑器
在巨集编辑器面板中输入指令和选项。
点击 按钮测试巨集。
运行整个巨集,或运行巨集中的高亮部分。
清除编辑框。
复制所选文本到剪贴板并删除该文本。
复制所选文本到剪贴板。
将存储在剪贴板中的文本插入到光标位置。
ReadCommandFile 指令从文本文件中读取指令巨集并执行。
将以下的指令巨集范例复制到文本文件里,然后使用 ReadCommandFile 指令读取该文字档,一次建立数条曲线。
! _interpcrv
23,5,0
23,2,5,0
23.7,5.2,1
_Enter
_interpcrv
26.1,4.9,1.1
26.8,4.9,1.0
27.1,4.8,0.9
_Enter
……
NoEcho 指令使指令巨集不在指令视窗显示提示与讯息。
NoEcho 或 _NoEcho 必须是巨集中的第一个单词才能正常工作,所有的东西,包括感叹号,都应该用一个空格隔开。
Enter 指令的功能就如同按下 Enter 键,可以在指令巨集或工具列按钮的巨集中使用。
这个指令巨集让您以指定三个点的方式设定工作平面:
'_CPlane _3Point
_Pause _Pause _Pause _Enter
这里的 Enter 指令并不会像平常的时候按下 Enter 键会重复执行上一个指令。
EnterEnd 指令的功能就如同按下 Enter 键,可以在指令巨集或工具列按钮的巨集中使用。
EnterEnd 用在有许多层提示的指令时非常有效,例如:-Options 与 -DocumentProperties 指令,当您已经设置了需要的选项后,如果用 Enter 指令,需要输入非常多的 Enter,如果使用 EnterEnd,不管位于哪一层提示,都可以直接结束指令。举例:
! _-DocumentProperties _Mesh _Custom _MaxEdgeSrf .01
像这个指令巨集必需在结尾加上两个 Enter 指令才能结束,使用 EnterEnd 指令只要加上一个即可直接结束。
! _-DocumentProperties _Mesh _Custom _MaxEdgeSrf .01 _EnterEnd
RhinoScript 是用来执行脚本的插件程序,通过脚本可以实现使用循环运算、变量、文件浏览、查询等。
相关指令:
将 .rvb 文件拖放到 Rhino 视窗可以自动载入并执行脚本。
更多与 Rhino 相关的脚本信息请参考:http://wiki.mcneel.com/rhino/basicmacros.
LoadScript 指令从硬盘中读取脚本文件,将其载入到脚本解释器并等待执行。
将 .rvb 文件拖放到 Rhino 视窗可以自动载入并执行脚本。
可编写脚本指令,-LoadScript,支持要加载的 rvb 文件路径中的 Windows 环境变量。
更多 RhinoScript 在线说明请参考:
RunPythonScript 指令执行 Python 脚本。
更多Rhino.Python 在线说明请参考: http://developer.rhino3d.com/guides/rhinopython/。
强制重新实例化 Python 引擎,此功能在同时跨越多个文件写入与测试时很有效。