viewableID和guid有什么区别?

时间:2018-10-15 20:55:49

标签: autodesk-forge autodesk-viewer

在伪造查看器中,对于进行气泡搜索的revit转换文件: viewerApp.bubble.search({'type':'geometry','role':'3d'}); 要么 viewerApp.getSelectedItem()

我得到一个像这样的元素节点:

children: (2) [a, a]
data: {guid: "a21582db-704b-df51-dd71-dbf8c12bcc1a", type: "geometry", role: "3d", name: "{3D}", viewableID: "6104055e-60d9-4037-9adc-cd38e10fcfba-00139c8e", …}
id: 8
isLeaf: true
parent: a {parent: a, id: 7, data: {…}, isLeaf: false, children: Array(14)}

我有该节点的 guid 和一个 viewableID 。 然后,要显示模型,我可以调用viewerApp.selectItemById(guid / viewableID),此操作将结束显示同一模型。

如果我要指向当前在查看器中看到的3D视图,以供将来参考(例如,在更新Revit文件之后),最合适的属性是guid或viewableID?

谢谢

1 个答案:

答案 0 :(得分:0)

作为我的研究,可见ID代表Revit API中Revit视图的唯一ID,但是我无法在可见气泡节点中找到Revit视图与guid之间的关系。我正在咨询我们的工程团队是否有一些见识。

viewerApp.selectItemById()用于通过其guid查询气泡节点,因此无法将可见的id传递给它。否则,它将不会返回任何内容作为我的调查。

要归档按可见ID选择的内容,建议您改用以下内容:

const bubbles = viewerApp.bubble.search({ 'viewableID': '6104055e-60d9-4037-9adc-cd38e10fcfba-00139c8e' });

viewerApp.selectItemById( bubbles[0].guid );

或扩展您自己的方法(已通过v6.2测试):

LMV.BubbleNode.prototype.findByViewableId = function (viewableId) {
    let item = null;

    this.traverse(function (node) {
        if (node.data.viewableID === viewableId) {
            item = node;
            return true;
        }
    });

    return item;
};

LMV.ViewingApplication.prototype.selectItemViewableId = function (viewableId, onItemSelectedCallback, onItemFailedToSelectCallback) {
    let item = this.myDocument.getRoot().findByViewableId(viewableId);
    if (item) {
        return this.selectItem(item, onItemSelectedCallback, onItemFailedToSelectCallback);
    }
    return false;
};

// -- You codes where you create the ViewingApplication instance