指令巨集與指令碼
幾乎所有 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 並停在此處等待進一步輸入。此功能可用於建立類似螢幕數字鍵盤的工具列。
|
|
~ |
隱藏指令選項,讓指令回應訊息更簡潔。選項仍然照常運作。 |
|
; (分號) |
註解。 以分號 (;) 開頭的行不屬於指令巨集的一部分,可讓您為指令巨集加上說明,或嘗試其他輸入。 例如: ; 此為測試巨集 |
| :: (雙冒號) |
巢狀圖層由圖層名稱之間的雙冒號 "::" 表示。在 -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 個控制點的曲線,並不會彈出重建曲線對話框。
選取一條曲線,然後執行這個指令巨集。所有選項都會由指令巨集設定。
特殊指令巨集指令
|
暫停 |
在指令巨集中暫停以等待使用者輸入。 範例: ! _Circle _Pause 50 這個指令巨集會要求您指定圓的中心點,然後繼續完成指令碼,建立一個半徑為 50 單位的圓。 |
|
MultiPause |
在多重選取期間暫停指令碼,例如 Join、Polyline 和 FilletEdge。 |
|
Enter |
在指令巨集中模擬按下 Enter。 這個指令不會像按下 Enter 那樣重複執行上一個指令。 |
|
EnterEnd |
結束指令。 |
|
SetRedrawOff |
在指令巨集執行期間,避免畫面重繪以及工作平面或攝影機變更。 |
|
SetRedrawOn |
在使用 SetRedrawOff 指令之後再次開啟畫面重繪。 |
|
NoEcho |
關閉將指令巨集的指令回應到指令歷史視窗。 |
|
Echo |
開啟將指令巨集的指令回應到指令歷史視窗。 |
如果您不知道指令巨集中該輸入什麼,請執行有連字號版本的指令。將指令流程反白並複製,貼到指令巨集文字中作為起點。
| 工具列 | 功能表 |
|---|---|
|
|
工具 指令 > 巨集編輯器 視窗 面板 > 巨集編輯器 |
MacroEditor 指令可開啟編寫或測試指令巨集的編輯視窗。
步驟
-
在巨集編輯器視窗中輸入指令和選項。
-
按
按鈕測試巨集。
工具列
執行
執行整個指令巨集,或執行指令巨集中反白的部分。
刪除
清除編輯框。
快顯功能表
剪下
將選取的文字複製到剪貼簿並刪除該文字。
複製
將選取的文字複製到剪貼簿。
貼上
將剪貼簿中儲存的文字插入游標位置。
| 工具列 | 功能表 |
|---|---|
|
|
工具 指令 > 從檔案讀取 |
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&.
| 工具列 | 功能表 |
|---|---|
|
|
|
NoEcho 指令可停止指令巨集在指令視窗顯示提示與訊息。
- 要開啟指令提示訊息請使用 Echo 指令。
NoEcho 或 _NoEcho 必須是巨集中的第一個單字才能正常工作。包括驚嘆號在內的所有內容都應由一個空格分隔。
| 工具列 | 功能表 |
|---|---|
|
|
|
Enter 指令的功能等同於按下 Enter,可用於指令碼或工具列按鈕程式設計。
範例
這個指令碼以指定三個點的方式設定工作平面:
'_CPlane _3Point
_Pause _Pause _Pause _Enter
Enter 指令不會像按下 Enter 鍵那樣重複執行上一個指令。
| 工具列 | 功能表 |
|---|---|
|
|
|
工具列巨集或指令碼裡可以使用 EnterEnd 指令摸擬連按數次 Enter 結束巨集或指令碼。
當指令的選項層數很深時 (例如 Options 或 DocumentProperties),EnterEnd 很方便:您可在其中一項設定後直接結束,不必計算需要按幾次 Enter 才能回到空白的指令提示。例如:
! _-DocumentProperties _Mesh _Custom _MaxEdgeSrf .01
至少需要兩、三次 Enter 才能結束指令。使用 EnterEnd,指令會在您希望時立即結束。
範例
! _-DocumentProperties _Mesh _Custom _MaxEdgeSrf .01 _EnterEnd
|
工具列 |
功能表 |
快速鍵 |
|---|---|---|
|
|
檔案 結束 |
Ctrl (CMD) + Q |
Exit 指令可關閉目前的 Rhino 視窗。
如何使用指令行選項
- 在指令名稱 -Exit 前面輸入連字號。
| 指令行選項 | |
|---|---|
|
是 |
|
|
否 |
|
|
取消 |
|
| 工具列 | 功能表 |
|---|---|
|
|
|
Pause 指令可暫停指令巨集等待使用者輸入。
範例
這個指令巨集會要求您指定圓的中心點,然後繼續完成指令碼,建立一個半徑為 50 單位的圓。
! _Circle _Pause 50
| 工具列 | 功能表 |
|---|---|
|
|
|
MultiPause 指令可暫停指令巨集等待使用者輸入。
範例
這個指令巨集會要求選取要組合的物件。
! _Join _MultiPause
指令碼
RhinoScript 是用來執行指令碼的外掛程式,指令碼可以使用迴圈、變數....將重複性的作業自動化。
可使用的指令:
基本步驟
- 編寫一個指令碼函式。
RhinoScript 的附檔名為 .rvb。 - 執行 LoadScript 指令將指令碼載入到記憶體。
- 使用 RunScript 指令執行該指令碼。
.rvb 檔案拖放到 Rhino 視窗可以自動載入指令碼。
更多指令碼說明
- 從 Rhino 的說明功能表選擇外掛程式,再選擇 RhinoScript。
更多與 Rhino.Python 相關的指令碼資訊請參考:http://wiki.mcneel.com/rhino/basicmacros
| 工具列 | 功能表 |
|---|---|
|
|
工具功能表 Rhino 指令碼 > 載入 |
LoadScript 指令會從磁碟讀取指令碼檔案,載入到指令碼直譯器並執行。
.rvb 檔案拖放到 Rhino 視窗可以自動載入指令碼。
步驟
- 在載入指令碼檔案對話框中,按新增按鈕。
-
指令碼 -LoadScript 支援要載入的 rvb 檔案路徑中的 Windows 環境變數。
-
RhinoScript 程式設計的線上說明:
| 工具列 | 功能表 |
|---|---|
|
|
工具功能表 Rhino 指令碼 > 執行 |
RunScript 指令可執行已載入的指令碼。
.rvb 檔案拖放到 Rhino 視窗可以自動載入指令碼。
步驟
- 在執行指令碼副程式對話框中,按說明功能表。
| 工具列 | 功能表 |
|---|---|
|
工具 RhinoScript > 編輯 |
EditScript 指令可開啟 RhinoScript 檔案的編輯程式。
步驟
- 在 RhinoScript 編輯器對話框中,按說明功能表。
|
工具列 |
功能表 |
|---|---|
|
|
RunPythonScript 指令可執行 Python 指令碼。
Rhino.Python 程式設計師的線上參考資料,請參閱:http://developer.rhino3d.com/guides/rhinopython。
-RunPythonScript
選項
重設引擎
使 Python 引擎重新初始化。
|
工具列 |
功能表 |
|---|---|
|
|
工具 指令碼 > 編輯 |
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"
開啟
在指令碼編輯器視窗中載入指令碼檔案。