使用Forge查找自定义点坐标

时间:2018-03-14 16:46:59

标签: reactjs properties coordinates autodesk-forge database-metadata

我使用Autodesk Forge(node.js,javascript(使用它一点),React(全新!))。 我有一个矩形3D对象。在每个角落都是一个具有真实世界坐标(lat,lon,z)的点。

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

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

起初,我以为他们会在:

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

但没有!

enter image description here

这是我在观众中可以看到的图片。由于我可以在属性面板中看到它们,我应该可以访问它们了!

我试着用这个:

{
"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]"
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

它返回了一个非常长的字段名称列表(如果认为是这样)。 当我尝试将其放入变量时,它返回'undefined'。所以无论如何我都无法访问内部的内容。

还尝试了getProperties(),但我认为我没有以正确的方式编写它,它也不起作用。

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

{{1}}

}

但我无法找到一种方法来访问积分的名称或价值!

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

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():这会收到一个元素数组,只返回您指定的属性:

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)或enumerating leaf nodes结合使用。