今回はPythonとGrasshopperのHopsを組み合わせて、入力値(スコア)に基づき条件分岐で異なる結果を返すシンプルなコンポーネントを作成します。
以下は、「スコアを受け取り、条件に応じて 0、1、または 2 を返すコンポーネント」を作成しています。
import ghhops_server as hs
from flask import Flask
# Flaskアプリケーションを作成
app = Flask(__name__)
# Hopsサーバーを作成しFlaskアプリに関連付け
hops = hs.Hops(app)
# Hopsコンポーネントを定義
@hops.component(
"/check-score",
name="Score",
inputs=[hs.HopsInteger("Score", "X", "Score of X")],
outputs=[hs.HopsInteger("Result", "R", "0 or 1 or 2")]
)
def check_score(x):
if x == 100: #100の場合は0を返す
return 0
elif x >= 70: #70以上の場合は1を返す
return 1
else:
return 2 #上記以外(69以下)の場合は2を返す
# Flaskアプリを実行
if __name__ == "__main__":
app.run(debug=True, port=5000)
コード解説
1. Hopsコンポーネントの定義
このコードは、Hopsコンポーネントとして機能するPython関数を定義しています。
Hopsコンポーネントは、Flaskアプリケーションの一部としてGrasshopperから呼び出され、入力を処理し、結果をGrasshopperに返します。
@hops.componentデコレーター- コンポーネントのエンドポイント、名前、入力、出力を設定します。
- この例では、エンドポイントが
/check-scoreに設定されています。
@hops.component(
"/check-score", # エンドポイントURL
name="Score", # コンポーネント名
inputs=[hs.HopsInteger("Score", "X", "Score of X")], # 入力定義
outputs=[hs.HopsInteger("Result", "R", "0 or 1")] # 出力定義
)
- 入力と出力の型
inputsはコンポーネントが受け取る値を定義します。この例では、HopsInteger型のスコアを受け取ります。outputsはコンポーネントが返す値を定義します。この例では、HopsInteger型で結果を返します。
2. 関数 check_score
check_score 関数は、入力値 x(スコア)を受け取り、条件に応じた結果を返します。
def check_score(x):
if x == 100: # 100の場合は0を返す
return 0
elif x >= 70: # 70以上の場合は1を返す
return 1
else:
return 2 # 上記以外(69以下)の場合は2を返す
if文による条件分岐x == 100の場合、0を返します。- 例: スコアが100点満点の場合。
x >= 70の場合、1を返します。- 例: スコアが70点以上の場合。
- その他のスコア(69以下) の場合、
2を返します。- 例: 不合格や低得点の場合。
この構造により、スコアに基づいた判定を簡単に行うことができます。
Grasshopperとの連携
- Flaskサーバーの設定
Grasshopper Hopsと連携するには、ghhops_serverを使ってFlaskサーバーを構築します。サーバーが起動している間、Grasshopperからこの関数を呼び出せます。 - Grasshopper Hopsコンポーネントの設定
- Hopsコンポーネントの
Function URLにhttp://localhost:5000/check-scoreを指定します。 - 入力スライダーや数値パネルを接続し、スコアを入力します。
- Hopsコンポーネントの
- 結果の確認
出力パネルには条件に応じた結果が表示されます:100:075:160:2
「x」が100の場合は「0」を返す

「x」が70以上の場合は「1」を返す

「x」が70より小さい場合は「2」を返す

応用例
この構造を応用することで、様々な条件分岐ロジックを作成できます。例えば:
- カスタム評価基準
if文の条件を変更し、異なるスコア範囲に応じてカスタムメッセージや評価を返す。 - 複数の入力に対応
スコア以外に別の評価基準を追加し、複雑な評価ロジックを実装可能。 - 他のデータ型との連携
HopsStringやHopsNumberを使って、文字列や浮動小数点数の判定ロジックを作成。
まとめ
このコードは、条件分岐を使ったシンプルな評価ロジックをPythonで実装し、Grasshopper Hopsコンポーネントとして利用する方法を示しています。Pythonの柔軟性とGrasshopperの直感的なUIを組み合わせることで、プロジェクトに応じたカスタムコンポーネントを簡単に作成できます。
これを参考に、自分だけの評価ロジックを作成してみましょう!