我正试图通过读取房间(IfcSpace(及其连接面几何图形来从IFC文件中查询一些信息。我使用的是一个在Revit中建模并在IFC4中导出的简单示例:
Revit中模型的三维视图,并添加了一些与我的问题有关的信息
我对IFC文件中连接面的平面定义方式有点困惑:
#939= IFCRELSPACEBOUNDARY('3xhbPH49D9TfQKK9Lu08oz',#42,'1stLevel',$,#204,#785,#226,.PHYSICAL.,.INTERNAL.);
#204= IFCSPACE('04KCO36993gQtA70ZBoE3c',#42,'1',$,$,#180,#199,'Raum A',.ELEMENT.,.SPACE.,$);
#785= IFCSLAB('3e$xLVgOf3m8nQTYiFEy7v',#42,'Geschossdecke:STB 200:2441784',$,'Geschossdecke:STB 200',#755,#781,'2441784',.FLOOR.);
#226= IFCCONNECTIONSURFACEGEOMETRY(#224,$);
#224= IFCCURVEBOUNDEDPLANE(#223,#220,());
#223= IFCPLANE(#222);
#222= IFCAXIS2PLACEMENT3D(#212,#20,#14);
#212= IFCCARTESIANPOINT((24.,10.,8.));
#20= IFCDIRECTION((0.,0.,1.));
#14= IFCDIRECTION((-1.,0.,0.));
#220= IFCPOLYLINE((#10,#214,#216,#218,#10));
#10= IFCCARTESIANPOINT((0.,0.));
#214= IFCCARTESIANPOINT((24.,0.));
#216= IFCCARTESIANPOINT((24.,10.));
#218= IFCCARTESIANPOINT((0.,10.));
#10= IFCCARTESIANPOINT((0.,0.));
#942= IFCRELSPACEBOUNDARY('0WWFTh$2PB2hOrAyfp48qI',#42,'1stLevel',$,#204,#707,#241,.PHYSICAL.,.INTERNAL.);
#204= IFCSPACE('04KCO36993gQtA70ZBoE3c',#42,'1',$,$,#180,#199,'Raum A',.ELEMENT.,.SPACE.,$);
#707= IFCSLAB('3e$xLVgOf3m8nQTYiFEy7D',#42,'Geschossdecke:STB 200:2441740',$,'Geschossdecke:STB 200',#676,#703,'2441740',.FLOOR.);
#241= IFCCONNECTIONSURFACEGEOMETRY(#239,$);
#239= IFCCURVEBOUNDEDPLANE(#238,#235,());
#238= IFCPLANE(#237);
#237= IFCAXIS2PLACEMENT3D(#227,#22,#18);
#227= IFCCARTESIANPOINT((24.,10.,0.));
#22= IFCDIRECTION((0.,0.,-1.));
#18= IFCDIRECTION((0.,-1.,0.));
#235= IFCPOLYLINE((#10,#229,#231,#233,#10));
#10= IFCCARTESIANPOINT((0.,0.));
#229= IFCCARTESIANPOINT((10.,0.));
#231= IFCCARTESIANPOINT((10.,24.));
#233= IFCCARTESIANPOINT((0.,24.));
#10= IFCCARTESIANPOINT((0.,0.));
如您所见,楼板#785具有在#220中定义的多段线。坐标与Revit文件中的轴匹配。然而,板#707有一个由折线#235创建的平面,x和y的坐标相反。我看到每个平面的方向之间存在差异,但我不明白它们是如何协同工作的。
我希望我能以某种方式把问题弄清楚,我期待着你的反馈。
谨致问候!
好的。。有时5分钟的放松思考比2小时的谷歌搜索要好。
面向上下的平面的坐标原点翻转。所以x轴和y轴是相反的。简单几何:|终于有一块橡胶胶帮了我:D
我会把它留在这里,以防万一。
祝你今天愉快!