You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何手动管理MarkupsCore图层,实现绘图工具的可预测行为?

手动创建与管理MarkupsCore图层的方案

针对MarkupsCore图层行为不稳定的问题,你可以直接操作其内部的MarkupsLayer实例实现可控的图层管理,以下是具体方法:

1. 手动创建图层

MarkupsCore的图层本质是MarkupsLayer对象,你可以直接实例化并加入图层列表:

// 获取MarkupsCore实例
const markupsCore = viewer.getExtension('Autodesk.Viewing.MarkupsCore');

// 实例化新图层(参数:核心实例、图层ID、图层名称)
const customLayer = new Autodesk.Viewing.Extensions.Markups.Core.MarkupsLayer(
    markupsCore,
    'my-custom-layer-01',
    '我的自定义图层'
);

// 添加到图层列表
markupsCore.layers.push(customLayer);

// 设置为当前激活图层
markupsCore.setActiveLayer(customLayer);

// 刷新视图
markupsCore.render();

新建绘图前执行这段代码,就能确保存在稳定的绘制图层,避免无图层状态。

2. 手动管理图层状态

激活指定图层

// 通过ID查找目标图层
const targetLayer = markupsCore.layers.find(layer => layer.id === 'my-custom-layer-01');
if (targetLayer) {
    markupsCore.setActiveLayer(targetLayer);
    markupsCore.render();
}

删除指定图层

// 过滤掉要删除的图层
markupsCore.layers = markupsCore.layers.filter(layer => layer.id !== 'my-custom-layer-01');
markupsCore.render();

保存/加载单个图层

  • 保存:提取图层的JSON状态
    const layerState = customLayer.toJSON();
    // 将layerState存储到本地或后端
    
  • 加载:从JSON恢复图层
    const loadedLayer = markupsCore.loadLayerFromJSON(savedLayerState);
    markupsCore.layers.push(loadedLayer);
    markupsCore.render();
    

3. 规避自动图层异常

  • 绘制前强制检查图层:在调用绘制工具(如startCreate)前,判断当前是否有激活图层,没有则手动创建:
    function ensureActiveLayer() {
        if (!markupsCore.getActiveLayer()) {
            // 执行前文的创建图层逻辑
        }
    }
    // 比如调用矩形工具前先执行检查
    ensureActiveLayer();
    markupsCore.startCreate('rectangle');
    
  • 拦截图层删除操作:监听layerRemoved事件,对关键图层进行保护:
    markupsCore.addEventListener('layerRemoved', (event) => {
        const protectedLayerIds = ['my-custom-layer-01'];
        if (protectedLayerIds.includes(event.layer.id)) {
            // 重新添加被误删的图层
            markupsCore.layers.push(event.layer);
            markupsCore.setActiveLayer(event.layer);
            markupsCore.render();
        }
    });
    

注意:MarkupsCore的内部API(如layers数组、MarkupsLayer构造函数)可能随Viewer版本略有调整,测试时请匹配当前使用的Viewer版本。

内容的提问来源于stack exchange,提问作者Tiago Raposo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 16:52:21