【问题标题】:PixelCompare method issuePixelCompare 方法问题
【发布时间】:2021-11-10 06:29:08
【问题描述】:

我对 PixelCompare 扩展有疑问。

在这里,我正在加载它:

viewer1 = new Autodesk.Viewing.GuiViewer3D(document.getElementById('forgeViewer1'), { extensions: [ 'GoogleMapsLocator', 'Autodesk.AEC.Minimap3DExtension','Autodesk.AEC.LevelsExtension','Autodesk.DocumentBrowser','Autodesk.ToolbarExtension' ,'Autodesk.Viewing.PixelCompare'] });

然后我尝试使用它:

viewer1.compareTwoModels(data[0],data[1]);

Data 是一个包含模型的数组。

我收到“viewer.compareTwoModels 不是函数”错误,这意味着函数名称中存在拼写错误或不存在。

无法访问扩展存储库,我无法确认此方法确实存在。

我不知道该怎么做,欢迎任何帮助。

编辑:

此 sn-p 将文档加载到查看器中以显示它。

Autodesk.Viewing.Document.load(`urn:${urns[index]}`, function(doc){
var viewables=doc.getRoot().getDefaultGeometry();
doc.downloadAecModelData();
viewer1.loadDocumentNode(doc, viewables, {
placementTransform: (new THREE.Matrix4()).setPosition({ x: increment, y: 0, z: 0 }),
keepCurrentModels: true,
globalOffset: { x: 0, y: 0, z: 0 }
                        }).then(i => {
                            if(urns.length > 1) {
                                $(viewer1.toolbar.container).find('#toolbarXLS').hide();
                            }
                        });
increment += parseInt(sessionStorage.getItem('padding1'));
                        
                    });

然后,我用它来像素比较它:

    viewer1.loadModel('urn:dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLmwwLS10X0k5UkVhbnNWRXBuLXl5Zmc_dmVyc2lvbj0x', {}, (model1) => {
                    console.log('test load model :' + model1)
                viewer1.loadModel('urn:dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLmxXX0dONUJNVDBxdDRuOGZmRWx4SkE_dmVyc2lvbj0x', {}, async (model2) => {
            
                const pcExt = await viewer1.loadExtension('Autodesk.Viewing.PixelCompare');
                pcExt.compareTwoModels(model1, model2);
                console.log()
          });
        });

我收到一个即时“文件扩展名不受支持”错误,可能是在第一个参数上代码未达到 console.log('test load model :' + model1)

【问题讨论】:

    标签: autodesk-forge


    【解决方案1】:

    compareTwoModels 函数是扩展对象的一部分,而不是查看器 - 请参阅 PixelCompare extension

    function launchViewer() {
      var options = {
        env: 'Local'
      };
    
      Autodesk.Viewing.Initializer(options, () => {
        viewer = new Autodesk.Viewing.GuiViewer3D(
          document.getElementById('forgeViewer'), {}
        );
    
        viewer.start();
    
        // Load 2 sheets
        viewer.loadModel('scissors1.pdf', {}, (model1) => {
          viewer.loadModel('scissors2.pdf', {}, async (model2) => {
            // Compare them 
            const pcExt = await viewer.loadExtension('Autodesk.Viewing.PixelCompare');
            pcExt.compareTwoModels(model1, model2);
          });
        });
      });
    }
    

    【讨论】:

    • 感谢您的回答。我确认它已正确加载并且该方法存在。但是,我使用的是 BIM360,所以我不能像你一样直接使用该文件。我正在尝试使用 svf 文件的 urn 作为参数。为了得到这个 svfUrn,我调用了 {urn}/manifest 端点。这是正确的方法吗?
    • 您可以将要显示的给定文件版本的 urn 直接传递给查看器 - 请在此处查看 ForgeViewer.js learnforge.autodesk.io/#/viewer/3legged/ui
    • 我想我以前做过。我刚刚通过了当前 pdf 文件的 urn(例如:dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLmxXX0dONUJNVDBxdDRuOGZmRWx4SkE_dmVyc2lvbj0y),但它引发了“不支持的文件扩展名”错误。因此,我尝试使用 svf urn(它似乎也是 forge.autodesk.com/en/docs/viewer/v7/change_history/… 中建议的参数)。提前致谢。
    • 你打电话给 Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);如我链接的示例所示,您是否将“urn:”添加到“dXJu...”?
    • 是的,我做了,我编辑了我的问题给你看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2015-06-23
    • 2019-09-07
    • 1970-01-01
    相关资源
    最近更新 更多