【发布时间】:2017-08-13 00:04:43
【问题描述】:
查看器的nodes和fragids是否代表有向图数据结构?
如果是这样,边是如何表示的?
两个节点之间的边代表什么?
它总是代表一棵树还是可能有多个连接的组件?
整数数组与它所代表的图形之间是否存在可视化示例映射?
【问题讨论】:
标签: autodesk autodesk-forge autodesk-viewer
查看器的nodes和fragids是否代表有向图数据结构?
如果是这样,边是如何表示的?
两个节点之间的边代表什么?
它总是代表一棵树还是可能有多个连接的组件?
整数数组与它所代表的图形之间是否存在可视化示例映射?
【问题讨论】:
标签: autodesk autodesk-forge autodesk-viewer
您的问题的本质是什么?你想达到什么目的?在处理具有大量组件的大型模型时,节点和片段被压缩成一个数组以节省内存。查看器 API 公开的方法允许您在给定 nodeId 或其片段的情况下迭代节点的子节点:
-instanceTree.enumNodeChildren
-instanceTree.enumNodeFragments
var instanceTree = viewer.model.getData().instanceTree;
var rootId = this.rootId = instanceTree.getRootId();
var rootName = instanceTree.getNodeName(rootId);
var childCount = 0;
instanceTree.enumNodeChildren(rootId, function(childId) {
var childName = instanceTree.getNodeName(childId);
console.log(childName);
childCount++;
});
从根节点开始,你可以构建你想要的那种数据结构。 This article我写的可能会有帮助。
【讨论】:
节点代表一个对象,它位于代表原始设计模型中数据结构的树层次结构中。例如,如果您将 Inventor 文件发送到 Model Derivative,每个节点将代表一个装配体、子装配体或零件。树实例将节点链接在一起以反映该结构。 fragmentIds 表示网格。一个特定的对象可能是片段的集合。例如,一个对象有一个 id(映射到原始设计模型唯一 ID 或 GUID 的唯一 id),每个对象可能有一个几何图形,它是片段的集合。 在 Forge 模型和 Forge viewerAPI 中,几何图形表示为带有三角形的网格。因此,与 Brep 表示不同的是,没有表面边缘,只有三角形边缘。剪影显示在屏幕上,因为 WEBGL 渲染器在画布中渲染网格,但根据 Brep 定义,它不是边缘。如果您正在谈论用于定义网格的三角形边缘,那么这是另一回事。 但是,Forge Model Derivative API 可以将您的模型导出为 STEP、IGES、STL 格式,您最终将获得 Brep 表示。 要查看节点,请从查看器显示对象树(或来自 json 响应的元数据),要查看网格(fragmentId 的集合),请隔离节点。
【讨论】: