使用 Forge 查找自定义点坐标

Find custom point coordinates with Forge

我使用 Autodesk Forge(node.js、javascript(用过一点)、React(全新!))。 我有一个矩形 3D 对象。每个角都有一个具有真实世界坐标(纬度、经度、z)的点。

这些坐标可以通过查看器中的 属性 面板显示。

我想从代码中访问它们,但我无法在任何地方找到它们。

起初,我以为他们会在:

window.NOP_VIEWER.model.getData().metadata

但什么都没有!

这是我在查看器中看到的图片。因为我可以在 属性 面板中看到它们,所以我应该可以访问它们!

我试过用这个:

window.NOP_VIEWER.model.getBulkProperties('1', 
function(properties){console.log(properties);},
function(error){console.log(error);})

它 returns 一个长得惊人的字段名称列表(如果认为就是这样的话)。 当我尝试将它放入变量时,它 returns 'undefined'。所以无论如何我都无法访问里面的内容。

也试过 getProperties() 但我觉得我写的不对,也没用。

我也尝试了 som GET 请求来查找对象属性,但我得到的只是这个:

{
"data": {
    "type": "objects",
    "objects": [
        {
            "objectid": 1,
            "name": "Model",
            "objects": [
                {
                    "objectid": 2691,
                    "name": "Sols",
                    "objects": [
                        {
                            "objectid": 2692,
                            "name": "Sol",
                            "objects": [
                                {
                                    "objectid": 2693,
                                    "name": "Dalle en béton - 250 mm",
                                    "objects": [
                                        {
                                            "objectid": 2694,
                                            "name": "Sol [236041]"
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                },
                {
                    "objectid": 2711,
                    "name": "Modèles génériques",
                    "objects": [
                        {
                            "objectid": 2712,
                            "name": "Point_Georeferencement",
                            "objects": [
                                {
                                    "objectid": 2713,
                                    "name": "Point_Georeferencement",
                                    "objects": [
                                        {
                                            "objectid": 2714,
                                            "name": "Point_Georeferencement [236831]"
                                        },
                                        {
                                            "objectid": 2715,
                                            "name": "Point_Georeferencement [236836]"
                                        },
                                        {
                                            "objectid": 2716,
                                            "name": "Point_Georeferencement [236843]"
                                        },
                                        {
                                            "objectid": 2717,
                                            "name": "Point_Georeferencement [236846]"
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

}

但我找不到访问点名称或值的方法!

有人可以帮忙吗?

NOP_VIEWER是一个全局变量,用来访问当前的Viewer。从那里你可以打电话:

.getProperties():这需要 1 个 dbId,一种简单的尝试方法是:

NOP_VIEWER.addEventListener(Autodesk.Viewing.SELECTION_CHANGED_EVENT, function (e) {
    e.dbIdArray.forEach(function (dbId) {
        NOP_VIEWER.getProperty(dbId, function (props) {
            console.log(props)
        })
    })
});

.model.getBulkProperties():这接收到一个元素数组,并且 return 您指定的属性:

NOP_VIEWER.addEventListener(Autodesk.Viewing.SELECTION_CHANGED_EVENT, function (e) {
    viewer.model.getBulkProperties(e.dbIdArray, ['RefX', 'RefY'], function (elements) {
        elements.forEach(function(element){
            console.log(element);
        })
    })
});

您也可以将它与 .search() 结合使用(see here) or by enumerating leaf nodes