IFCをいじってみる1
備忘録的なものです。
目標:ArchicadにIFCを取り込んだときに、IFCの方がフロア数が多い場合ダミーのフロアを増やす、という操作をやりたくないので、IFCデータを直接いじっていい感じのデータにする
検証
1Fに2枚、2Fに1枚の壁を描いたこんなデータ
IFCをテキストエディタで開くとこんな感じで見られる
フロアの定義はここっぽい↓
#124= IFCBUILDINGSTOREY('3DIZOtvqHBYedwsDw_SBB5',#12,'1FL',$,$,#122,$,$,.ELEMENT.,0.);
#320= IFCBUILDINGSTOREY('0dDIdpwPz0xuAPU_Zv9MW7',#12,'2FL',$,$,#319,$,$,.ELEMENT.,3000.);
どの要素がどのフロア(IfcBuildingStorey)に配置されているかの記述はここのようだ↓
#204= IFCRELCONTAINEDINSPATIALSTRUCTURE('06wPwx9I7y5Px02gPUdx4h',#12,$,$,(#189,#297),#124);
#372= IFCRELCONTAINEDINSPATIALSTRUCTURE('1T_4YQlRdtK8woqPCtS4UU',#12,$,$,(#369),#320);
#204を見ると、行末の#124が上で書いたIfcBuildingStoreyにリンクしている。
(#189,#297)というのが要素にリンク(ここではIfcWallStandalone)。
2Fも同じ。
試しに#372を消してみる
壁自体は存在するものの、階が未定義状態になった。
#204の行に、先ほど未定義になってしまった#369(高さ的に2Fの壁)を足してみる
#204= IFCRELCONTAINEDINSPATIALSTRUCTURE('06wPwx9I7y5Px02gPUdx4h',#12,$,$,(#189,#297,#369),#124);
位置関係(高さ)は変わらないまま、1FLに編入された。
(ちょうどArchicadで言うところの「配置フロアを再リンク」と同じ状態)
と、いうことはPythonかな何かでフロアを抽出→要不要を判別したリストを作ってもう一度Pythonで再配置、みたいなことはできそう。