【问题标题】:Find custom point coordinates with Forge使用 Forge 查找自定义点坐标
【发布时间】:2018-08-23 07:35:58
【问题描述】:

我使用 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);})

它返回一个非常长的字段名称列表(如果认为就是这样的话)。 当我尝试将其放入变量中时,它会返回“未定义”。所以无论如何我都无法访问里面的内容。

也尝试过 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]"
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

}

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

有人可以帮忙吗?

【问题讨论】:

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


    【解决方案1】:

    NOP_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 结合使用。

    【讨论】:

    • 确实,我在访问 dbId 时遇到了麻烦,但是是的,它工作正常(忘记之前发布我的答案)。
    • 如果我将 NOP_VIEWER 用作代码中的变量,我仍然会得到“未定义”值。我正在使用 Typescript,所以我尝试像这样声明它: var NOP_VIEWER: any = {};甚至像这样: var NOP_VIEWER = (window as any).NOP_VIEWER;但没有任何效果。你知道问题可能是什么吗?
    猜你喜欢
    • 2022-11-01
    • 2018-11-08
    • 2021-07-14
    • 2021-01-10
    • 2018-03-23
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    相关资源
    最近更新 更多