1

我正在开发一个操作 IFC(工业基础类)对象的小型 Java API。为此,我正在使用外部工具,例如BIMserver

现在,我正在尝试获取作为IfcProduct实例的每个对象的坐标。但是,我只是通过 获取另一个 IfcProduct的相对坐标IfcLocalPlacement,而不是对象的绝对坐标。因此,每个对象的引用都是包含它的实体。

我的目标是计算 IFC 对象之间的距离(只是为了向用户显示信息,我不想渲染对象等等)。例如,anIfcSpace和 an之间的距离IfcDistributionControlElement

有谁知道如何获取每个 IFC 对象的绝对坐标(而不是相对坐标)?如果您知道一些可以帮助我的 API 或库,您也可以发送它们。

4

1 回答 1

3

您需要IfcLocalPlacement在树中应用/堆叠所有不同的内容,直到到达IfcProject容器。您还可以在 IFC2X3 的文档和 IFC4 的文档中找到解释(据我所知 ,规格IfcLocalPlacement没有改变)

如果使用相对位置,则以下约定应作为默认相对位置应用。这些约定适用于 IfcProduct 的所有五个直接子类型,即 IfcSpatialStructureElement、IfcElement、IfcAnnotation、IfcGrid、IfcPort。在上述五种类型的子类型级别提供了更详细的放置信息。

  • 对于IfcSpatialStructureElement以下约定的子类型适用
    • IfcSite应绝对放置在由几何表示上下文建立的世界坐标系中IfcProject
    • IfcBuilding应相对于当地的位置放置IfcSite
    • IfcBuildingStorey应相对于当地的位置放置IfcBuilding
  • 因为IfcGridIfcAnnotation公约适用,它应被放置相对
    • 到其容器的本地放置 ( IfcSite, IfcBuilding, IfcBuildingStorey)
      • 它应该是IfcRelContainedInSpatialStructure包含关系引用的同一个容器元素,
  • 对于IfcPort公约适用,应将其置于相对位置
    • 到它所属元素的本地位置 ( IfcElement)
      • 它应该是IfcRelConnectsPortToElement连接关系引用的相同元素,
  • 对于IfcElement公约适用,它应相对放置:
    • 到其容器的本地放置 ( IfcSite, IfcBuilding, IfcBuildingStorey)
      • 它应该是IfcRelContainedInSpatialStructure包含关系引用的同一个容器元素,
    • IfcElement通过元素组合关系将其绑定 到的本地位置
      • 对于相对于主要组件(例如开口)定位的特征,由IfcRelVoidsElement和表示IfcRelProjectsElement
      • 对于填充开口(例如门或窗)的元素,由 表示IfcRelFillsElement
      • 对于覆盖元素的覆盖物,由 表示IfcRelCoversBldgElements
      • 对于聚合到主组件的子组件,由IfcRelAggregatesIfcRelNests表示
于 2016-08-23T08:36:41.233 回答