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

发布于 2022-09-07 15:49:06 字数 1000 浏览 21 评论 0

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})设置结束坐标

如何在页面重载进入的时候,执行这方法,绘制自己的坐标点?或者是有其它方式操作?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心头的小情儿 2022-09-14 15:49:06

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

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

数据结构:
图片描述

希望对您有帮助

假面具 2022-09-14 15:49:06

存: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();
    }
        
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文