为了账号安全,请及时绑定邮箱和手机立即绑定

Autodesk Forge Markup3D标注,如何把上次添加的标注信息,下次进入该模型后显示

Autodesk Forge Markup3D标注,如何把上次添加的标注信息,下次进入该模型后显示

Helenr 2019-03-15 14:15:51
Autodesk Forge3D标注,用户在该页面,添加标注信息,记录下坐标数据,退出该页面,等到该用户下一次进入该页面,页面重载的时候,如何显示出用户上次标记的信息?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})为设置开始坐标Markup3D.Label.js:onMouseMove (event) {    if (this.parent.dragging) {      this.parent.setLeaderEndPoint({        x: event.clientX,        y: event.clientY      })    }  }setLeaderEndPoint({"x":800, "y":500})设置结束坐标如何在页面重载进入的时候,执行这方法,绘制自己的坐标点?或者是有其它方式操作?
查看完整描述

2 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

可以通过 viewer.getState() 获取 Philippe MarkUp3D 的 Markup 信息,把这个信息记录到数据库里;之后重载模型后执行 viewer.restoreState( viewstate ) 就可以回复了,原因是因为载入 MarkUp3D 扩展后,你的 viewState 会多了一个叫 Markup3D 的属性,在回复时 MarkUp3D 扩展会去读取这个属性将 Markup 回复到画面上,我的测试代码如下:


var viewstate = viewer.getState();

viewer.restoreState( viewstate );

数据结构:

https://img1.sycdn.imooc.com//5cac3bb20001cc3508000238.jpg

希望对您有帮助


查看完整回答
反对 回复 2019-04-09
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

存:var info = viewer.getState();


        var str = JSON.stringify(info);

        document.inputForm.elements["markup"].value = str;

        没有问题。

为什么恢复的时候 无效果:

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标记

        ,'Autodesk.ADN.Viewing.Extension.PropertyListPanel' //属性菜单

        ,'Autodesk.ADN.Viewing.Extension.Material'

        ,'Viewing.Extension.Markup3D' //3D标记

        ,'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();

    }


查看完整回答
反对 回复 2019-04-09
  • 2 回答
  • 0 关注
  • 1133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信