Grasshopper: 特殊なフォルダのパスを取得する方法

EnvironmentクラスのGetFolderPathメソッドを使うことで、デスクトップやAppDataなどの特殊なフォルダのパスが取得できます。

GHファイルの使用環境やユーザー名が変わることによるパス切れを防ぐことができます。
使用環境が変わってもフォルダを見失わないので他人や異なるPC間でGHファイルを共有する場合に便利です。

C#コンポーネント

GHで使用するときはC#コンポーネントを用います。
Mathタブから[C# Script]コンポーネントを選んでキャンバスに配置します。

端子の増減

コンポーネントを拡大すると「+」「-」のボタンが出現するので、端子を減らしたり、増やしたりすることができます。パス取得用なら入力は不要なので最小限にしておくとよいでしょう。

エディタに記述

「C#」と書かれた部分をダブルクリックするとエディタが開くので、
「Private void Runscript…」以下に次のように記述し、「OK」で閉じます。

string path =Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
A = path;

これで、常にデスクトップのパスが取得できます。

その他の特殊フォルダ

「Desktop」の部分を「ApplicationData」にすれば、
C:\Users\UserName\AppData\Roamingのパスが取得できます。

ほかにも末尾を変えればいろいろなフォルダのパス取得が可能です。

  • Favorites                    → C:\Users\UserName\Favorites
  • LocalApplicationData → C:\Users\UserName\AppData\Local
  • MyDocuments          → C:\Users\UserName\Documents

C#コンポーネントの名称変更

C#コンポーネントは右クリックメニューから名称変更が可能なので、名前を付けてUserObjectに登録しておくと次回からも使いやすいでしょう。

ファイル名と組合せ

フォルダパスとファイル名を組み合わせてフルパスにすれば、ファイルの入出力や参照時にも便利です。