首页 > 解决方案 > 有没有办法在editMode之外的查看器中显示标记?

问题描述

我正在寻找一种在不处于编辑模式时显示标记的方法。我希望能够在查看器中绘制标记,同时能够使用 edit2D。每次我调用leaveEditMode()标记扩展时,标记都会消失。如果有一种方法可以让它们即使在不处于编辑模式时也始终显示,那就可以了。我已经看到有关视图模式的内容,但是 enterViewMode() 必须是过时的,因为我找不到它。

另一种选择是在标记扩展中保留编辑模式,并通过更改顶部的绘图层/画布同时使用edit2D工具?我不知道这是否可能或如何去做。

任何想法都会有所帮助!

标签: autodesk-forgeautodesk-viewer

解决方案


好的,所以我想出了一个方法,我不确定会产生什么后果,但它似乎有效。这是一个经过编辑的代码片段,我快速拼凑在一起进行测试,它似乎可以工作。基本上我做的enterEditMode()leaveEditMode()已经做的相反。基本上markupsExtension.editModeSvgLayerNode保存所有标记的 svg 数据。当leaveEditMode()被调用时,它会清除markupsExtension.svg. 所以我只是在手动调用它后将其添加回来。我也在重新进入之前将其清除,因为它会自行完成并且可能会干扰。

if (buttonName === 'markup') {
    let markupsExtension = this.viewer.getExtension('Autodesk.Viewing.MarkupsCore');
    if (this.selectedButton === buttonName) {
        // Exit markups
        markupsExtension.leaveEditMode();

        // Shows the markup after leaving
        if (markupsExtension.editModeSvgLayerNode.svg) { 
            markupsExtension.svg.appendChild(markupsExtension.editModeSvgLayerNode.svg);
        }
    }
    else {
        this.selectedButton = buttonName;

        // Remove the svg set we added so it can redraw it in "enterEditMode()"
        if (markupsExtension.editModeSvgLayerNode && markupsExtension.editModeSvgLayerNode.svg.parentNode) {
            markupsExtension.svg.removeChild(markupsExtension.editModeSvgLayerNode.svg);
        }
        markupsExtension.enterEditMode();
    }
}


推荐阅读