Search code examples
node.jsautodesk-forgeautodesk-viewerautodesk

How can we get DB ID's of a model for a given list of external id's?


I'm trying to hishlight a model object in forge viewer. We are saving list of external IDs at backend and when popping up the list at front end. When user picks any of that ID the modelobject from model loaded behind in forge viewer should get highlighted.

So we are finding a way to get DB IDs for external ID. Your help will be appreciated...

We tried this to go with this https://aps.autodesk.com/blog/get-dbid-externalid. Expected is to get DB ID for a given object's external ID


Solution

  • The blog post you mentioned should give you the way to do so.

    viewer.getModels()[0].getExternalIdMapping(data => console.log(data))
    

    So that you can get a dbId with given external id like this way

    let dbId = data[externalId];
    

    But as you can see, getExternalIdMapping doesn't return value directly. It requires a callback function. So,

    
    const getExternalIdMapping = (model) => {
        return new Promise((resolve, reject) => {
            model.getExternalIdMapping(
                map => resolve(map),
                error => reject(new Error(error))
            )
        });
    };
    
    let externalIdMap = await getExternalIdMapping( model );
    
    let dbId = externalIdMap[externalId];
    
    

    References: