了解 Revit 元素上传到 Forge 平台后的坐标系转换和参考
Understanding the coordinate systems transformation and references of Revit elements after upload to Forge platform
我最近上传了一个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 查看器的原点位于查看器 API 中的
(0, 0, 0)
点。此外,查看器使用模型的测量点或项目基点作为原点。
- Revit 模型的元素将落入 Forge Viewer 模型的边界框内
但是,边界框的信息(X & Y
分别从1229-1284 & 471-527
开始)似乎不包含房间模型中定义的元素的坐标,如果它在测量点上(元素的 X & Y
在 149326 & 380492
相对于测量点),或者如果它在项目基点上(元素的 X & Y
在 -117 & 9444
相对于项目基点).
另外,参考问题,可能是模型坐标可能被这个命令获得的全局偏移量所偏移:(viewerApp.getCurrentViewer().model.getData().globalOffset
)。但是,当我 运行 返回此命令时 (0, 0, 0)
。假设如果偏移量是正确的,Northing/Easting 到 Forge 的 X/Y 的单位缩放似乎与我的假设不同。
请问我上面的假设哪一部分是错误的?
- 如果我的单位假设有问题,Northing/Easting 单位如何转换为 Forge Viewer 的 X 和 Y 单位?
- 如果我的原点假设除了第一个假设之外还有错误,Forge 如何在查看器中设置原点?如果原点是基于Revit模型,设置的原点是指模型的测量point/Project基点吗?
- 在模型导数 API 执行模型转换时,是否对 Revit 模型及其元素进行了任何其他转换?
我正在使用 Forge Viewer API v6,Model Derivative API v2,并使用 Node.JS 作为 Forge Viewer API[=26= 的服务器]
如果我没理解错的话,您似乎使用项目坐标放置了 Revit 模型,但只提取了项目地址 属性。
如您所指出的 中所述,模型以原点为中心,globalOffset
表示此值。
您可能需要根据模型的单位调整边界框,我建议勾选 。
我最近上传了一个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 查看器的原点位于查看器 API 中的
(0, 0, 0)
点。此外,查看器使用模型的测量点或项目基点作为原点。 - Revit 模型的元素将落入 Forge Viewer 模型的边界框内
但是,边界框的信息(X & Y
分别从1229-1284 & 471-527
开始)似乎不包含房间模型中定义的元素的坐标,如果它在测量点上(元素的 X & Y
在 149326 & 380492
相对于测量点),或者如果它在项目基点上(元素的 X & Y
在 -117 & 9444
相对于项目基点).
另外,参考viewerApp.getCurrentViewer().model.getData().globalOffset
)。但是,当我 运行 返回此命令时 (0, 0, 0)
。假设如果偏移量是正确的,Northing/Easting 到 Forge 的 X/Y 的单位缩放似乎与我的假设不同。
请问我上面的假设哪一部分是错误的?
- 如果我的单位假设有问题,Northing/Easting 单位如何转换为 Forge Viewer 的 X 和 Y 单位?
- 如果我的原点假设除了第一个假设之外还有错误,Forge 如何在查看器中设置原点?如果原点是基于Revit模型,设置的原点是指模型的测量point/Project基点吗?
- 在模型导数 API 执行模型转换时,是否对 Revit 模型及其元素进行了任何其他转换?
我正在使用 Forge Viewer API v6,Model Derivative API v2,并使用 Node.JS 作为 Forge Viewer API[=26= 的服务器]
如果我没理解错的话,您似乎使用项目坐标放置了 Revit 模型,但只提取了项目地址 属性。
如您所指出的 globalOffset
表示此值。
您可能需要根据模型的单位调整边界框,我建议勾选