Autodesk Forge - 浏览器标签问题

Autodesk Forge - Browser labels problems

我在使用 AggregatedView 的 Forge 浏览器中遇到问题。 如果我在查看器中加载 3 个模型,在浏览器中出现标签“模型”3 次,而不是 revit 文件名 ("1.rvt", "2.rvt" e "3.rvt") ,如所附图片中所述forge browser。 是否可以改变行为(使用一些选项)? 我尝试使用“accessControlProperties”选项 (https://forge.autodesk.com/en/docs/viewer/v2/reference/javascript/document/#load-documentid-onsuccesscallback-onerrorcallback-accesscontrolproperties) 但没有任何变化。

TIA 桤木

function fetchForgeToken( callback ) {
      callback( "eyJhbGciOiJSUzI1NiIsImtpZCI6IlU3c0dGRldUTzlBekNhSzBqZURRM2dQZXBURVdWN2VhIn0.eyJzY29wZSI6WyJkYXRhOnJlYWQiLCJkYXRhOmNyZWF0ZSIsImRhdGE6d3JpdGUiLCJ2aWV3YWJsZXM6cmVhZCJdLCJjbGllbnRfaWQiOiJpSGVHMlRrbW9ucmF6TjUyS1JoRUdHWnZFTVU3RWg3dCIsImF1ZCI6Imh0dHBzOi8vYXV0b2Rlc2suY29tL2F1ZC9hand0ZXhwNjAiLCJqdGkiOiJpVEVVZTdYdVRqam9MVzFnNzQyYWNrREtkd244Q3ZLRHZLcXI1NzBrVkk2ZUR6dzRlNDc3N1BkeFNhelRCWWo3IiwiZXhwIjoxNjI3MzAzNjQ0fQ.VNZZHhuo4fGLsy-StB_YLkEtFNphPuuTDCJt-NtAvzGOD8_dsRjj6szBm9-rXNqKIBUVeg3DkYHG3jfSFQeAN_ie76H2_fVs-zmHMelNi6jZBvyM6DGoE62068TvKpEK9_8po__YstQ1JygEuUyiqivXE0-RqYEjd15wNrb1PUqVJTA-Ug4lEEIGmFNyhQsW861MwcRklkcHzhC9gDijQKqcDAqC_udueWZ5Bh48SPtNNJe4bXFwWcWqEipom-apyArd1nLw9-fpmNd-qPgSQJwNo_0sk-wEIn1Zl6Uq8k67f1bBXBrg7XfUAS2-_M_YOTrHZFl6QVEQ-fvKr4PR9g", "2000" );
    }

    function launchViewer( models ) {
      if( !models || models.length <= 0 )
        return console.error( 'Empty model input' );

      const options = {
        env: 'AutodeskProduction',
        getAccessToken: fetchForgeToken
      };

      const options3d = {
        viewerConfig: {
          disableBimWalkInfoIcon: true
        }
      };

      function loadManifest( documentId, documentName ) {
        return new Promise(( resolve, reject ) => {
          const onDocumentLoadSuccess = ( doc ) => {
            //doc.downloadAecModelData();
            doc.downloadAecModelData(() => resolve(doc));
          };
          console.log("doc.id = " + documentId);
          //var accessControlProperties = {name: documentName};
          var accessControlProperties = {modelNameOverride: documentName};
          //https://forge.autodesk.com/en/docs/viewer/v2/reference/javascript/document/#load-documentid-onsuccesscallback-onerrorcallback-accesscontrolproperties
          //oppure
          //https://forge.autodesk.com/blog/customizing-model-browser-custom-label-behavior-styling-and-data-sources
          Autodesk.Viewing.Document.load( documentId, onDocumentLoadSuccess, reject, accessControlProperties );
        });
      }

      Autodesk.Viewing.Initializer( options, function() {
        //get the viewer div
        const viewerDiv = document.getElementById( 'viewer' );

        //initialize the viewer object
        const view = new Autodesk.Viewing.AggregatedView();
        view.init( viewerDiv, options3d );

        const viewer = view.viewer;

        const tasks = [];
        models.forEach( md => tasks.push( loadManifest( md.urn, md.name ) ) );


        Promise.all(tasks)
                .then( docs =>  Promise.resolve( docs.map( doc => {
                  const bubbles = doc.getRoot().search({type:'geometry', role: '3d'});
                  const bubble = bubbles[0];
                  if( !bubble ) return null;
                                                                  
                  return bubble;
                })))
                .then( bubbles => view.setNodes( bubbles ) );
      });
    }

    const models = [

{ 名字: '1.rvt', 瓮: 'urn:dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLm5kLXcyZUNSU3ktdHhHTmZ6OWo4bFE/dmVyc2lvbj0x' }, { 名称:'2.rvt',骨灰盒:'urn:dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLkxHVDFOSW1nUlgtZnN0cnhMZUU5aUE/dmVyc2lvbj0x'}, { 名字:'3.rvt',骨灰盒:'urn:dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLjhTbE1zOGNWUllTenV1TGR6SXJiWHc/dmVyc2lvbj0x' } ];

    launchViewer( models.concat() );

要分配modelNameOverride,我们需要利用getCustomLoadOptions。例如,请参见下面的代码片段:

const options3d = {
  viewerConfig: {
    disableBimWalkInfoIcon: true,
  },
  getCustomLoadOptions: (bubble) => {
    const modelName = bubble.getDocument().getRoot().search({ role: "viewable" })[0].data.name;
    console.log(modelName);

    let loadOptions = { modelNameOverride: modelName };
    return loadOptions;
  }
};

view.init( viewerDiv, options3d );