PlateauPython開発
Plateauデータを使って市街モデルを作る【Plateau】【Python】
2024.11.12
2023.12.21
こんにちは、初めまして。
IU BIM STUDIOの原田と申します。
ブログ記事を書くことになりまして何を題材にしようかと考えた結果、ARCHICADでPythonスクリプトを使う記事があまりないようなので、ひとまずARCHICAD – Python連携の記事を書いていくことにしました。
私もそこまで詳しくないのですが、Python初心者の方の参考になれば幸いです。
今回は初回ということで環境構築から始めたいと思います。
今回の記事の動作環境です。
・OS Windows10
・エディタ Visual Stuido Code
・ARCHICAD 26
こちらからPythonのインストーラーをダウンロードし、インストールしてください。
https://www.python.org/downloads/
インストーラーの画面で「Add Python.exe to PATH」にチェックを入れてください。
pipを使ってPythonにARCHICAD用のライブラリをインストールします。
pipはPythonのパッケージ管理ツールです。
パッケージとかライブラリというのはPythonの拡張機能のようなもので、ライブラリを追加することにより便利にプログラミングをすることができます。
VSCodeであればメニューの「ターミナル>新しいターミナル」をクリックし、出てきたパネルに下記のコマンドを入力します。
pip install archicad
ARCHICADのPython APIでは現状では柱やテキストなどのモデル要素を作成することはできません。
今回はゾーンの室名を”Hello World!”に変更するプログラムを作成します。
エディターでhello_world.pyというファイルを新規作成し保存します。
コードは下記のとおりです。
from archicad import ACConnection
conn = ACConnection.connect()
assert conn
acc = conn.commands
act = conn.types
acu = conn.utilities
# プロパティのGUIDを取得
property_id = acu.GetBuiltInPropertyId("Zone_ZoneName")
# ゾーン名の値を設定
new_zone_name = act.NormalStringPropertyValue("Hello World!")
# ゾーンを全て取得
zones = acc.GetElementsByType("Zone")
# プロパティ値を入れる配列を作成
property_values = []
# 新しいプロパティ値のリストを作成
for zone in zones:
property_value = act.ElementPropertyValue(
zone.elementId, property_id, new_zone_name
)
property_values.append(property_value)
# 作成したものをゾーンに適用
acc.SetPropertyValuesOfElements(property_values)
コードを書き終えたら保存しておきましょう。
Pythonスクリプトを使用するためにゾーンを数個配置したモデルを作っておきます。
スクリプトを実行する前に、Pythonパレットが表示できない場合はオプションから表示できるように変更する必要があります。
作業環境>追加オプション>試験機能の欄から「Pythonパレットを有効化」にチェックを入れます。
Pythonパレットを有効化したら、メニューの
ウィンドウ > パレット からPythonパレットを開きます。
フォルダのアイコンをクリックし、スクリプトが置いてあるフォルダを選択します。
作成したhello_world.pyが表示されたら、ファイルを選択して実行ボタンを押します。
作成した「hello_world.py」を実行すると、室名が「Hello World!」に変更されました。
今回の例ではPythonパレットから実行しましたが、エディタからもスクリプトを実行できます。
私の環境で言えばVSCodeでスクリプトを実行すればPythonパレットと同様にスクリプトを実行できます。
ただし、ARCHICADを起動していない場合は動作しません。
今回は入門編ということで環境構築とゾーン名の変更をしてみました。
このようにPythonスクリプトは主に情報の操作、プロパティの一括編集などに使えます。
次回はもう少し実践的な使い方に挑戦してみたいと思います。
ARCHICAD Python API 公式ドキュメント
https://pypi.org/project/archicad/
PlateauPython開発
2024.11.12
BIMGISPython開発
2024.10.21
GISPython開発
2024.09.30
GISPython開発
2024.09.03
ARCHICADBIM
2024.08.01
ARCHICADBIM
2024.07.04