#はじめに
GrasshopperでPythonが扱えるプラグインGhPythonを使うさい、例えばライノスクリプトでは使えるGetObject()のようなコマンドが使えなかったりします。ライノ上でライノスクリプトを使う場合はライノ上のオブジェクトを扱うのに対して、Grasshopper上でライノスクリプトを使う場合はGrasshopperで使っている仮想オブジェクトを扱っているためです。ではどうするのか。
#Documentの位置を指定する
ライノ上のオブジェクトを扱えるようにするために、pythonスクリプトの以下のような記述をします。
sample.py
import scriptcontex as sc
sc.doc = Rhino.RhinoDoc.ActiveDoc
こうすることで、このスクリプト内でライノスクリプトを使った場合は、グラスホッパーの仮想オブジェクトではなく、ライノ空間に置かれているオブジェクトを扱えるようになります。
元に戻す場合は、
sample.py
import scriptcontext as sc
sc.doc = ghdoc
#どんなシチュエーションのときにどちらのDocumentを選ぶか
sc.doc = Rhino.RhinoDoc.ActiveDoc
は、以下のようなシチュエーションの時に使います。
- ライノ上に置かれているオブジェクトを選択したいとき
- ライノ上にオブジェクトをベイクしたいとき
- ライノ上のオブジェクトのコントロールポイントなどを操作したいとき。
また、
sc.doc = ghdoc
は以下のようなシチュエーションの時に使います。
- Grasshopper空間内でライノスクリプトを使ってモデリングをしたいとき
- 他のGrasshopperのコンポーネントやRhinoCommonと組み合わせたいとき
#もっと詳しくは
ここを見るともっと詳しく正しい情報が得られます。
GrasshopperでPythonスクリプトを使いたい人は、必見です。