【问题标题】:Is there a way to show markup in the viewer outside of editMode?有没有办法在editMode之外的查看器中显示标记?
【发布时间】:2021-09-01 11:28:06
【问题描述】:

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

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

任何想法都会有所帮助!

【问题讨论】:

  • 这听起来不像是一个编程问题,更像是一个“如何使用 Autodesk forge”?您是否问过 Autodesk 说可以在哪里找到社区支持?
  • 这是他们主要的社区支持。此外,我正在尝试查看器扩展的不常见行为(通常受到他们的鼓励),并询问了解查看器内部工作的人(锻造团队)存在哪些可能性。
  • 应用程序“请在 stackoverflow 上询问”是一件很奇怪的事情,但是嘿,如果他们是这么说的,希望他们真的看一下自己的标签。
  • 我同意哈哈。但这是他们所做的100%。他们很擅长回答,虽然这很酷。

标签: autodesk-forge autodesk-viewer


【解决方案1】:

好的,所以我想出了一个方法,我不确定会产生什么反作用,但它似乎有效。 这是一个经过编辑的代码 sn-p 我快速拼凑在一起进行测试,它似乎可以工作。基本上我做的与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();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 2021-11-23
    • 1970-01-01
    相关资源
    最近更新 更多