问题描述
我试图通过读出房间 (IfcSpace) 及其连接表面几何来从 IFC 文件中查询一些信息。我正在使用一个简单的示例,在 Revit 中建模并在 IFC4 中导出:
3D view of the Model in Revit with some added information regarding to my question
我对 IFC 文件中定义连接面平面的方式有些困惑:
#939= IFCRELSPACEBOUNDARY('3xhbPH49D9TfQKK9Lu08oz',#42,'1stLevel',$,#204,#785,#226,.PHYSICAL.,.INTERNAL.);
#204= IFCSPACE('04KCO36993gQtA70ZBoE3c','1',#180,#199,'Raum A',.ELEMENT.,.SPACE.,$);
#785= IFcslAB('3e$xLvgof3m8nQTYiFEy7v','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.));
#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',#707,#241,$);
#707= IFcslAB('3e$xLvgof3m8nQTYiFEy7D','Geschossdecke:STB 200:2441740',#676,#703,'2441740',.FLOOR.);
#241= IFCCONNECTIONSURFACEGEOMETRY(#239,$);
#239= IFCCURVEBOUNDEdplANE(#238,#235,());
#238= IFCPLANE(#237);
#237= IFCAXIS2PLACEMENT3D(#227,#22,#18);
#227= IFCCARTESIANPOINT((24.,0.));
#22= IFCDIRECTION((0.,-1.));
#18= IFCDIRECTION((0.,-1.,0.));
#235= IFCpolyLINE((#10,#229,#231,#233,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
我会把它留在这里,以防万一。
祝您有美好的一天!