【问题标题】:Save and retrive in forge viewer在伪造查看器中保存和检索
【发布时间】:2021-11-15 15:54:39
【问题描述】:

我正在使用 Forge 查看器来显示 AutoCAD 文件。 还使用基于示例源的查看器上的绘图工具。

我将使用方框或球体绘制工具来绘制该区域。

我需要保存当前查看器,包括我在查看器上标记的框或球体区域,当再次加载相同文件时,已标记的区域应为默认绑定。

怎么可能,请帮帮我

建议任何方式来实现这个场景。

提前致谢。

【问题讨论】:

    标签: autodesk-forge autodesk forge


    【解决方案1】:

    您可以通过 2 个步骤来做到这一点。

    首先,利用Object3D.toJSON()方法。

    让我们总结一个从我们的网格生成 JSON 对象的示例:

    //here we create a BoxGeometry
    let geom = new THREE.BufferGeometry().fromGeometry(new THREE.BoxGeometry(100,100,100));
    let phongMaterial = new THREE.MeshPhongMaterial({
      color: new THREE.Color(1, 0, 0)
    });
    let mesh = new THREE.Mesh(geom, phongMaterial);
    
    if (!viewer.overlays.hasScene("CustomScene")) {
      viewer.overlays.addScene("CustomScene");
    }
    viewer.overlays.addMesh(mesh, "CustomScene");
    viewer.impl.sceneUpdated(true);
    
    //here we generate the JSON from the mesh and download it
    let jsonObject = JSON.stringify(mesh.toJSON())
    download(jsonObject, 'Box.json', 'text/plain');
    

    下载功能可以在here找到。

    下一步是从保存的 JSON 生成盒子。

    为此,我们将使用ObjectLoader.parse 方法。

    再一次,我们可以总结在下面的代码中:

    //here we read the JSON object from our generated file
    var request = new XMLHttpRequest();
    request.open("GET", "js/Box.json", false);
    request.send(null)
    var my_JSON_object = JSON.parse(request.responseText);
    
    //here we generate the mesh
    let mesh = new THREE.ObjectLoader().parse(my_JSON_object);
    
    if (!viewer.overlays.hasScene("CustomScene")) {
      viewer.overlays.addScene("CustomScene");
    }
    viewer.overlays.addMesh(mesh, "CustomScene");
    viewer.impl.sceneUpdated(true);
    

    请参阅here 了解从 JSON 文件中读取对象的函数。

    【讨论】:

      猜你喜欢
      • 2019-11-28
      • 2019-08-30
      • 1970-01-01
      • 2018-06-28
      • 2018-10-22
      • 2019-05-15
      • 2021-12-31
      • 2021-11-07
      • 2018-01-23
      相关资源
      最近更新 更多