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で再配置、みたいなことはできそう。


いいなと思ったら応援しよう!