Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9749

Grasshopperコンポーネントをダブルクリックした際にWindowsFormを呼ぶ方法

$
0
0

はじめに

 この記事と同様にGalápagosのようなコンポーネントを作ろうとした際に、GrasshopperのコンポーネントからWindowsFormで作ったものを表示させたかったので、やり方を示します。
 ちなみに、RhinoはMac版もあるので、どちらも対応したものを作成したい場合は、WindowsFormではなくRhinoが対応しているクロスプラットフォームインターフェースのEtoを使ってください。
 なおこの記事は、RhinocerosForumのこの質問の内容を参考に作っています。

完成品のイメージ

作り方

 作成には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 を使っています。
 

ちなみに

 カスタムアトリビュートについては、公式の説明もあるので詳しく知りたい方はそちらも参照どうぞ。


Viewing all articles
Browse latest Browse all 9749

Trending Articles