PlateauPython開発
Plateauデータを使って市街モデルを作る【Plateau】【Python】
2024.11.12
2024.08.01
こんにちは。IU BIM STUDIOの原田です。
前回Archicadの設定をテキストファイルに書き出しgitでバージョン管理してみましたが、Pythonが使えない場合に同様のことをノーコードでするにはどうすればよいか考えてみたいと思います。
前回の記事はこちらです
まずはArchicadの設定を外に書き出す必要がありますが、Archicadの設定はXML形式で書き出すことができます。
XMLとはデータ記述言語のひとつでデータの共有などに使われます。
構造設計で使うSTB形式もXMLの一種です。
ArchicadではXMLをエクスポートして、別のplnファイルに設定をインポートする用途でよく使います。それ以外にもXML形式のデータはPower Query(Excel)で読み込むことができ、人間が読みやすい形式に変換することがある程度可能です。
では実際にやってみましょう。
メニューから属性を開きビルディングマテリアルを選択し、右下のエクスポートボタンを押します。
この時「全ての関連する属性を含む」にチェックを入れておいてください。
今回は詳しい説明はしませんが、XMLの中身は下の画像のようになっています。
<>で記されたタグというものを使って表す階層構造のデータになります。
中身をすべて理解する必要はありませんが、Power Queryを操作する上でもこのようなデータ構造になっているということを理解しておくことは重要になります。
Excelを開き、「データ>データの取得>ファイルから>XMLから」を選択し、XMLを読み込みます。
XMLを読み込んだらデータの変換ボタンを押します。
XMLを文字で見たときには何行もあったのに、Power Queryでは1行しかありません。
なぜでしょうか?
これはXMLのデータ構造が複雑なためです。
Excelは行と列の2次元でしかデータを記述できませんが、XMLはより複雑なデータ構造を記述できます。そのため、そのままExcelの表にはできないのです。
なので、必要に応じてデータを変換するなどして、Excel上で表せるデータにしていく必要があります。
先ほどの画像の「RegisteredAttributes」列のTableの部分をクリックするとその中のデータを表示することができます。
これがその中身です。でも、まだビルディングマテリアルの中身は見えません。
続いてAttributes列のTableをクリックします。
BuildingMaterial列のTableをクリックします。
ビルディングマテリアルの情報が出てきました。
この中から不要な情報を消していきます。
不要なものを消したものが上の画像です。Python APIよりは多くの情報が取り出せますが、今回は同じものを使いたいと思います。
少し内容を見てみると、交差優先度の値がArchicadの値と違いますね…バグなのかもしくは何らかの意図があるのか…?
ひとまず今回はそのまま進めます。
列見出しが英語だったり、分かりにくい場合があったりするので、必要に応じて列見出しを修正しましょう。
順番を入れ替えて、列名を変えてました。Power Queryを閉じるとExcelでデータを見ることができます。
ただ、現状では塗りつぶしと材質がインデックス(番号)になっており、名前がよくわかりません。
名前が分かるほうがいいですよね。
ビルディングマテリアルと同様の方法で塗りつぶしと材質の名前をXMLから取り出します。
詳細は省きますがPower Queryの画面は下記のような感じになります。
データが準備できたらクエリのマージを使ってテーブルを結合します。
Power Queryのホーム > 結合 > クエリのマージ からクエリのマージを実行します。
材質の場合だと中央のメニューから材質のテーブルを選択し、上下のテーブルで対応するインデックスを選択してください。結合の種類は「左外部」で大丈夫です。
OKするとテーブルが結合されます。
結合されたテーブルを展開すると、対応した材質名が入っているのが確認できます。
塗りつぶしも同様に名前を取得し、列を整理すると下記のような表が出来上がります。
これでノーコードで設定データの整理ができました。
上記のような方法でExcelにデータとして保存することができましたが、問題点もあります。
Gitでバージョン管理する場合、Excelの状態では差分が分かりません。
Excelはテキストファイルではないためです。
そのためGitで差分を見たい場合はテキストに書き出す必要があります。
例としてタブ区切りテキストで保存すればGitで差分を見ることができます。
Excelの保存時に拡張子をタブ区切りテキスト(TSV)にすると、次のようになります。
見やすさでいえばマークダウンの方が良く、Pythonを使った方が手順も少ないメリットはあります。しかし、Python APIはまだ出せない情報も多くあるのでXMLから出したほうが良い場合もあるかもしれません。
データの管理などに限らずモデル作成に関してもですが、絶対にベストな方法というのはほとんど無く何かしらのトレードオフが発生します。その時に何が業務上効果的かを考え、妥協すべきところは妥協して運用を変えていくべきかと思います。
どのような方法を取るか決める際にメリット・デメリットを判断できるよう、業務を整理し何を重視するかを決めておくことが大切になるのかなと思います。
全ての問題を解決してくれる夢のようなソフトや何でもできるAIのようなものは存在しません。
デジタルツールを活用しつつ既存のワークフローを変えていくことが重要で、「今までのやり方」に固執するとツールとの折り合いがつかない印象を受けます。
なので、
・ある程度ツール側に人が合わせる
・何をどのソフトでするかを調整する
ということが必要になってくるのですが、この匙加減がBIM導入の難しさでもあるのかなと思います。
また、この時にある程度プログラミングができるとアイディア次第でできることの範囲が広がります。興味のある方はプログラミングをやってみましょう!
今回は以上です。
最後までお読みいただきありがとうございました。
PlateauPython開発
2024.11.12
BIMGISPython開発
2024.10.21
GISPython開発
2024.09.30
GISPython開発
2024.09.03
ARCHICADBIM
2024.08.01
ARCHICADBIM
2024.07.04