鍍金池/ 問答/云計算  網(wǎng)絡(luò)安全  HTML/ Autodesk Forge Markup3D標(biāo)注,如何把上次添加的標(biāo)注信息,下

Autodesk Forge Markup3D標(biāo)注,如何把上次添加的標(biāo)注信息,下次進(jìn)入該模型后顯示出來?

Autodesk Forge3D標(biāo)注,用戶在該頁面,添加標(biāo)注信息,記錄下坐標(biāo)數(shù)據(jù),退出該頁面,等到該用戶下一次進(jìn)入該頁面,頁面重載的時候,如何顯示出用戶上次標(biāo)記的信息?

https://github.com/Autodesk-F...,用的是這個擴展包。

Markup3D.PinPoint.js:

constructor(viewer, worldPoint) {
    ......

    this.activateLock3d(viewer);
    this.setWorldPoint(worldPoint);

    this.timeoutId = 0;
  }

setWorldPoint({"x":32.04636390620801,"y":218.75012207031264,"z":13.843699405939578})為設(shè)置開始坐標(biāo)

Markup3D.Label.js:

onMouseMove (event) {

    if (this.parent.dragging) {

      this.parent.setLeaderEndPoint({
        x: event.clientX,
        y: event.clientY
      })
    }
  }

setLeaderEndPoint({"x":800, "y":500})設(shè)置結(jié)束坐標(biāo)

如何在頁面重載進(jìn)入的時候,執(zhí)行這方法,繪制自己的坐標(biāo)點?或者是有其它方式操作?

回答
編輯回答
尐潴豬

可以通過 viewer.getState() 獲取 Philippe MarkUp3D 的 Markup 信息,把這個信息記錄到數(shù)據(jù)庫里;之后重載模型后執(zhí)行 viewer.restoreState( viewstate ) 就可以回復(fù)了,原因是因為載入 MarkUp3D 擴展后,你的 viewState 會多了一個叫 Markup3D 的屬性,在回復(fù)時 MarkUp3D 擴展會去讀取這個屬性將 Markup 回復(fù)到畫面上,我的測試代碼如下:

var viewstate = viewer.getState();
viewer.restoreState( viewstate );

數(shù)據(jù)結(jié)構(gòu):
圖片描述

希望對您有幫助

2017年10月5日 07:29
編輯回答
朕略傻

存:var info = viewer.getState();

        var str = JSON.stringify(info);
        document.inputForm.elements["markup"].value = str;
        沒有問題。

為什么恢復(fù)的時候 無效果:
function onDocumentLoadSuccess(doc) {

        // A document contains references to 3D and 2D viewables.
        viewables = Autodesk.Viewing.Document.getSubItemsWithProperties(doc.getRootItem(), {'type':'geometry'}, true);
        if (viewables.length === 0){
            console.error('Document contains no viewables.');
            return;
        }
        // Choose any of the avialble viewables
        var initialViewable = viewables[0];
        var svfUrl = doc.getViewablePath(initialViewable);
        var modelOptions = {
            sharedPropertyDbPath: doc.getPropertyDbPath()
        };
        
        var viewerDiv = document.getElementById('MyViewerDiv');
        viewer = new Autodesk.Viewing.Private.GuiViewer3D(viewerDiv,{
            extensions: ['Autodesk.ADN.Viewing.Extension.BasicES2015','Viewing.Extension.Markup3D']
        });
        /**
        ,'Autodesk.Viewing.MarkupsGui' //2D標(biāo)記
        ,'Autodesk.ADN.Viewing.Extension.PropertyListPanel' //屬性菜單
        ,'Autodesk.ADN.Viewing.Extension.Material'
        ,'Viewing.Extension.Markup3D' //3D標(biāo)記
        ,'Autodesk.Billboard',
        ,'Autodesk.MyBillboardGui'
        */
        var errorCode = viewer.start();
        // Check for initialization errors.
        if (errorCode) {
            console.error('viewer.start() error - errorCode:' + errorCode);
            return;
        }
        // Choose any of the available viewables.
        indexViewable = 0;
        lmvDoc = doc;
        var markup = ${markup};
        alert(markup);
        if (markup!=null && markup != ""){
               viewer.restoreState(markup);
        // Everything is set up, load the model.
        loadModel();
    }
        
2018年4月1日 03:13