【VSC】VisualStudioCodeを使ってGrasshopperのプラグインを作る

皆さんこんにちは。AMDlabの森山です。
今日はVisualStudioCode(以下VSC)を用いて.ghaファイルをビルドする方法を紹介しようと思います。

準備するもの

  • VSC
  • Rhinoceros

やり方

環境準備

.NETCoreC#の拡張機能をVSCに導入します。
といってもVisualStudioなどで普通に開発している方は.NetCoreに関してはおそらくすでに準備されているかと思います。

C# for Visual Studio CodeはVSCを開いて左のメニュー(Ctrl+Shift+X)からExtencionを開いて、Installします。
その後再起動して、teminalに
dotnet --version
を打ち込んで表示されれば準備完了です。

開発準備

まずはcsprojファイルを追加します。

dotnet new console --target-framework-override TFM -lang c# -o DirectoryName

私の場合はTFMにnet472を選択し、DirectoryNameは現在のディレクトリなので
dotnet new console –target-framework-override net472 -lang c# -o .
という形で入力しています。

treeコマンドで確認すると以下のような構造が確認できます。
├─bin
│ └─Debug
│ └─net472
└─obj
└─Debug
└─net472

また、現在のcsprojを見てみるとこんな感じになっています。

簡単に言ってしまえばこのcsprojを無理やり編集して.NetFrameworkのビルドができるようにすればいいわけです

このファイルを編集していきます。まずはOutputTypeをLibraryに変更します
<OutputType>Library</OutputType>

これでビルドした後のファイルがクラスライブラリに変更されます。
Rhinocommon他、.netFrameworkが使えるようにしましょう。
Itemgroupタグを追加して、以下のように記述します。

Rhino系の参照の場合はReferenceとHintPathを付けてあげると親切です。
この状態でセーブして、コンポーネントを作っていきます。

簡単なコンポーネントを作る

単純に足し算するコンポーネントを作りましょう。

New-Item CmpVSC.cs, CmpVSCinfo.cs

まずはinfo.csを書いていきましょう。usingでライブラリを追加するとこのように候補が出てくると思います。出てこない場合はVSCを再起動して下さい。

GUIDの生成には悩むところですが、私は拡張機能であるInsertGUIDを使用しています。

ではコンポーネントを実装していきましょう。

何のひねりもないコンポーネントで申し訳ないですがとりあえずこんな感じです。

デバッグしてみる

デバッグしてみます。
ここで色々なツールが出てきますが、.NETCoreを選択してください。

するとエラーが発生して、lauch.jsonが生成されます。
この状態で再度デバッグするとtask.jsonの生成を要求されます
これも.NETCoreで生成しましょう。

さて、lauch.jsonを編集します。

この状態でビルドしてもghaファイルが生成されないので、csprojにビルドイベントを付け加えましょう。
ついでにいちいちコピーするのがめんどくさいのでGHのLibraryフォルダにコピーされるようにも設定します。

ここの書き方についてなんですが、本当はrootディレクトリを環境変数を設定するようにしてあげたほうが親切です。今回は簡略して書いています。

Rhinoを起動して、確認してみましょう。

これでghaファイルのデバッグが可能になりました。
以上の手順を踏めば、Grasshopperだけでなく、RevitやAutocadなどほかのソフトウェアでも可能です。
.exeまでの起動パスを入れれば普段の開発のようにRhinoを起動しながらデバッグすることも可能になります。VisualStudioはちょっとした開発には少し仰々しいので、ライトに開発したいときはVSCを使うといいでしょう。

今回は一番簡単な方法を紹介しましたが、そもそもslnファイルを作って管理する方がいいような気もします。そのあたりの話はまたいずれできればと思います。
是非試してみてください。

ARTICLES