Pythonスクリプトの使用

コマンド

BIMPYTHON

BIMPYTHONについて

BIMPYTHONコマンドは、適切なPythonスクリプト(.py)を使用して、BricsCAD BIM内のモデルからデータを照会し、管理することができます。

Pythonスクリプトには、オブジェクトやBIM図形の数量および関連プロパティの取得などシンプルなものから、使用可能なモデルパラメータに基づいた一連の計算の実装など精巧なものまで、さまざまなスクリプトがあります。

BricsCADにはPythonシェルが付属していないので、スクリプトはテキストやコードエディターで作成する必要があります。

BricsCAD BIMにはPythonプログラミング言語と標準ライブラリが組み込まれているので、別途インストールする必要はありません。ただし、カスタムパッケージやライブラリをスクリプトで使用される場合は、別途インストールしてください。

BricsCAD(BIM)のインストーラーには、いくつかのPythonスクリプトのサンプルが用意されています。

手順:BIMPYTHONモジュールを使ったPythonスクリプトの設定

  1. APIにアクセスする前に、スクリプトに入れたいモジュールを読み込みまたは「コール」します。

    これらがPython標準ライブラリに含まれていない場合は、事前に別途インストールされていることを確認してください。

    mathなどの標準モジュールを「読み込み」し、Matplotlibパッケージの関数を集めたPyplotなど、外部のモジュールとして「読み込み」することができます。

    import math import matplotlib.pyplot as plt
  2. 必要なライブラリを「コール」します。次のステップは、BricsCADモデル内の要素を照会するためのAPIにアクセスすることです。これは、bimオブジェクトの範囲であり、モデルへのエントリーポイントとなります。

    bricscadモジュールからcurrent_modelを読み込みます:

    from bricscad.bim import current_model
  3. これで、これらのサンプルステートメントを使って、モデルを照会することができます。
    # モデル内の壁の長さに関する情報を表示する
    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スクリプトの実行

  1. Pythonスクリプトを実行するには、新規またはBricsCADファイルを開きます。
  2. コマンドラインに「BIMPYTHON」と入力し、Enterキーを押します。
  3. ダイアログボックスが表示され、Pythonスクリプトファイル(*.py)のみを選択できます。それを選択して開くをクリックすると、ファイルが実行されます。


  4. BricsCAD 以外の外部プログラムで書き出しまたは表示するデータを指定していない限り、BricsCAD はその出力をコマンドラインで報告します。

参照

クラスと構文

get_property(prop_name)
指定された名前のオブジェクトのプロパティ値を返します。
set_property(prop_name, value)
プロパティ名(prop_name)に値を設定します。
distance_to( other_obj, units='mm', distance_mode='exact' )
  • 2つのオブジェクト間の距離を計算します。
  • 引数のオプションunits:インユニット(「センチ」、「フィート」、「パーセック」など)と、これらの略語からなる任意の単位値:「mm」、「cm」、「m」、「km」、「ft」
  • 引数distance_modeのオプション:「bbox_center」、「bbox」、「exact」
parts()
このオブジェクトのサブ要素を返します。
parent()
parts()の逆で、このサブ要素の親オブジェクトを返します。
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__()
オブジェクトを、例えば以下のものと相互運用可能にします。
class bricscad.bim.Objects
BricsCAD BIMオブジェクトのコレクションを定義します。
filter( function )
この範囲を関数パラメータでフィルタリングします。
filter( **conditions )
キーワード引数として与えられた条件で、この範囲をフィルタリングします。
parts()
この範囲内のすべての要素の部分を返します。
parents()
この範囲内の要素の親オブジェクトを返します。
within_distance( distance, unit='undefined', distance_mode='exact', search_range=bim_model )
この範囲内にある任意のオブジェクトの距離内にあるオブジェクトを返します。
openings()
このオブジェクトの関連する開口部を返します。
spaces()
このオブジェクトの関連する空間を返します。
bounding_elements()
この(空間)オブジェクトの関連する境界要素を返します。
select()
選択にオブジェクトを追加します。
deselect()
選択からオブジェクトを削除します。
__len__ ()
この範囲内のオブジェクトの数を返します。
bricscad.bim.list_properties(obj)
渡された図形またはプライの利用可能なプロパティのリストを返します。
bricscad.bim.current_model()
アクティブなドキュメントのモデル空間にあるオブジェクトを返します。
class bricscad.bim.Plies
Plyオブジェクトのインデックス付きでスライス可能なコンテナ。
__iter__()
__getitem__( index )
__getitem__( slice )
__len__()
class bricscad.bim.Ply
個々のプライオブジェクト。
get_property(prop_name)
与えられた名前のプライオブジェクトのプロパティ値を返します。