指令巨集與指令碼

幾乎所有 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

範例

畫一個圓

這個指令巨集可以建立一個中心點座標 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 個控制點的曲線,並不會彈出重建曲線對話框。

如何測試這個指令巨集

  1. 選取整行指令巨集。
  2. Ctrl + C 將指令巨集複製到剪貼簿。
  3. 切換到 Rhino 視窗,按 Ctrl + V 將指令碼貼上。
特殊指令巨集指令

Pause

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

範例:

! _Circle _Pause 50

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

MultiPause

停止指令碼,等待多次選取,例如 Join、Polyline、FilletEdge。

Enter

在指令巨集中模擬按下 Enter

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

EnterEnd

結束指令。

SetRedrawOff

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

SetRedrawOn

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

NoEcho

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

Echo

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

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

MacroEditor

工具列 功能表 面板齒輪功能表

工具

工具

指令 >

巨集編輯器

面板

巨集編輯器

巨集編輯器

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

巨集編輯器面板

面板選項

步驟

  1. 巨集編輯器面板輸入指令。
  2. 執行
  3. 刪除可以清除巨集編輯器裡的所有文字。

附註

ReadCommandFile

工具列 功能表

工具

工具

指令 >

從檔案讀取

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

步驟

附註

範例

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

工具列 功能表

未在工具列上。

未在功能表裡。

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

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

NoEcho

工具列 功能表

未在工具列上。

未在功能表裡。

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

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

Enter

工具列 功能表

未在工具列上。

未在功能表裡。

工具列巨集或指令碼裡可以使用 Enter 指令摸擬按 Enter 的功能。

範例

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

'_CPlane _3Point

_Pause _Pause _Pause _Enter

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

EnterEnd

工具列 功能表

未在工具列上。

未在功能表裡。

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

EnterEnd 與 Enter 指令不同之處是它在有許多層提示的指令 (例如:-Options 與 -DocumentProperties 指令),不管位於哪一層提示,使用 EnterEnd 指令可直接結束指令。

! _-DocumentProperties _Mesh _Custom _MaxEdgeSrf .01

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

範例

! _-DocumentProperties _Mesh _Custom _MaxEdgeSrf .01 _EnterEnd

Exit

工具列 功能表

未在工具列上。

檔案

結束

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 Script >

載入

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

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

步驟

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

RhinoScript 程式設計的線上說明:http://developer.rhino3d.com/guides/rhinoscript/

RunScript

工具列 功能表

未在工具列上。

工具功能表

Rhino Script >

執行

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

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

步驟

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

EditScript

工具列 功能表

工具

Rhino Script >

編輯

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

步驟

  • EditScript 對話框的說明功能表開啟說明檔案。

RunPythonScript

工具列 功能表

未在工具列上。

工具

Python Script >

執行

PythonScript 指令可執行 Python 指令碼。

Rhino.Python 程式設計的線上說明:http://developer.rhino3d.com/guides/rhinopython/

-RunPythonScript

選項

ResetEngine

使 Python 引擎重新初始化。

EditPythonScript

工具列 功能表

工具

工具

Python Script >

編輯

EditPythonScript 指令可編輯 Python 指令碼。

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

指令碼編譯器

工具列

功能表

Grasshopper

Rhino 7 的新功能

工具

工具

指令碼編譯器

將指令碼編譯器應用程式(.rvb、.py、gh、ghx)轉換為 *.rhp 外掛的應用程式。

 

指令碼編譯器應用程式由 Rhino 安裝程式安裝在:

C:\Program Files\Rhino <version>\System\RhinoScriptCompiler.exe

步驟

  1. 選擇工具 > 指令碼編譯器

  2. 依照醒目提示的字母鍵執行操作。

 

 

 

Rhinoceros 7 © 2010-2022 Robert McNeel & Associates. 06-七月-2022