指令巨集與指令碼

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

編寫指令巨集

Write command macros just as you would type the command sequence at the command line. A space between characters or a new line act like pressing Enter at the command line.

特殊字元

符號

在巨集裡的意思

*
(asterisk)

Causes the command to repeat automatically without pressing Enter to restart.

!
(驚嘆號)

中止前一個指令。

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

_
(底線)

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

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

'
(apostrophe)

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

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

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

/
(反斜線)

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.

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

~
(tilde)

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

;

(分號)

註解。

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

例如:

; This is a test macro
_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

範例

畫一個圓

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

! _-Circle 5,5 10

The spaces between the entries are the same places you would press Enter when typing the command by hand.

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

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

! _SelNone _Move

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

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

! _SelAll _Points _Pause _Pause _Pause _Enter _Invert _CurveThroughPt _EnterEnd

這個指令巨集如何作業:

! _SelAll

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

_Points

Runs the Points command.

_Pause

_Pause

_Pause

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

_Enter

Simulates pressing Enter, which stops the creation of point objects.

_Invert

Inverts the selection. All visible objects in the scene were selected at the beginning of the script, so after Invert only the newly created point objects are selected.

_CurveThroughPt

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

_Enter

結束指令。

不使用對話框設定選項

! -_Rebuild _Pause _Points=10 _Degree=3 _Enter

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

如何測試這個指令巨集

1. 選取整行指令巨集。
2. Press Ctrl + C to copy it to the Clipboard.
3. Click in the Rhino command prompt, and press Ctrl + V to paste the macro.

特殊指令巨集指令

Pause

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

範例

! _Circle _Pause 50

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

Enter

Simulates pressing Enter inside a macro.

This command does not repeat the previous command like pressing Enter does.

EnterEnd

結束指令。

SetRedrawOff

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

SetRedrawOn

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

NoEcho

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

Echo

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

附註:如果您不知道如何編寫指令巨集,可以執行有連字號版本的指令,將指令歷史視窗中的指令流程複製到指令巨集裡。

ReadCommandFile

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

步驟

4 開啟文字檔對話框選取要讀取的檔案。

檔案的內容會被複製到指令行,就像您在指令行輸入一連串的指令一樣。

Notes

When building command files, use the Enter command, which is equivalent to pressing Enter to execute commands.
如果您需要經常讀取一個指令檔案,可以將 ReadCommandFile 指令及指令檔案的名稱做為工具列按鈕裡的巨集。例如:

-ReadCommandFile myfile.txt

如果檔案名稱中有空格,必需在檔案名稱前後加上雙引號。例如:

-ReadCommandFile "my file.txt"

範例

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

To turn echoing off, use the NoEcho command.

NoEcho

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

4 To turn echoing on use the Echo command.

Enter

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

範例

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

'_CPlane _3Point

_Pause _Pause _Pause _Enter

Note: 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

像這個指令巨集必需在結尾加上兩個 Enter 指令才能結束,使用 EnterEnd 指令只要加上一個即可直接結束。

範例

! _-DocumentProperties _Mesh _Custom _MaxEdgeSrf .01 _EnterEnd

Exit

The Exit command closes the current Rhino session.

Pause

範例

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

! _Circle _Pause 50

The Pause command stops a macro for user input.

Run

The Run command runs another application from inside Rhino.

步驟

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

SetRedrawOff

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

To turn screen redraw back on

4 Use the SetRedrawOn command.

SetRedrawOn

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

To turn screen redraw off

4 Use the SetRedrawOff command.

RunPythonScript

The RunPythonScript command runs a Python script.

For the on-line Rhino.Python programmers reference, see: http://www.rhino3d.com/5/ironpython/index.html.

-RunPythonScript

選項

ResetEngine

使 Python 引擎重新初始化。

EditPythonScript

The EditPythonScript command edits a Python script.

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

SetUserText

The SetUserText command attaches text information to an object.

附加的資訊會以類似 Windows 登錄檔的機碼/數值的方式儲存。

GetUserText 指令可以讀取附加到物件的文字資訊,.NET 外掛程式與 VisualBasic Script 也可以寫入這些文字資訊。

.NET 和 VisualBasic Script 可以很容易地存取附加的文字資訊。

範例

附加文字索引 = Weight

文字 = Kilograms

步驟

1. 選取物件。
2. 輸入文字索引。
3. 輸入文字。

移除文字索引

1. 選取物件。
2. 輸入文字索引。
3. 輸入"" (一對雙引號)。

選項

附加至

物件

附加文字資訊到物件的幾何資料。

If the information is closely associated with the geometry, attach it to the geometry. For example, a circle's radius should be attached to the geometry because the information will be invalid if the circle is control-point edited and changed into a NURBS curve.

屬性

附加文字資訊到物件的屬性。

如果附加的文字資訊是較高階的屬性資訊 (例如:顏色) 則應該被附加到物件的屬性,屬性資訊在物件以控制點編輯、修剪、複製...之後並不會遺失。

GetUserText

The GetUserText command retrieves text information attached to an object using the SetUserText command. This information can also be retrieved by .NET plug-ins and VisualBasic scripts.

步驟

1. 選取一個物件。
2. Type a text key or press Enter for all keys.

SetDocumentUserText

The SetDocumentUserText command attaches text information to a Rhino .3dm file.

附加的資訊會以類似 Windows 登錄檔的機碼/數值的方式儲存。

Retrieve the information with the GetDocumentUserText command. This information can also be attached by .NET plug-ins and VisualBasic scripts.

.NET 和 VisualBasic Script 可以很容易地存取附加的文字資訊。

步驟

1. 輸入文字索引。
2. 輸入文字。

GetDocumentUserText

The GetDocumentUserText command retrieves text information attached using the SetDocumentUserText command. This information can also be retrieved by .NET plug-ins and VisualBasic scripts.

步驟

4 Type a text key or press Enter for all keys.