了解 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 模型的内部和外部元素?