我最近将 Revit 模型上传到 Forge 平台。该模型定义了一个测量点(南北:0,东/西:0)
、一个基础项目点(北/西:149443,东/西:371248,真北角度:41.43°)
)和一个样板房。模型室包含一个坐标为的元素(N/S:149326,E/W:380492)
我试图理解模型内的这些点在上传到 Forge 平台后如何进行转换和翻译。
我使用这个函数(viewerApp.getCurrentViewer().model.getData().bbox
)来获取Forge Viewer中模型的边界框,并发现了这些:
分钟:(X:1229.5841064453125,Y:471.1938171386719,Z:-0.5249344110488892)
,和
最大:(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
位于相对于测量点的 149326 和 380492
处),或者位于项目上,则边界框的信息(X 和 Y
范围分别为 1229-1284 和 471-527
)似乎不包含房间模型内定义的元素的坐标基点(元素的 X & Y
位于 -117 & 9444
相对于项目基点)。
另外,引用this问题,模型坐标可能会通过此命令获取的全局偏移量进行偏移:(viewerApp.getCurrentViewer().model.getData().globalOffset
)。但是,当我运行此命令时,会返回 (0, 0, 0)
。假设如果偏移量在某种程度上是正确的,则北距/东距到 Forge 的 X/Y 的单位缩放比例似乎与我的假设不同。
我想问一下我上面的假设哪一部分是错误的?
- 如果我的单位假设有问题,北距/东距单位如何转换为 Forge Viewer 的 X 和 Y 单位?
- 如果除了第一个假设之外我的原点假设也是错误的,Forge 如何在查看器中设置原点?如果原点基于Revit模型,设置的原点是否指模型的测量点/项目基点?
- 模型派生 API 执行模型转换时是否会对 Revit 模型及其元素进行任何其他转换?
我正在使用 Forge Viewer API v6、Model Derivative API v2,并使用 Node.JS 作为 Forge Viewer API 的服务器
最佳答案
如果我理解正确,您似乎使用项目坐标放置了 Revit 模型,但仅提取了项目地址属性。
如 other answer 中所述您指出,模型以原点为中心,并且 globalOffset
指示该值。
您可能需要根据模型的单位调整边界框,我建议检查 this answer .
关于node.js - 了解Revit图元上传到Forge平台后的坐标系转换和引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51873847/