Grasshopper :: New Python Component ~part.2~
前回は新しくなったPythonコンポーネントの基本的な使い方について触れましが、今回はコンポーネント作成の応用編です。
Rhino Python Editorでコンポーネント作成
前回はGrasshopper内でPythonコンポーネントをコンパイルしましたが、新Pythonコンポーネントの他の機能を使ってRhinoのPython Editorでもコンポーネントを作成することができます。
Grasshopperで作成する場合との違いは、
- 複数のコンポーネントを1つのghpyファイルで作成できる。
- コードをモジュール化してghpyファイルに格納し、コンポーネントにインポートできる。
が挙げられるかと思われます。
それでは実際にやってみましょう。
作成手順
ここでは、2つのコンポーネントの同時作成と、モジュールを作ってghpyファイルに格納するということをやってみたいと思います。
コンポーネントの中身は、毎回多用しているリスト内の点をソートするコードと、そのソート結果が可視化されるものを作ってみたので、これらを例に進めていきます。
ざっくりの手順は以下の通りです。
- Grasshopperでコード生成
- Rhino Python EditorでPythonファイルを作成
- Rhino Python EditorでPythonファイルをコンパイル
Grasshopperでコード生成
まずは、Pythonコンポーネントに作成したい内容のコードを[Procedural Script Mode]の状態で入力します。
ここでは1.点をソート、2.ソートされた点のパスを表示、の2つのPythonコンポーネントを作成しました。
次に、1つ目の点をソートするPythonコンポーネントの[Mode]を[GH_Component SDK Mode]に切り替えます。
続いて[Mode]の[Copy Compilable Code]を選択すると、同じく[Mode]の[Compile]を選択した時のように、コンポーネントの設定画面が出てくるので、
コンポーネント名やカテゴリ、アイコンの設定を設定し、[Copy to Clipboard]を選択します。
これによって、VisualStudioで作成する時と同じようなコードが生成され、クリップボードにコピーされます。
それではここでRhino Python Editorに移ります。
Rhino Python EditorでPythonファイル作成
Rhino Python Editorでコンポーネントを作成するには、最低2つのPythonファイルが必要です。
一つはコンポーネントの中身を定義するファイル、もう1つはコンポーネントをコンパイルするためのファイルです。
ここではモジュールを自作して読み込むため、さらにもう1つ、計3つのPythonファイルを作成します。
ではまずコンポーネントの中身を定義するファイルを作成します。
コンポーネントの中身を定義
Rhinoでメニューバーの[ツール > Python Script > 編集]を選択してRhino Python Editorを開き、エディター上で新規ファイルにペーストを行うと、生成されたコードが貼り付けられます。
次にGrasshopperに戻り、2つ目のPythonコンポーネントも同様の手順でコードをコピーし、先ほどペーストしたコードの下にさらにペーストします。
ここで、重複したライブラリやAssemblyInfoクラスを削除し、必要に応じてコードを修正します。
コンパイル用のPythonファイル作成
続いてコンパイル用のPythonファイルを作成します。
これは決まったフォーマットがあるので、Rhino Python Editorでファイルを新規作成し、以下のコードを入力します。
CompileModule関数の引数に、.ghpyのファイル名、その後に格納するPythonファイルのファイル名を入力します。ちなみにghpyファイル名には、p2.7.5.0
を必ず入力する必要があるようです。
モジュール作成
最後に、自作モジュール用のPythonファイルを作成します。
コードを分けたり、使い回したいシーン等で作成するかと思うのですが、ここではただポリラインを作成するだけのコードを入力しています。
コピペしたPythonファイルにモジュールを読み込んだコードは以下の通りです。(一部省略)
これで全てのPythonファイルが作成完了しました。この後はPythonファイルをコンパイルします。
Pythonファイルをコンパイル
まずはコンパイルする前に、作成したPythonファイルを全て同じフォルダに保存します。
次に、コンパイル用Pythonファイルのmain.pyをRhino Python Editorで表示し、debugボタンもしくは[F5]キーを押すと、Pythonファイルを格納しているフォルダに.ghpyファイルが作成されます。
これを Grasshopperにアドオンを追加する要領で、Canvasにドラッグか、Libraryフォルダに格納して作成したコンポーネントを追加完了です!
作成したコンポーネントの配置
ちなみに作成したコンポーネントを配置してみました。
こんな感じで、点をソートしてそのソート順にパスが描かれ、Timerコンポーネントに繋ぐと順にインデックスがハイライトされます。
終わりに
Rhino Python Editor でPythonコンポーネントをコンパイルする方法について説明しました。
ちょっと長くなり分かりづらかったかもしれませんが、とても便利な機能なのでぜひお試しください。
使用した主なコンポーネント
- [Python Script] (Maths > Script > Python Script)