オリジナルのGrasshopperコンポーネントの開発についてやさしく解説する-続編(インプットの方法)

インプットの方法についていくつか事例を挙げて具体的に解説します。

単純に数値をインプットする場合

.AddNumberParameterでインプットの口を用意します。

/// <summary>
/// Registers all the input parameters for this component.
/// </summary>
protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager)
{
    pManager.AddNumberParameter("Val1", "v1", "first number", GH_ParamAccess.item);
    pManager.AddNumberParameter("Val2", "v2", "second number", GH_ParamAccess.item);
}

引数は、

(パラメータ名, パラメータ名の略称, 注釈, GHパラメータへのアクセス方法)

です。

Listを配列として取得したい場合

GrasshopperではListでデータを扱うことが多いですね。

インプットにListをつないで、配列として処理したい場合の書き方です。

まずはインプットです。

/// <summary>
/// Registers all the input parameters for this component.
/// </summary>
protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager)
{
    pManager.AddGenericParameter("List", "L", "number", GH_ParamAccess.list);
}

上記部分でインプットとして口を用意し、次に配列として整理します。

ポイントは.AddGenericParameterを使用する点です。

/// <summary>
/// This is the method that actually does the work.
/// </summary>
/// <param name="DA">The DA object can be used to retrieve data from input parameters and 
/// to store data in output parameters.</param>
protected override void SolveInstance(IGH_DataAccess DA)
{
    List<double> getList = new List<double>();
    DA.GetDataList("List", getList);
    
    double[] ListArray = new double [getList.Count];
    for (int i = 0; i < (getList.Count); i++)
    {
        ListArray[i] = getList[i];
    }

List(ここでいうListはコレクションの中のListというクラスですね)として取得した後、そのままでは関数にうまくはまらないなどあり扱いづらいので配列として箱に入れ替えてます。

Pointをインプットしたい場合

せっかくGrasshopperということで空間を扱えるので、Point(座標)をインプットする場合の例です。

/// <summary>
/// Registers all the input parameters for this component.
/// </summary>
protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager)
{
    pManager.AddGenericParameter("List", "L", "points list", GH_ParamAccess.list);
}

Point(座標)の場合は.AddGenericParameterで受けることができます。

関連記事

オリジナルコンポーネント開発の基本の基本から解説した記事やその続編としてアイコン設定等を解説した関連記事もありますのでぜひ。

オリジナルのGrasshopperコンポーネントの開発についてやさしく解説する-基本編
オリジナルのGrasshopperコンポーネントの開発についてやさしく解説する-続編(2つ目以降のコンポーネント・アイコン設定)

いつもサポートいただきありがとうございます! これからもあなたの代わりに役立つ記事を更新し続けていきます。 どうぞよろしくお願いします。