Command macros and scripting

幾乎所有 Rhino 的指令都可以使用指令巨集執行,指令巨集可以由指令行輸入、工具列按鈕、快速鍵指令別名、以 ReadCommandFile 指令或將指令巨集以 Paste 指令貼上至 Rhino 的指令行執行。

編寫指令巨集

編寫指令巨集就像是在指令行輸入一連串的指令一樣,指令巨集文字之間的空格或跳行代表按指令行按下 Enter

Special Characters 在巨集裡的意思

*
(星號)

可以連續執行指令,不用按 Enter 重複啟動指令。

!
(驚嘆號)

中止前一個指令。

一個驚嘆號 (!) 後接著一個空格置於指令巨集的開頭可以中止任何正在執行中的指令,放在其它位置可以中止指令巨集,必要時也可以放在指令巨集的結尾。

_
(底線)

使用英文的指令、選項、選項值。

Rhino 有多種語言版本,非英文版本的指令、提示、指令選項、對話框、功能表....會翻譯成不同的語言,英文指令、選項、選項值未加底線可能無法在非英文的版本中正確執行。

為了讓以英文編寫的指令巨集可以在任何語言版本的 Rhino 執行,請務必在指令、選項、選項值之前加上底線。

例如:以下的指令巨集在英文版的 Rhino 可以正確地執行。

Circle 3Point 0,0,0 1,1,0 0,3,0

但在法文版的 Rhino 無法執行,為了避免這個問題,必需將指令巨集修改如下:

Cercle 3Point 0,0,0 1,1,0 0,3,0
_Circle _3Point 0,0,0 1,1,0 0,3,0

-
(連字號)

避免彈出對話框。

Rhino 的所有指令幾乎都可以在指令行以指令巨集執行,即使是會彈出對話框的指令也可以。在指令名稱前加上連字號 (-) 可以抑制指令彈出對話框,改以指令行選項執行。

'
(單引號)

下一個執行的是可以巢狀執行的指令,所謂的巢狀執行是指一個指令執行中可以插入另外一個指令,插入的指令完成後再繼續執行原來的指令。

視圖、工作平面操作及物件鎖點指令是可以巢狀執行的指令,建立幾何圖形的指令則不行。

單次使用的物件鎖點及選取次物件過濾器本身就可以巢狀執行,不需要再加上單引號。

/
(反斜線)

If the first character in a toolbar macro is not "!" and the last character is" /", the script runs on the command line without Enter, so more information can be added.

這個功能可以讓您將工具列按鈕當做螢幕上的數字鍵盤按鈕,以不同的按鈕連續輸入數個數字,避免按下一個按鈕後指令行就跳到下一行。

~
(代字號)

不顯示指令選項,但指令巨集中設定的選項仍然可以正確執行。

;

(分號)

註解。

指令巨集中以分號開始的行並不是巨集的一部分,但可以讓您在巨集裡做註解。

例如:

; 此為測試巨集
_Circle 0,0,0 15
_Line 0,0,0 pause ;15,0,0
; Line 0,0,0 0,15,0
_Line 0,0,0 -15,0,0

::
(double colon)

Layer nesting is indicated by a double colon - "::" between layer names. In the -Layer command, adding a new layer nested under Layer 01 use a macro like this:

! _-Layer New "Layer 01:: New Layer" Enter

範例

畫一個圓

這個指令巨集可以建立一個中心點座標 5,5,半徑 10 的圓:

! _-Circle 5,5 10

指令巨集中的空格就如同您在指令行輸入時按下 Enter

取消選取所有物件再執行 Move 指令

這個指令巨集可以確定在啟動 Move 指令時沒有任何物件被選取,在 Move 指令啟動後會再要求選取要移動的物件。

! _SelNone _Move

建立一條通過數個點的曲線

這個指令巨集會要求建立三個點物件,然後建立通過這些點物件的曲線。

! _SelAll _Points _Pause _Pause _Pause _Enter _Invert _CurveThroughPt _EnterEnd

這個指令巨集如何作業:

! _SelAll

取消正在執行中的指令,然後選取模型中的所有物件。

_Points

執行 Points 指令。

_Pause

_Pause

_Pause

等待指定三個點,建立三個點物件。

_Enter

模擬按下 Enter 結束建立點物件。

_Invert

反選選取集合,在這個指令巨集開始的時候已經選取了模型中的所有物件,反選以後只剩下新建立的點物件會處於選取狀態下。

_CurveThroughPt

建立一條通過所有點物件的曲線。

_Enter

結束指令。

不使用對話框設定選項

! -_Rebuild _Pause _Points=10 _Degree=3 _Enter

選取一條曲線,然後執行這個指令巨集,自動將曲線重建為 3 階 10 個控制點的曲線,並不會彈出重建曲線對話框。

如何測試這個指令巨集

  1. 選取整行指令巨集。
  2. Ctrl + C 將指令巨集複製到剪貼簿。
  3. 切換到 Rhino 視窗,按 Ctrl + V 將指令碼貼上。
特殊指令巨集指令

Pause

暫停指令巨集等待使用者輸入。

範例:

! _Circle _Pause 50

這個指令巨集會要求您指定圓的中心點,然後繼續完成指令碼,建立一個半徑為 50 單位的圓。

MultiPause

Stops a script for the duration of multiple selections, for example in Join, Polyline, and FilletEdge.

Enter

在指令巨集中模擬按下 Enter

這個指令並不會像平常的時候按下 Enter 會重複執行上一個指令。

EnterEnd

結束指令。

SetRedrawOff

在指令巨集執行過程中暫停畫面重繪。

SetRedrawOn

在使用 SetRedrawOff 指令之後再次開啟畫面重繪。

NoEcho

使指令巨集不在指令視窗顯示提示與訊息。

Echo

允許指令巨集在指令視窗顯示提示與訊息。

If you do not know what to type in a macro, run the hyphenated version of the command. Highlight and copy the command sequence and paste it into your macro text as a starting point.

MacroEditor

工具列 功能表

公用工具

工具

指令 >

巨集編輯器

The MacroEditor command opens an edit window for macro creation and testing.

Macro Editor panel

面板選項

步驟

  1. 巨集編輯器面板輸入指令。
  2. 執行
  3. 刪除可以清除巨集編輯器裡的所有文字。

附註

ReadCommandFile

工具列 功能表

工具

工具

指令 >

從檔案讀取

The ReadCommandFile command reads and executes a command macro from a text file.

步驟

附註

範例

將以下的指令巨集範例複製到文字檔裡,然後使用 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

......

Echo

工具列 功能表

未在工具列上。

未在功能表裡。

The Echo command turns on echoing of macro commands to the command history window.

要關閉指令提示訊息請使用 NoEcho 指令。

NoEcho

工具列 功能表

未在工具列上。

未在功能表裡。

The NoEcho command turns off display of macro commands in the command history window.

NoEcho or _NoEcho needs to be the very first word in the macro for it to work properly. Everything, including the exclamation point should follow, separated by a single space.

Enter

工具列 功能表

未在工具列上。

未在功能表裡。

The Enter command functions as pressing Enter for use in scripts or toolbar button programming.

範例

這個指令巨集讓您以指定三個點的方式設定工作平面:

'_CPlane _3Point

_Pause _Pause _Pause _Enter

The Enter command does not repeat the previous command like pressing the Enter key does.

EnterEnd

工具列 功能表

未在工具列上。

未在功能表裡。

The EnterEnd command functions as pressing the Enter key to complete a command string for use in macros or toolbar button programming.

EnterEnd is handy when a command is deep, in terms of command options such as Options or DocumentProperties, and you want to exit after one of these without counting how many Enters you need to get back to a blank command prompt. For example:

! _-DocumentProperties _Mesh _Custom _MaxEdgeSrf .01

would require at least two or three enters to exit the command. With EnterEnd, the command exits as soon as you want it to.

範例

! _-DocumentProperties _Mesh _Custom _MaxEdgeSrf .01 _EnterEnd

Exit

工具列 功能表

未在工具列上。

檔案

結束

The Exit command closes the current Rhino session.

如何使用指令行選項

  • 在指令名稱前加上連字號:-Exit
指令行選項

 

 

取消

 

Pause

工具列 功能表

未在工具列上。

未在功能表裡。

The Pause command stops a macro for user input.

範例

這個指令巨集會要求您指定圓的中心點,然後繼續完成指令碼,建立一個半徑為 50 單位的圓。

! _Circle _Pause 50

MultiPause

工具列 功能表

未在工具列上。

未在功能表裡。

The MultiPause command stops a macro for user input.

範例

This macro asks for objects to join.

! _Join _MultiPause

Run

工具列 功能表

未在工具列上。

未在功能表裡。

The Run command runs another application from inside Rhino.

步驟

  • 輸入要執行的檔案名稱及路徑。

SetRedrawOff

工具列 功能表

視圖

未在功能表裡。

The SetRedrawOff command disables screen redraw, construction plane, or camera changes during scripts.

恢復畫面重繪

SetRedrawOn

工具列 功能表

視圖

未在功能表裡。

The SetRedrawOn command enables screen redraw, construction plane, or camera changes during scripts.

關閉畫面重繪

編輯指令碼

RhinoScript is a plug-in for running scripts. Scripting languages allow loops, variable names, browsing for files, queries, and other

相關指令:

基本的操作步驟

  1. 編寫一個指令碼。
    RhinoScript 的附檔名為 .rvb.
  2. 執行 LoadScript 指令將指令碼載入到記憶體。
  3. 使用 RunScript 指令執行該指令碼。

Dragging a .rvb file onto the Rhino window will load and run the script.

更多指令碼的說明

  • 從 Rhino 的說明功能表選擇外掛程式,再選擇 RhinoScript

更多與 Rhino.Python 相關的指令碼資訊請參考:http://wiki.mcneel.com/rhino/basicmacros

LoadScript

工具列 功能表

未在工具列上。

工具功能表

Rhino Script >

載入

The LoadScript command reads a script file from disk, loads it into the script interpreter, and runs it.

Dragging a .rvb file onto the Rhino window will load and run the script.

步驟

  • 載入指令碼檔案對話框按說明開啟說明檔案。

For the on-line RhinoScript programmers reference, see: http://developer.rhino3d.com/guides/rhinoscript/

RunScript

工具列 功能表

未在工具列上。

工具功能表

Rhino Script >

執行

The RunScript command runs a previously loaded script.

Dragging a .rvb file onto the Rhino window will load and run the script.

步驟

  • 執行指令碼檔案對話框按說明開啟說明檔案。

EditScript

工具列 功能表

未在工具列上。

工具

Rhino Script >

編輯

The EditScript command opens a text editor utility for editing RhinoScript files.

步驟

  • EditScript 對話框的說明功能表開啟說明檔案。

RunPythonScript

工具列 功能表

未在工具列上。

工具

Python Script >

執行

The RunPythonScript command runs a Python script.

For the on-line Rhino.Python programmers reference, see: http://developer.rhino3d.com/guides/rhinopython/.

-RunPythonScript

選項

ResetEngine

使 Python 引擎重新初始化。

EditPythonScript

工具列 功能表

未在工具列上。

工具

Python Script >

編輯

The EditPythonScript command edits a Python script.

更多與 Rhino.Python 相關的指令碼資訊請參考:http://wiki.mcneel.com/developer/python

 

 

 

Rhinoceros 6 © 2010-2017 Robert McNeel & Associates. 10-一月-2018