はじめに
この記事と同様にGalápagosのようなコンポーネントを作ろうとした際に、GrasshopperのコンポーネントからWindowsFormで作ったものを表示させたかったので、やり方を示します。
ちなみに、RhinoはMac版もあるので、どちらも対応したものを作成したい場合は、WindowsFormではなくRhinoが対応しているクロスプラットフォームインターフェースのEtoを使ってください。
なおこの記事は、RhinocerosForumのこの質問の内容を参考に作っています。
完成品のイメージ
今日のもくもく会の成果
— hiron/6cores (@hiron_rgkr) June 29, 2019
GrasshopperのNumberSliderを、コンポーネントをダブルクリックして呼び出せるWindowsフォームのsliderから操作できました~ pic.twitter.com/tDEtHmxPA1
作り方
作成にはGH_ComponentAttributes クラスを作り、コンポーネントをダブルクリックした際にウインドウが出てきて欲しいので、GH_AttributesのRespondToMouseDoubleClick メソッドを使います。これを使うことで、ダブルクリックした際にDisplayForm(別途作成しているWinForm)を呼び出しています。
publicclassAttributes_Custom:GH_ComponentAttributes{publicAttributes_Custom(IGH_ComponentChangeNumSlider):base(ChangeNumSlider){}publicoverrideGH_ObjectResponseRespondToMouseDoubleClick(GH_Canvassender,GH_CanvasMouseEvente){(OwnerasChangeNumSlider)?.DisplayForm();returnGH_ObjectResponse.Handled;}}上で作成したアトリビュートをコンポーネントに適用したいので、GH_Component クラスの CreateAttributes メソッドをオーバーライドします。
publicoverridevoidCreateAttributes(){m_attributes=newAttributes_Custom(this);}WindowsFormの使い方などはほかの記事の方が詳しいと思うので、ここでは割愛します。
ビルトした動くものを作りたい場合
ここで説明した内容はホタルアルゴリズムによる最適化コンポーネントを目指して作り出したホタルコンポーネントの一部です(モチベーションなくなってエタッてしまいました…)。ホタルコンポーネントのリンク先のgithubのDevelopeブランチをクローンしてビルトしてもらえば動くghコンポーネントが作成されると思います。直接の部分はChangeNumSlider.csの部分で、他はホタルアルゴリズムの実装を行っている箇所です。
Grasshopper内のC#スクリプトコンポーネントではWindowsFormを作るのが面倒なので、Visual Studio Community 2019 を使っています。
ちなみに
カスタムアトリビュートについては、公式の説明もあるので詳しく知りたい方はそちらも参照どうぞ。