在伪造查看器中保存和检索
Posted
技术标签:
【中文标题】在伪造查看器中保存和检索【英文标题】:Save and retrive in forge viewer 【发布时间】:2021-11-15 15:54:39 【问题描述】:我正在使用 Forge 查看器来显示 AutoCAD 文件。 还使用基于示例源的查看器上的绘图工具。
我将使用方框或球体绘制工具来绘制该区域。
我需要保存当前查看器,包括我在查看器上标记的框或球体区域,当再次加载相同文件时,已标记的区域应为默认绑定。
怎么可能,请帮帮我
建议任何方式来实现这个场景。
提前致谢。
【问题讨论】:
【参考方案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 文件中读取对象的函数。
【讨论】:
以上是关于在伪造查看器中保存和检索的主要内容,如果未能解决你的问题,请参考以下文章