ラベル Grasshopper の投稿を表示しています。 すべての投稿を表示
ラベル Grasshopper の投稿を表示しています。 すべての投稿を表示

2021/06/20

Rhino+GrasshopperでのCPythonの実行環境(GH_CPython)

RhinocerosにおけるビジュアルコーディングツールであるGrasshopperには、python言語でのコーディングが可能なGh pythonがあらかじめ付属しています。しかし、このGh pythonは通常のPython(CPython)環境ではなく、Rhinocerosが動いているNET Framework上で動作するironPythonであるため、Rhinoceros上での描画アドインは動かせるものの、一般的にPython言語で用いられている多くの拡張モジュールをGh python上で通常実行することができません。Python環境において複雑な数値計算や最適化、応力解析などを実行できる無数の拡張モジュール(Numpy、Deep、Openseespyなど)が、一般的には利用できないのです。

一方、こうした数値計算は建築設計や構造解析において多く活用されており、これらをRhino+Grasshopperのプログラム上でもなんとか利用できる環境が構築できると便利です。

上記を可能とするために、Grasshopper上で一般的なpython言語であるCPythonを実行できるライブラリGH_CPythonの活用が考えられます。本ページではそのインストール方法を紹介してみます。なお、GH_CPythonを用いたRhino+Grasshopper上でのCPythonの実行においては、あらかじめPythonライブラリのインストールが必要となります。

なお、Pythonのインストールについては、本ブログの別ページ Kの勉強部屋: OpenSeesPyの導入① (kozoarcheng.blogspot.com) をご覧ください。


<GH_CPythonの実行環境の構築>

1.Githubまたはfood4Rhinoにて、GH_CPythonをダウンロード

GH_CPython | Food4Rhino

2.ダウンロードしたファイルのうち、GH_CPython.gha と FastColoredTextBox.dllを自身のRhino+Grasshopperインストールファイル中のLibrariesフォルダ(もしくはComponentsフォルダ)に移動。(ダウンロードファイルはプロパティにてセキュリティを解除する。)

3.Rhinocerosを管理者アカウントで実行

4.GH_CPythonをGrasshopper上で開き、「Python」→「Choose Interpreter」をクリックし、以下のように自身のPCにインストール済みのpython.exeのディレクトリを指定



基本的には、上記の操作でGrasshopper上にて、CPythonの環境構築ができると思います。

CPythonにおいては、本サイトで使用法を紹介している応力解析アドインOpenseespyなども実行できることから、上記の環境構築により、Rhino+Grasshopperで構築したプログラムフローにおける3Dcadやビジュアルコーディングと構造物の応力解析、時刻歴応答解析などの数値解析を連動させた処理が可能となり、使い方によっては解析上非常に有用なツールとなりえるかと思います。

上記で説明した内容については、作者(MahmoudAbdelRahman氏)のGithubである下記にも記載がありますので、適宜ご参照頂ければと思います。

Home · MahmoudAbdelRahman/GH_CPython Wiki · GitHub

2020/05/05

Grasshopperによる3次元ジオメトリのOpenseesによる応力解析

今回は、Openseesにより構成した3次元の応力解析プログラムの実務的な利用について考えてみます。特に複雑な形状モデルを対象とする場合、3次元の形状データから、目視や手入力による作業で応力解析プログラムのインプットを作成することを考えると、膨大で複雑な数値データの入力が必要となることから、大変面倒な作業が必要となってしまいます。そこで、近年建築分野で普及が進んでいる3DcadであるRhinoceros+Grasshopperにより作成した形状データをもとにプログラムによるOpenseesの解析入力ファイルの作成にトライしてみます。また、Rhinoceros+Grasshopperによる入力データの作成および解析結果のKaramba3Dによる解析結果の簡単な検証を試みます。

・Rhinoceros+Grasshopperとは
RhinocerosはRobert McNeel & Associates社が開発した3次元CADであり、NURBS局面などの複雑なジオメトリを柔軟に扱えることから、近年、建築分野でも多く活用されています。またGrasshopperはRhinocerosをスクリプトベースで自由に操ることができるツールで、視覚的なアイコンをつなぐことで容易にプログラムが構成できるため、コンピュテーショナルデザインなどに活用されています。さらに近年は世界中のエンジニア・プログラマーにより開発された最適化や応力解析などの多くの外部モデュールが公開されており、その多くがフリーで利用可能となっています。そうしたツールは以下のサイトfood4Rhinoで利用可能となっています。

https://www.food4rhino.com/

・Karamba3Dとは
Grasshopperには、多くの外部機能がPythonのモジュールのように提供されており、Karamba3DはRhinoceros上のジオメトリを用いた応力解析を容易におこなうことができる応力解析モジュールです。近年は有料化されていますが、(unlimitedlicenceで1150ユーロ)多くの構造エンジニアにも使用され始めています。また、最適化ツールなどの機能拡張が日々行われています。

https://www.karamba3d.com/

まず、応力解析の対象とするトラス屋根モデルを以下のように懸垂円筒状のトラスモデルとして作成してみました。作成に当たってはトラス要素のジオメトリを簡便に作成できる外部モデュール(Lunchbox)を使用しています。Lunchboxについても先述したfood4Rhinoにてフリーで弾雨ロードすることが可能です。


Grasshopper上では、上記のようなアイコンをつなげるだけの簡単なコーディングで以下のような複雑なトラスの構造モデルが作成できます。立体的な幾何学を扱うにはとっても便利なツールです。



このような複雑な形状の構造解析モデルの座標や要素の情報を一つ一つinputファイルに記述するのは例えExcelファイルによる記述であってもとても大変です。

しかし、幸いなことに、Grasshopper上ではPythonで書いたプログラムをコンポーネントとして扱うことができるため、作成したジオメトリデータ(line、座標データなど)とPythonを連携させて使用することできます。そこで、Grasshopper上で作成したジオメトリデータをOpenseesの構造解析用のインプットデータとしての節点、要素の数値データに置換するプログラムをPythonで作成し、そのプログラムをつかってOpenseesによる3次元解析プログラムのインプットデータを作成しました。プログラムといっても、Rhinoceros上のジオメトリの節点座標と、各梁要素の材端座標を拾って、input用のデータ書式に再構成するだけのシンプルなものとなります。

例題として、作成した解析モデルの頂部の中心節点に鉛直荷重が加わった場合の応力解析をOpenseesにより行います。
前回可視化に利用したPlotlyにより、Openseesによる応力解析結果を視覚化するとこんな感じになります。


軸力図

軸力図については圧縮材が赤色、引張材が青色となるように設定しました。


最大曲げモーメントの分布図


そして変位図


Karambaによる変位図

上記のOpenseesによる解析結果とKarambaによる解析結果とを比較すると、変形性状は概ね対応していることがわかります。上記では、Grasshopper→Openseesによる応力解析により複雑な形状の構造物の応力解析ができました。Pythonによるコーディングにおいて幾何学形状を扱うことは労力がかかります。そうしたことから、このように幾何学の扱いに長けており、デザイナーによるコーディングも可能なRhinoceros+Grasshopperをデザインなどで使用し、それらの分析にOpenseesを活用するといったスキームは、その間をつなぐ環境がしっかりと構築されれば、建築設計実務でも十分活用できるのではと考えます。