有没有办法在 editMode 之外的查看器中显示标记?

Is there a way to show markup in the viewer outside of editMode?

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

另一种选择是在标记扩展中保持编辑模式,同时通过更改哪个绘图 layer/canvas 在上面来同时使用 edit2D 工具?我不知道这是否可能或如何去做。

任何想法都会有所帮助!

好吧,我想出了一个办法,我不确定回收会是什么,但它似乎有效。 这是我快速拼凑起来进行测试的经过编辑的代码片段,它似乎可以正常工作。基本上我做了与 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();
    }
}