指令巨集與指令碼
工具列 |
功能表 |
快速鍵 |
指令巨集與指令碼
幾乎所有 Rhino 的指令都可以使用指令巨集執行,指令巨集可以由指令行輸入、工具列按鈕、快速鍵、指令別名、以 ReadCommandFile 指令或將指令巨集以 Paste 指令貼上至 Rhino 的指令行執行。
編寫指令巨集就像是在指令行輸入一連串的指令一樣,指令巨集文字之間的空格或跳行代表按指令行按下 Enter 鍵。
特殊字元
符號 |
在巨集裡的意思 |
* |
可以連續執行指令,不用按 Enter 鍵重複啟動指令。 |
! |
一個驚嘆號 (!) 後接著一個空格置於指令巨集的開頭可以中止任何正在執行中的指令,放在其它位置可以中止指令巨集,必要時也可以放在指令巨集的結尾。 |
_ |
Rhino 有多種語言版本,非英文版本的指令、提示、指令選項、對話框、功能表....會翻譯成不同的語言,英文指令、選項、選項值未加底線可能無法在非英文的版本中正確執行。 為了讓以英文編寫的指令巨集可以在任何語言版本的 Rhino 執行,請務必在指令、選項、選項值之前加上底線。 例如:以下的指令巨集在英文版的 Rhino 可以正確地執行。 Circle 3Point 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,半徑 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 個控制點的曲線,並不會彈出重建曲線對話框。
如何測試這個指令巨集
選取整行指令巨集。
按 Ctrl + C 將指令巨集複製到剪貼簿。
切換到 Rhino 視窗,按 Ctrl + V 將指令碼貼上。
特殊指令巨集指令
Pause |
暫停指令巨集等待使用者輸入。 範例 ! _Circle _Pause 50 這個指令巨集會要求您指定圓的中心點,然後繼續完成指令碼,建立一個半徑為 50 單位的圓。 |
Enter |
在指令巨集中模擬按下 Enter 鍵。 這個指令並不會像平常的時候按下 Enter 鍵會重複執行上一個指令。 |
EnterEnd |
結束指令。 |
SetRedrawOff |
在指令巨集執行過程中暫停畫面重繪。 |
SetRedrawOn |
在使用 SetRedrawOff 指令之後再次開啟畫面重繪。 |
NoEcho |
使指令巨集不在指令視窗顯示提示與訊息。 |
Echo |
允許指令巨集在指令視窗顯示提示與訊息。 |
附註:如果您不知道如何編寫指令巨集,可以執行有連字號版本的指令,將指令歷史視窗中的指令流程複製到指令巨集裡。
工具列 |
功能表 指令集 巨集編輯器 |
快速鍵 |
MacroEditor 指令
開啟編寫或測試指令巨集的編輯視窗。
巨集編輯器面板
步驟
在巨集編輯器面板輸入指令。
按執行。
按刪除可以清除巨集編輯器裡的所有文字。
附註
選取指令巨集的一部分再按執行可以只執行選取的部分。
編輯視窗的右鍵快顯功能表可以全選、複製、貼上、刪除、執行...。
工具列 |
功能表 指令集 從檔案讀取 |
快速鍵 |
ReadCommandFiles 指令
從文字檔中讀取指令巨集並執行。
步驟
在開啟文字檔對話框選取要讀取的檔案。
檔案的內容會被複製到指令行,就像您在指令行輸入一連串的指令一樣。
附註
建立指令檔案時可以使用 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
......
工具列 |
功能表 |
快速鍵 |
Echo 指令
允許指令巨集在指令視窗顯示提示與訊息。
要關閉指令提示訊息請使用 NoEcho 指令。
工具列 |
功能表 |
快速鍵 |
NoEcho 指令
使指令巨集不在指令視窗顯示提示與訊息。
要開啟指令提示訊息請使用 Echo 指令。
工具列 |
功能表 |
快速鍵 |
Enter 指令
這個指令的功能就如同按下 Enter 鍵,可以在指令巨集或工具列按鈕的巨集中使用。
範例
這個指令巨集讓您以指定三個點的方式設定工作平面:
'_CPlane _3Point
_Pause _Pause _Pause _Enter
這裡的 Enter 指令並不會像平常的時候按下 Enter 鍵會重複執行上一個指令。
工具列 |
功能表 |
快速鍵 |
EnterEnd 指令
這個指令的功能就如同按下 Enter 鍵,可以在指令巨集或工具列按鈕的巨集中使用,它與 Enter 指令不同處在於這個指令在有許多層提示的指令 (例如:-Options 與 -DocumentProperties 指令),不管位於哪一層提示,執行 EnterEnd 可以直接結束指令。
! _-DocumentProperties _Mesh _Custom _MaxEdgeSrf .01
像這個指令巨集必需在結尾加上兩個 Enter 指令才能結束,使用 EnterEnd 指令只要加上一個即可直接結束。
範例
! _-DocumentProperties _Mesh _Custom _MaxEdgeSrf .01 _EnterEnd
工具列 |
功能表 結束 |
快速鍵 |
Exit 指令
關閉 Rhino 視窗。
工具列 |
功能表 |
快速鍵 |
Pause 指令
暫停指令巨集等待使用者輸入。
範例
這個指令巨集會要求您指定圓的中心點,然後繼續完成指令碼,建立一個半徑為 50 單位的圓。
! _Circle _Pause 50
工具列 |
功能表 |
快速鍵 |
Run 指令
從 Rhino 裡執行外部的程式。
步驟
輸入要執行的檔案名稱及路徑。
工具列 |
功能表 |
快速鍵 |
SetRedrawOff 指令
在指令巨集執行過程中關閉畫面重繪。
要開啟畫面重繪請使用 SetRedrawOn 指令。
工具列 |
功能表 |
快速鍵 |
SetRedrawOn 指令
在指令巨集執行過程中開啟畫面重繪。
要關閉畫面重繪請使用 SetRedrawOff 指令。
RhinoScript 是用來執行指令碼的外掛程式,指令碼可以使用迴圈、變數....將重複性的作業自動化。
相關指令:
基本的操作步驟
編寫一個指令碼。
RhinoScript 的附檔名為 .rvb.
執行 LoadScript 指令將指令碼載入到記憶體。
使用 RunScript 指令執行該指令碼。
附註:將 .rvb 檔案拖放到 Rhino 視窗可以自動載入指令碼。
更多指令碼的說明
從 Rhino 的說明功能表選擇外掛程式,再選擇 RhinoScript。
更多與 Rhino 相關的指令碼資訊請參考:http://www.rhino3d.com/scripting/。
工具列 |
功能表 RhinoScript 載入 |
快速鍵 |
LoadScript 指令
將指令碼檔案 .rvb 載入到 Rhino 等待執行。
附註:將 .rvb 檔案拖放到 Rhino 視窗可以自動載入指令碼。
步驟
在載入指令碼檔案對話框按說明開啟說明檔案。
更多與 Rhino 相關的指令碼資訊請參考:http://www.rhino3d.com/scripting/。
RhinoScript 程式設計的線上說明:http://www.rhino3d.com/5/rhinoscript/index.html
工具列 |
功能表 RhinoScript Run |
快速鍵 |
RunScript 指令
執行已載入的指令碼。
附註:將 .rvb 檔案拖放到 Rhino 視窗可以自動載入指令碼。
步驟
在執行指令碼檔案對話框按說明開啟說明檔案。
更多與 Rhino 相關的指令碼資訊請參考:http://www.rhino3d.com/scripting/。
工具列 |
功能表 RhinoScript 編輯 |
快速鍵 |
指令巨集與指令碼指令
開啟 RhinoScript 檔案的編輯程式。
步驟
在 EditScript 對話框的說明功能表開啟說明檔案。
更多與 Rhino 相關的指令碼資訊請參考:http://www.rhino3d.com/scripting/。
工具列 |
功能表 PythonScript Run |
快速鍵 |
RunPythonScript 指令
執行 Python 指令碼。
更多與 Rhino 相關的指令碼資訊請參考:http://www.rhino3d.com/scripting/。
Rhino.Python 程式設計的線上說明:
http://www.rhino3d.com/5/ironpython/index.html
-RunPythonScript
選項
ResetEngine
使 Python 引擎重新初始化。
工具列 |
功能表 PythonScript 編輯 |
快速鍵 |
EditPythonScript 指令
編輯 Python 指令碼。
更多與 Rhino.Python 相關的指令碼資訊請參考:http://wiki.mcneel.com/developer/python。
工具列 |
功能表 |
快速鍵 |
SetUserText 指令
附加文字資訊至物件。
附加的資訊會以類似 Windows 登錄檔的機碼/數值的方式儲存。
GetUserText 指令可以讀取附加到物件的文字資訊,.NET 外掛程式與 VisualBasic Script 也可以寫入這些文字資訊。
.NET 和 VisualBasic Script 可以很容易地存取附加的文字資訊。
範例
附加文字索引 = Weight
文字 = Kilograms
步驟
選取物件。
輸入文字索引。
輸入文字。
移除文字索引
選取物件。
輸入文字索引。
輸入"" (一對雙引號)。
選項
附加至
附加文字資訊到物件的幾何資料。
如果附加的文字資訊和幾何資料有關可以附加到幾何資料。例如:一個圓的半徑資訊必需附加到幾何資料,因為附加的半徑資訊在圓以控制點編輯或轉換成 NURBS 曲線之後半徑資訊就無效了。
附加文字資訊到物件的屬性。
如果附加的文字資訊是較高階的屬性資訊 (例如:顏色) 則應該被附加到物件的屬性,屬性資訊在物件以控制點編輯、修剪、複製...之後並不會遺失。
工具列 |
功能表 |
快速鍵 |
GetUserText 指令
讀取 SetUserText 指令附加到物件的文字資訊,.NET 外掛程式與 VisualBasic 指令碼也可以讀取這些資訊。
步驟
選取物件。
輸入索引或按 Enter 讀取所有的索引。
工具列 |
功能表 |
快速鍵 |
SetDocumentUserText 指令
將文字資訊附加到 Rhino 的 3dm 檔案。
附加的資訊會以類似 Windows 登錄檔的機碼/數值的方式儲存。
GetDocumentUserText 指令可以讀取附加到檔案的文字資訊,.NET 外掛程式與 VisualBasic Script 也可以寫入這些文字資訊。
.NET 和 VisualBasic Script 可以很容易地存取附加的文字資訊。
步驟
輸入文字索引。
輸入文字。
工具列 |
功能表 |
快速鍵 |
GetDocumentUserText 指令
讀取 SetDocumentUserText 指令附加到檔案的文字資訊,.NET 外掛程式與 VisualBasic 指令碼也可以讀取這些資訊。
步驟
輸入索引或按 Enter 讀取所有的索引。