了解 Revit 元素上传到 Forge 平台后的坐标系转换和引用

Posted

技术标签:

【中文标题】了解 Revit 元素上传到 Forge 平台后的坐标系转换和引用【英文标题】:Understanding the coordinate systems transformation and references of Revit elements after upload to Forge platform 【发布时间】:2019-01-23 05:23:48 【问题描述】:

我最近将 Revit 模型上传到 Forge 平台。该模型定义了一个测量点(N/S: 0, E/W: 0) 一个基础项目点(N/S: 149443, E/W: 371248, Angle to True North: 41.43°)) 和一个模型室。模型室包含一个坐标为(N/S: 149326, E/W: 380492)的元素

我试图弄清楚模型中的这些点在上传到 Forge 平台后是如何转换和翻译的。

我使用这个函数(viewerApp.getCurrentViewer().model.getData().bbox)在 Forge Viewer 中获取模型的边界框,结果如下:

min: (X: 1229.5841064453125, Y: 471.1938171386719, Z: -0.5249344110488892),和

max: (X: 1284.9295654296875, Y: 527.90869140625, Z: 13.123359680175781)

此外,我做了以下初步假设:

    单位假设:Revit 模型中提供的北向和东向坐标中的 1 个点直接转换为 Forge Viewer 的 X 和 Y 中的一个点。 来源假设:我假设 Forge Viewer 的来源位于 Viewer API 中的(0, 0, 0) 点。此外,查看器使用模型的测量点或项目基准点作为原点。 Revit 模型的元素将落入 Forge Viewer 模型的边界框内

但是,边界框的信息(X & Y 的范围分别为 1229-1284 & 471-527)似乎不包含在房间模型内定义的元素的坐标,如果它位于测量点上(元素的 @987654331 @ 在149326 & 380492 相对于测量点),或者如果它在项目基点上(元素的X & Y-117 & 9444 相对于项目基点)。

另外,参考this 问题,模型坐标可能会被此命令获得的全局偏移量偏移:(viewerApp.getCurrentViewer().model.getData().globalOffset)。但是,当我运行此命令时,会返回 (0, 0, 0)。假设偏移量在某种程度上是正确的,似乎北/东到 Forge 的 X/Y 的单位比例与我的假设不同。

我想问一下我上面所做的假设中的哪一部分是错误的?

如果我的单位假设有问题,如何将北/东单位转换为 Forge Viewer 的 X 和 Y 单位? 如果我的原点假设除了第一个假设之外还有错误,那么 Forge 如何在查看器中设置原点?如果原点基于 Revit 模型,设置的原点是否参考模型的测量点/项目基准点? 在 Model Derivative API 执行模型转换时,是否对 Revit 模型及其元素进行了任何其他转换?

我正在使用 Forge Viewer API v6、Model Derivative API v2,并使用 Node.JS 作为 Forge Viewer API 的服务器

【问题讨论】:

【参考方案1】:

如果我理解正确,您似乎使用项目坐标放置了 Revit 模型,但仅提取了项目地址属性。

正如您在other answer 中指出的那样,模型以原点为中心,globalOffset 表示该值。

您可能需要根据模型的单位调整边界框,我建议检查this answer。

【讨论】:

嗨@AugustoGoncalves,非常感谢您的回复!我们已经能够使用您提到的getUnitScale() 函数在 Revit 模型和 Forge Viewer 之间进行映射。另外,只是好奇,顶部/前/底部方向(如立方体所示)是否直接转换为锻造查看器中的 X、Y 和 Z 方向? 对于 Revit 模型,是的,顶部 = Z

以上是关于了解 Revit 元素上传到 Forge 平台后的坐标系转换和引用的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# .NET HTTPClient 在 Node JS 服务器上通过 Multer 将 Revit 文件上传到 Autodesk Forge OSS

在 Forge Viewer 中无法选择 Revit“零件”

是否可以使用 Autodesk forge 识别 BIM 模型的内部和外部元素?

在 Forge 查看器中从 Revit 模型重建对象组

如何使用 Forge API 从模型 Revit 2022 获取零件类别

如何为 Forge API 提供签名的 url 以创建 revit 文件