如何在 forge viewer 中正确管理 dbId

How to manage dbId properly in forge viewer

在three.js中,id是自动生成的,但是查看器中对象的dbId似乎需要在为查看器创建新对象时手动插入,并且它需要是唯一的,它可以与查看器生成的对象或手动插入的对象具有相同的 dbId。我想问的是,生成随机唯一 dbId 的理想方法是什么,或者在 forge 查看器中管理 dbId 的正确方法是什么。

我一直在网上寻找,但我真正发现的唯一一点是它需要是唯一的

您可以为此使用 uuid 或 jQuery uuid() 库。另一种选择是拥有自己的实现,请参见下面的示例(如果您希望唯一 ID 持久化,这不是最佳方法,但这里不是您的情况)。

function getUUID() {
    var d = new Date().getTime();
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, 
    function(c) {
        var r = (d + Math.random()*16)%16 | 0;
        d = Math.floor(d/16);
        return (c=='x' ? r : (r&0x3|0x8)).toString(16);
    });
    return uuid;
};

SVF dbid 只是作为增量整数生成,因此如果您想遵循相同的方法,您可以获得最高的现有 dbid,并从那里开始递增,例如,如下所示:

const tree = viewer.model.getInstanceTree();
let nextAvailableID = tree.objectCount + 1;
function generateID() { return nextAvailableID++; }