指令巨集與指令碼

可以在哪裡找到這些指令?

_a_blank.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

指令巨集與指令碼

幾乎所有 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,以便繼續輸入更多資訊。

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

~
(代字號)

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

;

(分號)

註解。

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

例如:

; 這是一個測試用的巨集
_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

指令巨集中的空格就如同您在指令行輸入時按下 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 個控制點的曲線,並不會彈出重建曲線對話框。

如何測試這個指令巨集

number-1.png選取整行指令巨集。

number-2.pngCtrl + C 將指令巨集複製到剪貼簿。

number-3.png切換到 Rhino 視窗,按 Ctrl + V 將指令碼貼上。

特殊指令巨集指令

Pause

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

範例

! _Circle _Pause 50

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

Enter

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

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

EnterEnd

結束指令。

SetRedrawOff

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

SetRedrawOn

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

NoEcho

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

Echo

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

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

open_macro_editor.pngMacroEditor

可以在哪裡找到這個指令?

open_macro_editor.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

MacroEditor 指令

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

巨集編輯器面板

paneloptions.png選項

步驟

number-1.png巨集編輯器面板輸入指令。

number-2.png執行

number-3.png刪除可以清除巨集編輯器裡的所有文字。

附註

round_bullet.gif選取指令巨集的一部分再按執行可以只執行選取的部分。

round_bullet.gif編輯視窗的右鍵快顯功能表可以全選、複製、貼上、刪除、執行...。

read_command_file....pngReadCommandFile

可以在哪裡找到這個指令?

read_command_file....png工具列

menuicon.png功能表

ctrlplus.png快速鍵

ReadCommandFiles 指令

從文字檔中讀取指令巨集並執行。

步驟

number_onestep.gif開啟文字檔對話框選取要讀取的檔案。

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

附註

round_bullet.gif建立指令檔案時可以使用 Enter 指令代表按下 Enter 鍵。

round_bullet.gif如果您需要經常讀取一個指令檔案,可以將 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

可以在哪裡找到這個指令?

_nobutton.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

Echo 指令

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

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

NoEcho

可以在哪裡找到這個指令?

_nobutton.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

NoEcho 指令

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

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

Enter

可以在哪裡找到這個指令?

_nobutton.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

Enter 指令

這個指令的功能就如同按下 Enter 鍵,可以在指令巨集或工具列按鈕的巨集中使用。

範例

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

'_CPlane _3Point

_Pause _Pause _Pause _Enter

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

EnterEnd

可以在哪裡找到這個指令?

_nobutton.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

EnterEnd 指令

這個指令的功能就如同按下 Enter 鍵,可以在指令巨集或工具列按鈕的巨集中使用,它與 Enter 指令不同處在於這個指令在有許多層提示的指令 (例如:-Options 與 -DocumentProperties 指令),不管位於哪一層提示,執行 EnterEnd 可以直接結束指令。

! _-DocumentProperties _Mesh _Custom _MaxEdgeSrf .01

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

範例

! _-DocumentProperties _Mesh _Custom _MaxEdgeSrf .01 _EnterEnd

Exit

可以在哪裡找到這個指令?

_nobutton.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

Exit 指令

關閉 Rhino 視窗。

Pause

可以在哪裡找到這個指令?

_nobutton.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

Pause 指令

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

範例

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

! _Circle _Pause 50

Run

可以在哪裡找到這個指令?

_nobutton.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

Run 指令

從 Rhino 裡執行外部的程式。

步驟

number_onestep.gif輸入要執行的檔案名稱及路徑。

set_redraw_off.pngSetRedrawOff

可以在哪裡找到這個指令?

set_redraw_off.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

SetRedrawOff 指令

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

number_onestep.gif要開啟畫面重繪請使用 SetRedrawOn 指令。

set_redraw_off.pngSetRedrawOn

可以在哪裡找到這個指令?

set_redraw_off.png_rightbuttononly.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

SetRedrawOn 指令

在指令巨集執行過程中開啟畫面重繪。

number_onestep.gif要關閉畫面重繪請使用 SetRedrawOff 指令。

編輯指令碼

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

相關指令:

LoadScript

RunScript

EditScript

基本的操作步驟

number-1.png編寫一個指令碼。

RhinoScript 的附檔名為 .rvb.

number-2.png執行 LoadScript 指令將指令碼載入到記憶體。

number-3.png使用 RunScript 指令執行該指令碼。

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

更多指令碼的說明

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

更多與 Rhino 相關的指令碼資訊請參考:http://www.rhino3d.com/scripting/

LoadScript

可以在哪裡找到這個指令?

_nobutton.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

LoadScript 指令

將指令碼檔案 .rvb 載入到 Rhino 等待執行。

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

步驟

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

更多與 Rhino 相關的指令碼資訊請參考:http://www.rhino3d.com/scripting/

RhinoScript 程式設計的線上說明:http://www.rhino3d.com/5/rhinoscript/index.html

RunScript

可以在哪裡找到這個指令?

_nobutton.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

RunScript 指令

執行已載入的指令碼。

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

步驟

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

更多與 Rhino 相關的指令碼資訊請參考:http://www.rhino3d.com/scripting/

EditScript

可以在哪裡找到這個指令?

_nobutton.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

指令巨集與指令碼指令

開啟 RhinoScript 檔案的編輯程式。

步驟

number_onestep.gifEditScript 對話框的說明功能表開啟說明檔案。

更多與 Rhino 相關的指令碼資訊請參考:http://www.rhino3d.com/scripting/

RunPythonScript

可以在哪裡找到這個指令?

_nobutton.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

RunPythonScript 指令

執行 Python 指令碼。

更多與 Rhino 相關的指令碼資訊請參考:http://www.rhino3d.com/scripting/

Rhino.Python 程式設計的線上說明:

http://www.rhino3d.com/5/ironpython/index.html

-RunPythonScript

選項

ResetEngine

使 Python 引擎重新初始化。

EditPythonScript

可以在哪裡找到這個指令?

_nobutton.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

EditPythonScript 指令

編輯 Python 指令碼。

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

SetUserText

可以在哪裡找到這個指令?

_nobutton.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

SetUserText 指令

附加文字資訊至物件。

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

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

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

範例

附加文字索引 = Weight

文字 = Kilograms

步驟

number-1.png選取物件。

number-2.png輸入文字索引。

number-3.png輸入文字。

移除文字索引

number-1.png選取物件。

number-2.png輸入文字索引。

number-3.png輸入"" (一對雙引號)。

選項

附加至

物件

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

如果附加的文字資訊和幾何資料有關可以附加到幾何資料。例如:一個圓的半徑資訊必需附加到幾何資料,因為附加的半徑資訊在圓以控制點編輯或轉換成 NURBS 曲線之後半徑資訊就無效了。

屬性

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

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

GetUserText

可以在哪裡找到這個指令?

_nobutton.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

GetUserText 指令

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

步驟

number-1.png選取物件。

number-2.png輸入索引或按 Enter 讀取所有的索引。

SetDocumentUserText

可以在哪裡找到這個指令?

_nobutton.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

SetDocumentUserText 指令

將文字資訊附加到 Rhino 的 3dm 檔案。

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

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

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

步驟

number-1.png輸入文字索引。

number-2.png輸入文字。

GetDocumentUserText

可以在哪裡找到這個指令?

_nobutton.png工具列

menuicon.png功能表

ctrlplus.png快速鍵

GetDocumentUserText 指令

讀取 SetDocumentUserText 指令附加到檔案的文字資訊,.NET 外掛程式與 VisualBasic 指令碼也可以讀取這些資訊。

步驟

number_onestep.gif輸入索引或按 Enter 讀取所有的索引。