指令巨集與指令碼

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

編寫指令巨集

編寫指令巨集就像是在指令行輸入一連串的指令一樣。

特殊字元

在巨集裡的意思

(空格)

巨集裡的空格就像按 Enter 鍵一樣。

在編寫包含空格的名稱 (或文字字串) 時,您需要使用雙引號將內容括起來,以避免破壞指令順序。

例如:

_-SelName "Table 01" ✔

_-SelName Table 01 ✘

*
(星號)

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

!
(驚嘆號)

中止前一個指令。

將驚嘆號 (!) 置於指令巨集的開頭可以中止任何先前的指令,放在其他位置則會中止指令巨集。必要時,也可以將驚嘆號放在指令巨集的結尾。

-
(連字號/破折號)

隱藏對話框。

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

_
(底線)

以英文執行指令和選項。

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 並停在此處等待進一步輸入。此功能可用於建立類似螢幕數字鍵盤的工具列。

~
(代字號)

隱藏指令選項,讓指令回應訊息更簡潔。選項仍然照常運作。

;

(分號)

註解。

以分號 (;) 開頭的行不屬於指令巨集的一部分,可讓您為指令巨集加上說明,或嘗試其他輸入。

例如:

; 此為測試巨集
_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

::
(雙冒號)

巢狀圖層由圖層名稱之間的雙冒號 "::" 表示。在 -Layer 指令中,使用以下指令巨集在圖層 01 之下加入一個新的圖層:

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

#
(井號)

開啟在 # 後面指令的建構歷史。

例如:#ArcBlend

%
(百分號)

停用在 % 後面指令的建構歷史。

例如:%ArcBlend

!&

(驚嘆號加上 & 符號)

在指令視窗停用建構歷史鎖定。

例如:!&_Delete 和 !&_Join

範例

畫一個圓

這個指令巨集可以建立一個中心點座標 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

建立一條通過這些點物件的多重直線。

_EnterEnd

結束指令。

略過對話框

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

選取一條曲線,然後執行這個指令巨集。所有選項都會由指令巨集設定。

如何測試這些指令巨集

  1. 直接從這個說明主題中選取指令巨集。
  2. 按 Ctrl + C 將它複製到剪貼簿。
  3. 在 Rhino 指令提示中按一下,然後按 Ctrl + V 貼上指令巨集。
特殊指令巨集指令

暫停

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

範例:

! _Circle _Pause 50

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

MultiPause

在多重選取期間暫停指令碼,例如 Join、Polyline 和 FilletEdge。

Enter

在指令巨集中模擬按下 Enter。

這個指令不會像按下 Enter 那樣重複執行上一個指令。

EnterEnd

結束指令。

SetRedrawOff

在指令巨集執行期間,避免畫面重繪以及工作平面或攝影機變更。

SetRedrawOn

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

NoEcho

關閉將指令巨集的指令回應到指令歷史視窗。

Echo

開啟將指令巨集的指令回應到指令歷史視窗。

如果您不知道指令巨集中該輸入什麼,請執行有連字號版本的指令。將指令流程反白並複製,貼到指令巨集文字中作為起點。

MacroEditor

工具列 功能表

工具

工具

指令 > 巨集編輯器

視窗

面板 > 巨集編輯器

MacroEditor 指令可開啟編寫或測試指令巨集的編輯視窗。

巨集編輯器面板

容器選項

步驟

  1. 在巨集編輯器視窗中輸入指令和選項。

  2. 按 按鈕測試巨集。

工具列

執行

執行整個指令巨集,或執行指令巨集中反白的部分。

刪除

清除編輯框。

快顯功能表

剪下

將選取的文字複製到剪貼簿並刪除該文字。

複製

將選取的文字複製到剪貼簿。

貼上

將剪貼簿中儲存的文字插入游標位置。

ReadCommandFile

工具列 功能表

工具

工具

指令 >

從檔案讀取

ReadCommandFile 指令可從文字檔案讀取指令巨集並執行。

步驟

  • 在開啟文字檔對話框中,選取要讀取的檔案。
    檔案內容會被複製到指令行,指令檔中的各行會被當作在指令行輸入一樣來解譯。

附註

  • 建立指令檔時,請使用 Enter 指令,它等同於按下 Enter 來執行指令。
  • 如果您需要經常讀取一個指令檔案,可以將 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

etc&.

Echo

工具列 功能表

未在工具列上。

未在功能表裡。

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

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

NoEcho

工具列 功能表

未在工具列上。

未在功能表裡。

NoEcho 指令可停止指令巨集在指令視窗顯示提示與訊息。

  • 要開啟指令提示訊息請使用 Echo 指令。

NoEcho 或 _NoEcho 必須是巨集中的第一個單字才能正常工作。包括驚嘆號在內的所有內容都應由一個空格分隔。

Enter

工具列 功能表

未在工具列上。

未在功能表裡。

Enter 指令的功能等同於按下 Enter,可用於指令碼或工具列按鈕程式設計。

範例

這個指令碼以指定三個點的方式設定工作平面:

'_CPlane _3Point

_Pause _Pause _Pause _Enter

Enter 指令不會像按下 Enter 鍵那樣重複執行上一個指令。

EnterEnd

工具列 功能表

未在工具列上。

未在功能表裡。

工具列巨集或指令碼裡可以使用 EnterEnd 指令摸擬連按數次 Enter 結束巨集或指令碼。

當指令的選項層數很深時 (例如 Options 或 DocumentProperties),EnterEnd 很方便:您可在其中一項設定後直接結束,不必計算需要按幾次 Enter 才能回到空白的指令提示。例如:

! _-DocumentProperties _Mesh _Custom _MaxEdgeSrf .01

至少需要兩、三次 Enter 才能結束指令。使用 EnterEnd,指令會在您希望時立即結束。

範例

! _-DocumentProperties _Mesh _Custom _MaxEdgeSrf .01 _EnterEnd

Exit

工具列

功能表

快速鍵

未在工具列上。

檔案

結束

Ctrl (CMD) + Q

Exit 指令可關閉目前的 Rhino 視窗。

如何使用指令行選項

  • 在指令名稱 -Exit 前面輸入連字號。
指令行選項

是

 

否

 

取消

 

Pause

工具列 功能表

未在工具列上。

未在功能表裡。

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

範例

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

! _Circle _Pause 50

MultiPause

工具列 功能表

未在工具列上。

未在功能表裡。

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

範例

這個指令巨集會要求選取要組合的物件。

! _Join _MultiPause

Run

工具列 功能表

未在工具列上。

未在功能表裡。

Run 指令可從 Rhino 內部執行其他應用程式。

步驟

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

SetRedrawOff

工具列 功能表

視圖

未在功能表裡。

SetRedrawOff 指令可在指令巨集執行過程關閉畫面重繪。

重新開啟畫面重繪

SetRedrawOn

工具列 功能表

視圖

未在功能表裡。

SetRedrawOn 指令可在指令碼執行過程開啟畫面重繪,立即顯示工作平面與視圖變更。

關閉畫面重繪

指令碼

RhinoScript 是用來執行指令碼的外掛程式,指令碼可以使用迴圈、變數....將重複性的作業自動化。

可使用的指令:

基本步驟

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

.rvb 檔案拖放到 Rhino 視窗可以自動載入指令碼。

更多指令碼說明

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

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

LoadScript

工具列 功能表

未在工具列上。

工具功能表

Rhino 指令碼 >

載入

LoadScript 指令會從磁碟讀取指令碼檔案,載入到指令碼直譯器並執行。

.rvb 檔案拖放到 Rhino 視窗可以自動載入指令碼。

步驟

  • 在載入指令碼檔案對話框中,按新增按鈕。

RunScript

工具列 功能表

未在工具列上。

工具功能表

Rhino 指令碼 >

執行

RunScript 指令可執行已載入的指令碼。

.rvb 檔案拖放到 Rhino 視窗可以自動載入指令碼。

步驟

  • 在執行指令碼副程式對話框中,按說明功能表。

EditScript

工具列 功能表

工具

RhinoScript > 編輯

EditScript 指令可開啟 RhinoScript 檔案的編輯程式。

步驟

  • 在 RhinoScript 編輯器對話框中,按說明功能表。

RunPythonScript

工具列

功能表

未在工具列上。

RunPythonScript 指令可執行 Python 指令碼。

Rhino.Python 程式設計師的線上參考資料,請參閱:http://developer.rhino3d.com/guides/rhinopython。

-RunPythonScript

選項

重設引擎

使 Python 引擎重新初始化。

ScriptEditor

工具列

功能表

工具

工具

指令碼 > 編輯

ScriptEditor 指令會開啟用於 Python 和 C# 程式設計的指令碼編輯器視窗。

指令碼編輯器指南

指令行選項

執行可編寫指令碼的指令 -ScriptEditor 以使用指令行選項。

編輯

開啟指令碼編輯器視窗。

執行

執行指令碼檔案。

以指令巨集執行指令碼檔案

您可以用數種方式指定指令碼檔案的路徑。

  • 使用完整的檔案路徑:

    _-ScriptEditor _Run "D:\My Files\My Script.py"

  • 在路徑中使用環境變數:

    _-ScriptEditor _Run "%USERPROFILE%\Documents\My Script.py"

    這個指令巨集會執行您「文件」資料夾中的 "My Script.py" 檔案。

    在 Windows 命令提示字元中執行 "Set" 指令,可列出所有環境變數。

  • 在 Rhino 選項 > 檔案搜尋路徑中設定的資料夾內搜尋檔案:

    _-ScriptEditor _Run "My Script.py"

開啟

在指令碼編輯器視窗中載入指令碼檔案。