在IFC标准中,采用相对坐标系对构件定位。如柱(IfcColumn)的定位信息(局部坐标系及参考坐标系)由ObjectPlacement描述。ObjectPlacement由两部分组成:

(1)PlacementRelTo是参考坐标系。柱子的参考坐标系是楼层IfcBuidlingStorey所在的坐标系。IfcBuidlingStorey以IfcBuilding所在的坐标系为参考,IfcBuilding以IfcSite所在的坐标系为参考,IfcSite定义的是整体坐标系,没有参考坐标系。

(2)RelativePlacement是相对坐标系内的坐标转换。

坐标系存在多层参考的情况,在明确各构件层次关系的前提下,进行逐级查询确定构件的绝对坐标。

IFC文件的内容如下:

#= IFCCARTESIANPOINT((.,.,.));
#= IFCAXIS2PLACEMENT3D(#,$,$);
#= IFCLOCALPLACEMENT(#,#);
#= IFCBUILDING('1BNyUUMcj6ywEAW7k0zZlo',#,'',$,$,#,$,'',.ELEMENT.,$,$,#);
#= IFCAXIS2PLACEMENT3D(#,$,$);
#= IFCLOCALPLACEMENT(#,#);
#= IFCBUILDINGSTOREY('1BNyUUMcj6ywEAW7j$2VSC',#,'\X2\68079AD8\X0\ 1',$,$,#,$,'\X2\68079AD8\X0\ 1',.ELEMENT.,.);
#= IFCAXIS2PLACEMENT3D(#,$,$);
#= IFCLOCALPLACEMENT($,#);
#= IFCSITE('1BNyUUMcj6ywEAW7k0zZln',#,'Default',$,'',#,$,$,.ELEMENT.,(,,,),(-,-,-,-),.,$,$);
#= IFCCARTESIANPOINT((-7318.22370947408,711.194038980438,.));
#= IFCAXIS2PLACEMENT3D(#,$,$);
#= IFCLOCALPLACEMENT(#,#);
#= IFCCOLUMN('0Ae7iOjK982gh$h7PwMCca',#,'M_\X2\77E95F6267F1\X0\:475 x 610mm:203111',$,'475 x 610mm',#,#,'');

#170是柱子(IfcColumn),位置信息由#168(IfcLocalPlacement)定义。

#168(IfcLocalPlacement)指定了#121(IfcLocalPlacement,参考坐标系)和#167(IfcAxis2Placement3D,局部坐标系)。

#121(IfcLocalPlacement)是楼层#123(IfcBuidlingStorey)所在的坐标系。它指定了#32(IfcLocalPlacement,参考坐标系)和#120(IfcAxis2Placement3D,局部坐标系)。

#32(IfcLocalPlacement)是建筑物#114(IfcBuilding)所在的坐标系。它指定了#311(IfcLocalPlacement,参考坐标系)和#31(IfcAxis2Placement3D,局部坐标系)。

#311(IfcLocalPlacement)是场地#312(IfcSite)所在的坐标系,它是整体坐标系,没有参考坐标系。

参考:https://blog.csdn.net/liyazhen2011/article/details/81630680

IFC构件位置信息—ObjectPlacement的更多相关文章

  1. IFC构件位置数据与revit模型中对应构件位置数据对比

    IFC构件位置数据与revit模型中对应构件位置数据对比

  2. 获取IFC构件的位置数据、方向数据

    获取IFC构件的位置数据.方向数据 std::map<int, shared_ptr<BuildingEntity>> map_buildingEntity = b_model ...

  3. Android获取位置信息的方法总结

    1.位置服务的简介:位置服务,英文翻译为Location-Based Services,缩写为LBS,又称为定位服务或基于位置的服务,融合了GPS定位.移动通信.导航等多种技术,提供与空间位置相关的综 ...

  4. Geolocation API JavaScript访问用户的当前位置信息

    Geolocation API在浏览器中的实现是navigator.geolocation对象,常用的有以下方法. 1.第一个方法是getCurrentPosition() 调用这个方法就会触发请求用 ...

  5. Android模拟位置信息

    Android模拟位置程序,俗称GPS欺骗,只能修改采用GPS定位的软件. 手机定位方式目前有4种:基站定位,WIFI定位,GPS定位,AGPS定位 常见的修改手法: 1. 抓包欺骗法,抓包改包欺骗服 ...

  6. 使用NPOI从Excel中提取图片及图片位置信息

    问题背景: 话说,在ExcelReport的开发过程中,有一个比较棘手的问题:怎么复制图片呢? 当然,解决这个问题的第一步是:能使用NPOI提取到图片及图片的位置信息.到这里,一切想法都很顺利.但NP ...

  7. js之获取窗口大小和位置信息

    除IE外的浏览器查看窗口大小和位置信息: //The overall size of the browser window on the desktop var windowWidth = windo ...

  8. iOS开发----地图与导航--定位和位置信息获取

    要实现地图.导航功能,往往需要先熟悉定位功能,在iOS中通过Core Location框架进行定位操作.Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图 ...

  9. [C语言](二)01 获取Windows图形构件大小信息

    SYSMETS.c #include <windows.h> #include "SYSMETS.H"//自定义的单元,所以用"",不是用<& ...

随机推荐

  1. 51nod 1305 Pairwise Sum and Divide

    有这样一段程序,fun会对整数数组A进行求值,其中Floor表示向下取整:   fun(A)     sum = 0     for i = 1 to A.length         for j = ...

  2. BOM常用属性与方法

    BOMBrowser Object Modelwindow浏览器窗口window方法locationlocation常用属性screen显示器屏幕screen常用属性navigator浏览器软件nav ...

  3. DevExpress中实现GridControl的分页功能

    DevExpress中如何实现GridControl的分页功能 简介:DevExpress中如何实现GridControl的分页功能, 主要是利用DataNavigator和GridControl组合 ...

  4. 使用Nuget生成类库

     背景: 为了开始ITOO项目,我们先学习了一些基本知识,这些就是一个基本知识,这实现的是一种封装的思想,将方法打包,这样我们就可以在其他系统中直接引用而需要再耗费人力和财力去做,真正实现了高效率 ...

  5. 扫雷小游戏PyQt5开发【附源代码】

    也没啥可介绍哒,扫雷大家都玩过. 雷的分布算法也很简单,就是在雷地图(map:二维数组)中,随机放雷,然后这个雷的8个方位(上下左右.四个对角)的数字(非雷的标记.加一后不为雷的标记)都加一. 如何判 ...

  6. 神经网络(10)--有助于对神经网络Backpropagation算法的理解

    为了更好的理解backpropagation,先来了解一下forward propagation的内部 我们在forward propagation中计算Z1(3)的方法与在back propagat ...

  7. Hive 数据类型与文件格式

    一.基本数据类型 1.基本数据类型 Tinyint  1byte有符号整数  比如20 Smalint 2byte有符号整数 比如20 Int          4byte有符号整数 比如20 Big ...

  8. TPC-H 下载参考

    CSDN免费下载地址 tpc-h-v2.17.3.zip tools https://download.csdn.net/download/zes2014/10558251

  9. Kubernetes 学习13 kubernetes pv pvc configmap 和secret

    一.概述 1.我们在pvc申请的时候未必就有现成的pv能正好符合这个pvc在申请中指定的条件,毕竟上一次的成功是我们有意设定了有一些满足有一些不满足的前提下我们成功创建了一个pvc并且被pod绑定所使 ...

  10. webuploader+asp.net如何实现分片+断点续传

    文件夹数据库处理逻辑 public class DbFolder { JSONObject root; public DbFolder() { this.root = new JSONObject() ...