将 Navisworks 模型转换为 SVF 时,
model.getData().metadata['custom values'].angleToTrueNorth
中的angleToTrueNorth 值不可用。我还能在哪里找到它?
不幸的是,
angleToTrueNorth
仅适用于 Revit,据我所知。
model.getData().metadata['custom values'].angleToTrueNorth
但是,如果您的 NWC/NWD 模型是在去年 4 月之后使用共享坐标从 RVT 导出的,那么我们可以根据清单中的 nwModelToWorldTransform
转换来计算。
"derivatives": [
{
"name": "racbasicsampleproject.nwc",
"hasThumbnail": "true",
"status": "success",
"progress": "complete",
"properties": {
"Document Information": {
"Navisworks File Creator": "nwexportrevit",
"nwModelToWorldTransform": [
0.7986355100472902,
0.6018150231520518,
0,
-0.6018150231520518,
0.7986355100472902,
0,
0,
0,
1,
-65.03805139774867,
-61.70701987942478,
0
]
},
///...
以下是我们如何通过变换计算与真北的角度:
let model = viewer.getAllModels()[0];
let doc = model.getDocumentNode().getDocument();
let docRoot = doc.getRoot();
let docInfo = docRoot.children[0].data.properties['Document Information'];
let angle = THREE.Math.radToDeg(Math.acos( docInfo.nwModelToWorldTransform[0] ))
let angelToTrueNorth = -1.0 * angle; //!<<< The angelToTrueNorth is clockwise, but the angle in math is counterclockwise
因此,以上面的nwModelToWorldTransform
变换为例,计算出的angelToTrueNorth将是:
let angle = THREE.Math.radToDeg(Math.acos( 0.7986355100472902 )); //<<< 37°
let angelToTrueNorth = -1.0 * 37; //!<<< -37° = 323°