はじめに
自分用のメモとして書きますが、誰かに見ていただけると嬉しいです。
今回は複数のIFCを結合していこうと思います。
今回行うこと
ifcOpenShellのgitをクローン
ifcPatchでIFCを結合
の流れで行いたいと思います。
まず、ifcOpenShellのgitのクローンを行う前にgitとPythonをinstallしておく必要があります。
今回のgitとPythonの各バージョンは以下です。
git:2.43.0.windows.1
python:3.10.11
ifcOpenShellのgitをクローン
まず今回ifcOpenShellはgitをクローンして環境を作成しようと思います。
任意のディレクトリに移動し、以下のコードをターミナルで打ちます。
git clone https://github.com/IfcOpenShell/IfcOpenShell.git
以下の画像のようにifcOpenShellの環境が作成されました。
今回はこのディレクトリ内のifcPatchを使いたいと思います。
以下のコードを打ちifcPatchのディレクトリに移動します。
cd IfcOpenShell/src/ifcpatch
ifcPatchでIFCを結合
次にifcPatchを使い、IFC同士を結合させます。今回は橋梁の下部構造と上下部接続部のIFCデータを結合させようと思います。
下部構造のIFCデータ
上下部接続部のIFCデータ
では実際にifcPatchを使い、IFCを結合します。
実行するコードは以下です。
python -m ifcpatch -i "1つ目のIFCが存在するパス" -r MergeProjects -a "2つ目のIFCが存在するパス" -o "結合されるIFCモデルのパス指定と名前"
私は以下のように書き実行しました。(自分が保存しているパスとIFCの名前は書き換えてください。)
python -m ifcpatch -i "C:\IFC\substructure.ifc" -r MergeProjects -a "C:\IFC\connection.ifc" -o "C:\IFC\substructure-connection.ifc"
実際に結合されたsubstructure-connection.ifcを開くと以下のようなデータとなりました。
ここで注目するべきが右のIFCデータの構造です。よく見るとIFCSITEとIFCBUILDINGが2つづつ存在しています、しかしこれはIFCデータの構造として間違っています。
そこでIFCSITEとIFCBUILDINGをそれぞれ1つに統合したいと思います。
substructure-connection.ifcをVScodeで開きます。
このようにIFCはコードでも確認することが出来ます。
まずIFCSITEを1つにまとめます。
Ctrl+FでIFCSITEを検索します。
するとIFCSITEが2件ヒットします。
1つ目のIFCSITEのOwnerHistory(先頭に付いている#の番号)を一旦メモします。
今回は38です。
そして2つ目のIFCSITEに移動します。
そして2つ目のIFCSITEのOwnerHistoryの番号をコピーし検索をかけます。今回は#2756の2756です。
すると以下のようにヒットしました。
そして検索したOwnerHistoryの番号である2756を1つ目のOwnerHistoryの番号の38に書き換えます。
※今回、書き換える箇所は2つ目のOwnerHistoryです。(IFCSITEを直接参照しているOwnerHistoryを書き換えること)
そして2つ目のIFCSITEの全文を削除します。
↓
ここでIFCビューワに戻りデータを確認するとIFCSITEが1つに統一されていることが確認できました。
同様にIFCBUILDINGも1つに統一すればIFCの結合は終了です。
以上がifcPatchの使用方法でした。