autodesk-forge - 有没有办法在editMode之外的查看器中显示标记?
问题描述
我正在寻找一种在不处于编辑模式时显示标记的方法。我希望能够在查看器中绘制标记,同时能够使用 edit2D。每次我调用leaveEditMode()
标记扩展时,标记都会消失。如果有一种方法可以让它们即使在不处于编辑模式时也始终显示,那就可以了。我已经看到有关视图模式的内容,但是 enterViewMode() 必须是过时的,因为我找不到它。
另一种选择是在标记扩展中保留编辑模式,并通过更改顶部的绘图层/画布同时使用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();
}
}
推荐阅读
- spring-boot - Hikari 池连接已删除,并打开新池
- excel - Excel用户定义函数接受单元格范围的命名范围intsead
- c# - 如何在 C# 中过滤 DataGridView 中的数据?
- sql - POSTGRESQL 中的 ORACLE NUMBER(*,0) 等效项
- r - 在 R 中绘制 3D 绘图
- android-studio - 如何在videoview中播放流视频
- visual-studio-code - 关于line length linter 80 characters的问题
- rust - 当 Rust 中有太多变体时,使用枚举建模 API JSON 响应
- spring-boot - Spring Boot批量使用只读帐户导出数据
- ios - onMessage 在 iOS 上运行多个异步任务