Rhino+Grasshopper

Division,Multiplication|FlaskとGrasshopper Hopsを使った簡単な算術演算コンポーネントの作成

このブログ記事では、FlaskGrasshopper Hopsを使って、簡単な算術演算(除算と乗算)を行うコンポーネントを作成する方法を紹介します。コードはPythonを使ってFlaskアプリケーションを立ち上げ、Grasshopperで利用可能なカスタムコンポーネントを作成します。

Pythonスクリプト

import ghhops_server as hs
from flask import Flask

app = Flask(__name__)
hops = hs.Hops(app)

@hops.component(
    "/division",                      # エンドポイント
    name="Division",             # コンポーネント名
    inputs=[
        hs.HopsNumber("A"),
        hs.HopsNumber("B")
        ],                     # 入力なし
    outputs=[hs.HopsNumber("Output")]  # 出力(文字列)
)
def division(a,b):
    return a / b

@hops.component(
    "/multiplication",
    name="multiplication",
    inputs=[
        hs.HopsNumber("A"),
        hs.HopsNumber("B")
    ],
    outputs=[hs.HopsNumber("Output")]
)
def multiplication(a,b):
    return a * b


# Flaskアプリを実行
if __name__=="__main__":
    app.run(debug=True, port=5000)

必要なライブラリ

まずは、必要なライブラリをインポートします。

import ghhops_server as hs
from flask import Flask
  • ghhops_serverは、Grasshopper Hopsの機能を提供するライブラリです。これを使用すると、Grasshopperから外部のPython関数を呼び出して、演算結果を得ることができます。
  • flaskは、Webアプリケーションを作成するための軽量なPythonフレームワークです。HopsサーバーはFlaskを介して動作するため、Flaskアプリケーションを立ち上げます。

Flaskアプリケーションの作成

次に、Flaskアプリケーションを作成し、Hopsサーバーを関連付けます。

app = Flask(__name__)  # Flaskアプリケーションを作成
hops = hs.Hops(app)  # Hopsサーバーを作成し、Flaskアプリに関連付け
  • Flask(__name__)でFlaskのアプリケーションインスタンスを作成します。
  • hs.Hops(app)で、Hopsサーバーを作成し、それをFlaskアプリケーションに関連付けます。

これで、Flaskサーバーが立ち上がり、Grasshopperからアクセス可能なエンドポイントを作成する準備が整いました。

除算コンポーネントの作成

次に、除算を行うHopsコンポーネントを作成します。

@hops.component(
    "/division",                      # エンドポイント
    name="Division",             # コンポーネント名
    inputs=[                        # 入力(2つの数値)
        hs.HopsNumber("A"),
        hs.HopsNumber("B")
    ],                     
    outputs=[hs.HopsNumber("Output")]  # 出力(数値)
)
def division(a, b):
    return a / b
  • @hops.componentデコレータは、この関数をHopsコンポーネントとして登録します。
  • "/division"は、Grasshopperでこのコンポーネントを呼び出すためのURLエンドポイントです。
  • inputsでは、2つの数値(AB)を受け取ります。HopsNumberは数値型を指定するために使用します。
  • outputsでは、このコンポーネントが返す出力の型を指定します。ここでは、HopsNumberを使って除算の結果である数値を返します。
  • division(a, b)関数内では、引数として渡された2つの数値を除算し、その結果を返します。

乗算コンポーネントの作成

次に、乗算を行うHopsコンポーネントを作成します。

@hops.component(
    "/multiplication",
    name="multiplication",
    inputs=[
        hs.HopsNumber("A"),
        hs.HopsNumber("B")
    ],
    outputs=[hs.HopsNumber("Output")]
)
def multiplication(a, b):
    return a * b
  • /multiplicationエンドポイントを定義し、multiplicationというコンポーネント名を設定しています。
  • 入力は2つの数値(AB)で、outputsは乗算の結果を数値型で返します。
  • multiplication(a, b)関数内では、引数として渡された2つの数値を乗算し、その結果を返します。

Flaskアプリケーションの実行

最後に、Flaskアプリケーションを実行します。

if __name__ == "__main__":
    app.run(debug=True, port=5000)
  • app.run(debug=True, port=5000)で、Flaskアプリケーションを起動します。
  • debug=Trueを指定すると、開発中にエラーが発生した際に詳細なエラーメッセージが表示され、デバッグが容易になります。
  • port=5000で、アプリケーションがポート5000で実行されるように設定します。

まとめ

このコードでは、FlaskGrasshopper Hopsを使って、除算と乗算の機能を持つカスタムコンポーネントを作成しました。/divisionエンドポイントと/multiplicationエンドポイントを作成し、それぞれで除算と乗算を行います。これにより、Grasshopper内からPythonで定義した演算を直接呼び出して結果を得ることができます。

これらのコンポーネントは、GrasshopperでPythonの力を活用するためのシンプルで強力な方法の一例です。FlaskとHopsを組み合わせることで、独自のカスタムコンポーネントをGrasshopper内で利用することが可能になります。

-Rhino+Grasshopper
-, ,