この記事では、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は結果を文字列として出力します。
- ロジックの内容
- 入力値
aとbがともに10以上15以下の値に入っている場合に、"1"を返します。 - それ以外の場合には"0"を返します。
- 入力値
aが10かつbが15のとき、1を返す

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

まとめ
これらのコードは、PythonとHopsを使用してGrasshopper内で基本的な論理チェックを行う方法を示しています。OR、ANDロジックの基本的な実装方法を理解することで、より複雑な条件分岐の処理を行う際の土台になります。
今後、これらの基礎を応用して他の複雑な演算をGrasshopper内で行うためのHopsコンポーネントを開発することが可能です。