如何获取 IFC 对象的绝对坐标?
Posted
技术标签:
【中文标题】如何获取 IFC 对象的绝对坐标?【英文标题】:How to get absolute coordinates of an IFC object? 【发布时间】:2016-11-19 13:46:25 【问题描述】:我正在开发一个操作 IFC(工业基础类)对象的小型 Java API。为此,我使用了外部工具,例如BIMserver。
现在,我正在尝试获取作为IfcProduct 实例的每个对象的坐标。但是,我只是通过IfcLocalPlacement
获取另一个 IfcProduct 的 相对坐标,而不是对象的绝对坐标。因此,每个对象的引用都是它所在的实体。
我的目标是计算 IFC 对象之间的距离(只是为了向用户显示信息,我不想渲染对象等等)。例如,IfcSpace
和 IfcDistributionControlElement
之间的距离。
有谁知道如何获取每个 IFC 对象的绝对坐标(不是相对坐标)?如果您知道一些可以帮助我的 API 或库,也可以发送。
【问题讨论】:
【参考方案1】:您需要在树中应用/堆叠所有不同的IfcLocalPlacement
,直到到达IfcProject
容器。您还可以找到解释 here in the docs for IFC2X3 和 here in the docs for IFC4 (据我所知,IfcLocalPlacement
的规格没有改变):
如果使用相对位置,则以下约定应作为默认相对位置应用。这些约定适用于 IfcProduct 的所有五个直接子类型,即 IfcSpatialStructureElement、IfcElement、IfcAnnotation、IfcGrid、IfcPort。在上述五种类型的子类型级别提供了更详细的放置信息。
对于IfcSpatialStructureElement
的子类型,适用以下约定IfcSite
应绝对放置在由IfcProject
的几何表示上下文建立的世界坐标系内IfcBuilding
应相对于IfcSite
的本地位置放置IfcBuildingStorey
应相对于IfcBuilding
的本地位置放置 对于IfcGrid
和IfcAnnotation
,约定适用,它应相对放置 到其容器的本地放置(IfcSite
,IfcBuilding
,IfcBuildingStorey
) 它应该与IfcRelContainedInSpatialStructure
包含关系所引用的容器元素相同, 对于IfcPort
,约定适用于它应相对放置 到它所属元素的本地放置 (IfcElement
) 它应该与IfcRelConnectsPortToElement
连接关系所引用的元素相同, 对于IfcElement
,约定适用,它应相对放置: 到其容器的本地放置(IfcSite
,IfcBuilding
,IfcBuildingStorey
) 它应该与IfcRelContainedInSpatialStructure
包含关系所引用的容器元素相同, 到IfcElement
的本地放置,它通过元素组合关系绑定到该位置 对于相对于主要组件(例如开口)定位的特征,如IfcRelVoidsElement
和IfcRelProjectsElement
表示, 用于填充开口的元素(例如门或窗),由IfcRelFillsElement
表示, 用于覆盖元素的覆盖物,由IfcRelCoversBldgElements
表示, 对于聚合到主组件的子组件,用IfcRelAggregates
和IfcRelNests
表示)
【讨论】:
以上是关于如何获取 IFC 对象的绝对坐标?的主要内容,如果未能解决你的问题,请参考以下文章