在伪造查看器中保存和检索

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 文件中读取对象的函数。

【讨论】:

以上是关于在伪造查看器中保存和检索的主要内容,如果未能解决你的问题,请参考以下文章

在伪造查看器中恢复 sectionBox

伪造查看器在查看器中隔离多个模型

伪造查看器中未显示文件

模型伪造查看器中缺少 Autodesk.AEC.ModelData

在伪造查看器中仅呈现模型的少数元素

无法在伪造查看器中完全隐藏模型