Rhino+Grasshopper

if文-3|Grasshopper HopsとPythonを使用したロジックチェックコンポーネントの実装

この記事では、Pythonを使用してHopsコンポーネントを実装する三つのコードを簡単に解説します。HopsはGrasshopperと連携したパラメーターコンポーネントを簡単に書くためのライブラリです。

ここで解説するコード:

  • コード1: 論理ロジック「OR」の実装
  • コード2: 論理ロジック「AND」の実装

各コードの下に、共通の解説フローとモジュールを説明します。

コード1: ORロジック

コード

@hops.component(
    "/check-time-or",
    name="check_time",
    inputs=[hs.HopsNumber("Time", "T", "Time of T")],
    outputs=[hs.HopsString("Result", "R", "1 or 0")]
)
def check_time_or(x):
    if x == 10 or x == 15:  # 10または15の場合は"1"を返す
        return "1"
    else:  # 上記以外の場合は"0"を返す
        return "0"

説明

  • Hopsの設定
    • inputs で参数となる数値を一つ受け取るよう設定しています。
    • outputs は結果の文字列として出力します。
  • ロジックの内容
    • 入力値 x が10または15の場合に"1"を返します。
    • それ以外の場合には"0"を返します。

xが10(10または15)のとき、1を返す

xが15(10または15)のとき、1を返す

xが5(10または15以外)のとき、0を返す

コード2: ANDロジック

コード

@hops.component(
    "/check-time-and",
    name="check_time",
    inputs=[
        hs.HopsNumber("Time A", "A", "Time of A"),
        hs.HopsNumber("Time B", "B", "Time of B")
    ],
    outputs=[hs.HopsString("Result", "R", "1 or 0")]
)
def check_time_and(a, b):
    # 両方の値が10以上15以下の場合は"1"を返す
    if 10 <= a <= 15 and 10 <= b <= 15:
        return "1"
    else:  # 上記以外の場合は"0"を返す
        return "0"

説明

  • Hopsの設定
    • inputs に2つの参数を設定しています。
    • outputs は結果を文字列として出力します。
  • ロジックの内容
    • 入力値 ab がともに10以上15以下の値に入っている場合に、"1"を返します。
    • それ以外の場合には"0"を返します。

aが10かつbが15のとき、1を返す

aが10かつbが15以外のとき、0を返す

まとめ

これらのコードは、PythonとHopsを使用してGrasshopper内で基本的な論理チェックを行う方法を示しています。ORANDロジックの基本的な実装方法を理解することで、より複雑な条件分岐の処理を行う際の土台になります。

今後、これらの基礎を応用して他の複雑な演算をGrasshopper内で行うためのHopsコンポーネントを開発することが可能です。

-Rhino+Grasshopper
-, ,