Pythonスクリプトの使用
コマンド
BIMPYTHON
BIMPYTHONについて
BIMPYTHONコマンドは、適切なPythonスクリプト(.py)を使用して、BricsCAD BIM内のモデルからデータを照会し、管理することができます。
Pythonスクリプトには、オブジェクトやBIM図形の数量および関連プロパティの取得などシンプルなものから、使用可能なモデルパラメータに基づいた一連の計算の実装など精巧なものまで、さまざまなスクリプトがあります。
BricsCADにはPythonシェルが付属していないので、スクリプトはテキストやコードエディターで作成する必要があります。
BricsCAD BIMにはPythonプログラミング言語と標準ライブラリが組み込まれているので、別途インストールする必要はありません。ただし、カスタムパッケージやライブラリをスクリプトで使用される場合は、別途インストールしてください。
BricsCAD BIMのインストーラーには、いくつかのPythonスクリプトのサンプルが用意されています。
手順:BIMPYTHONモジュールを使ったPythonスクリプトの設定
- APIにアクセスする前に、スクリプトに入れたいモジュールを読み込みまたは「コール」します。
これらがPython標準ライブラリに含まれていない場合は、事前に別途インストールされていることを確認してください。
mathなどの標準モジュールを「読み込み」し、Matplotlibパッケージの関数を集めたPyplotなど、外部のモジュールとして「読み込み」することができます。
import math import matplotlib.pyplot as plt
- 必要なライブラリを「コール」します。次のステップは、BricsCADモデル内の要素を照会するためのAPIにアクセスすることです。これは、BIMオブジェクトの範囲であり、モデルへのエントリーポイントとなります。
bricscadモジュールからcurrent_modelを読み込みます:
from bricscad.bim import current_model
- これで、これらのサンプルステートメントを使って、モデルを照会することができます。
# モデル内の壁の長さに関する情報を表示する lengths = [wall.prop('Length')current_model().filter(Type='Wall')] の壁用印刷(F'壁の長さ。max: {max(lengths)}, avg: {sum(lengths)/len(lengths)}')
# 選択範囲を作成し、オブジェクトを印刷する current_model().filter(Type='Wall',IsExternal=True).select() bim_model.filter(Type='Wall',IsExternal=True, Length=max(lengths)): 印刷(壁面)
bricscad.bim.Objectsのマッパーは連鎖可能です。これは、屋根のうち壁に近い部分を取得する例です:
# Get all parts of roof within 40cm range of all walls
roof_parts = current_model().filter(Type='Roof').parts()
roof_parts_close_to_wall = current_model().filter(Type='Wall').within_distance(40, 'cm', search_range=roof_parts)
一方、これはフィルタリングするための関数文の例です:
# Filter roof parts longer than 50 project units
def is_long(obj):
return obj.prop('Length') > 50
roof_parts.filter(is_long)
また、データを様々な形式で書き出して表示することもできます。
# 辞書リストを作成する
wall_info = [
{ 'ハンドル': wall.get_property('ハンドル'),'長さ': wall.get_property('長さ'),'高さ': wall.get_property('高さ')} for wall in current_model().filter(Type='Wall')]
# .json への書き出しJSON を読み込み
file = open('path/to/file.json','w+')
file.write(json.dumps(wall_info,インデント= 4))
ファイル.閉じる()
# plotting a histogram
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame(wall_info)
df.hist();
plt.show()
# export to .csv
df.to_csv(r'path/to/file.csv', index = False, header=True)
BricsCAD APIとその各種クラスの詳細については、以下のAPIの章をご参照ください。
手順:Pythonスクリプトの実行
- Pythonスクリプトを実行するには、新規またはBricsCADファイルを開きます。
- コマンドラインに「BIMPYTHON」と入力し、Enterを押します。
- ダイアログボックスが表示され、Pythonスクリプトファイル(*.py)のみを選択できます。選択して、開くをクリックしてファイルを実行します。
- BricsCAD 以外の外部プログラムで書き出しまたは表示するデータを指定していない限り、BricsCAD はその出力をコマンドラインで報告します。
参照
クラスと構文
- get_property(prop_name)
- 指定された名前のオブジェクトのプロパティ値を返します。
- set_property(prop_name, value)
- プロパティ名(prop_name)に値を設定します。
- distance_to( other_obj, units='mm', distance_mode='exact' )
-
- 2つのオブジェクト間の距離を計算します。
- 引数のオプションunits:INSUNITS(「センチ」、「フィート」、「パーセック」など)と、これらの略語からなる任意の単位値:「mm」、「cm」、「m」、「km」、「ft」
- 引数のオプションdistance_mode:「bbox_center」、「bbox」、「exact」
- parts()
- このオブジェクトのサブ要素を返します。
- parent()
- parts()の逆で、このサブ要素の親オブジェクトを返します。
- plies()
- 反復可能なオブジェクトに関連付けられた
Plies
を返します。
- within_distance( distance, unit='mm', distance_mode='exact', search_range=bim_model )
-
- 引数distanceの距離内にあるオブジェクトを返します。
- 引数のオプションunits:distance_to を参照。
- 引数のオプションdistance_mode::distance_to を参照。
- openings()
- このオブジェクトの関連する開口部を返します。
- spaces()
- このオブジェクトの関連する空間を返します。
- bounding_elements()
- この(空間)オブジェクトの関連する境界要素を返します。
- select()
- 選択にオブジェクトを追加します。
- deselect()
- 選択からオブジェクトを削除します。
- __eq__()and __hash__()
- オブジェクトを、例えば以下のものと相互運用可能にします。
- クラス bricscad.bim.Objects
- BricsCAD BIMオブジェクトのコレクションを定義します。
- bricscad.bim.list_properties(obj)
- 渡された図形またはプライの利用可能なプロパティのリストを返します。
- bricscad.bim.current_model()
- アクティブなドキュメントのモデル空間にあるオブジェクトを返します。
- bricscad.bim.Plyのクラス
- Plyオブジェクトのインデックス付きでスライス可能なコンテナです。
- bricscad.bim.Plyのクラス
- 個々のプライオブジェクト。