Grasshopper API の GH_RhinoScriptInterface メソッドを利用することでRhinoからスクリプトを使ってGrasshopper(GH)を操作することができます。
GH_RhinoScriptInterface Methods
これらを活用すると例えばこんなことができます!
- Grasshopperファイルを開いたり閉じたり隠したりを自動化
- ParameterやNumberSliderに順番に値を代入しループ処理(バッチ処理)
- Grasshopperの結果をアニメーション再生
このページではいくつか代表的なメソッドとその使い方をご紹介します。
スクリプトエディタの使用方法については下記ページを参照ください。
GHサンプル
スクリプトの動きに着目するために、GHアルゴリズムは円を作って押し出すだけのシンプルなもので確認していきます(ファイル名:ExtrudeCircle.gh)。
GHエディタの起動・表示・非表示
・LoadEditor
・ShowEditor
・HideEditor
Grasshopperエディタの起動
Grasshopperエディタを表示
Grasshopperエディタを非表示
下記コードを実行すると、まずGHが起動し、その後一瞬エディタが表示され、最終的にエディタは非表示になります。
この時点では、まだファイルを開いていないのでビューには何も表示されません。
import Rhino
gh = Rhino.RhinoApp.GetPlugInObject("Grasshopper")
gh.LoadEditor() # エディタの起動(表示はされない)
gh.ShowEditor() # エディタの表示
gh.HideEditor() # エディタの非表示
GHファイルを開く
・OpenDocument
Grasshopperファイルを開く
下記を実行するとパスで指定したGHファイルが開かれ、プレビューがビューに表示されます。
gh = Rhino.RhinoApp.GetPlugInObject("Grasshopper")
gh.LoadEditor() # エディタの起動(表示はされない)
gh.ShowEditor() # エディタの表示
path = "C:\\Users\\ユーザー名\\Desktop\\ExtrudeCircle.gh"
gh.OpenDocument(path) # GHファイルを開く
ParameterやNumberSliderに値を代入する
・AssignDataToParameter
・SetSliderRangeAndValue
・SetSliderValue
・RunSolver
Panelに値を代入
NumberSliderに範囲と値を代入
NumberSliderに値を代入
処理を実行
下記を実行すると、あらかじめそれぞれ「AssignData1」「AssignData2」と名前を付けておいたNumberコンポーネントに値が代入され、その結果がプレビューされます。
以下の例では、AssignData1には「5」、AssignData1には「20」が代入されています。
RunSolver(True)を実行すると結果がプレビューに反映されます。
NumberSliderに代入したい場合はSetSliderRangeAndValueやSetSliderValueを用います。
import Rhino
gh = Rhino.RhinoApp.GetPlugInObject("Grasshopper")
gh.LoadEditor() # エディタの起動(表示はされない)
gh.ShowEditor() # エディタの表示
path = "C:\\Users\\ユーザー名\\Desktop\\ExtrudeCircle.gh"
gh.OpenDocument(path) # GHファイルを開く
gh.AssignDataToParameter("AssignData1", 5) # 値の代入
gh.AssignDataToParameter("AssignData2", 20) # 値の代入
gh.RunSolver(True) # GHエディタの更新
Numberコンポーネントの名前は右クリックから編集可能です。整数の場合はIntegerコンポーネントも使えます。
ParameterやNumberSliderに値を代入する(ループ処理)
下記を実行すると、For文のループ処理により、AssignData1とAssignData2に順番に値が代入され、RunSolver(True)を実行したタイミングの結果がプレビューに反映されます。この方法を利用すれば、バッチ処理や簡易的なアニメーション再生が可能です。
import Rhino
gh = Rhino.RhinoApp.GetPlugInObject("Grasshopper")
gh.LoadEditor() # エディタの起動(表示はされない)
gh.ShowEditor() # エディタの表示
path = "C:\\Users\\ユーザー名\\Desktop\\ExtrudeCircle.gh"
gh.OpenDocument(path) # GHファイルを開く
for i in range(20):
gh.AssignDataToParameter("AssignData1", i) # 値の代入
for j in range(20):
gh.AssignDataToParameter("AssignData2", j) # 値の代入
gh.RunSolver(True) # GHエディタの更新
ここでは割愛しますが、もう少し応用すれば、GH側の処理を監視することで条件を満たすとループを抜けるような処理を追加することもできます。
GHファイルの保存・閉じる
・SaveDocument
・SaveDocumentAs
・CloseDocument
・CloseAllDocuments
Grasshopperファイルを保存
Grasshopperファイルを別名保存
Grasshopperファイルを閉じる
すべてのGrasshopperファイルを閉じる
最後に下記のようにこれらのメソッドを用いることでGHファイルを保存したり、閉じたりすることができます。単にエディタを見えなくするだけならHideEditorだけでも構いません。
gh.CloseDocument() # 現在開いているGHファイルを閉じる
gh.HideEditor() # エディタを非表示にする
PythonScriptをツールバーアイコンから実行
下記ページ後半の「ツールバーへの登録」と同様の方法でPythonScriptはコマンドマクロへ登録できます。
PythonScriptを実行する場合は、コマンドマクロには下記のように記載します。
! –RunPythonScript “pyファイルパス”