查看器的nodes
和fragids
是否代表有向图数据结构?节点和碎片数据结构
如果是这样,边缘如何表示?
两个节点之间的边界代表什么?
它总是代表一棵树还是可能有多个连接组件?
是否存在整数数组与它所表示的图形之间的视觉示例映射?
查看器的nodes
和fragids
是否代表有向图数据结构?节点和碎片数据结构
如果是这样,边缘如何表示?
两个节点之间的边界代表什么?
它总是代表一棵树还是可能有多个连接组件?
是否存在整数数组与它所表示的图形之间的视觉示例映射?
你的问题的本质是什么?你想达到什么目的?在处理具有大量组件的大型模型时,节点和片段正在数组中进行计算以节省内存。观众API公开的方法,可以让你通过给定一个节点ID节点的孩子或其片段重复:
-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文件发送到模型衍生物,则每个节点将代表一个装配体,一个子装配体或一个零件。树实例会将节点链接在一起以反映该结构。 fragmentIds表示网格。一个特定的对象可能是一个片段集合。例如,一个对象具有一个id(映射到原始设计模型唯一ID或GUID的唯一id),每个对象可能具有几何形状,这是一个片段集合。 在Forge模型和Forge查看器API中,几何体用三角形表示为网格。因此,与Brep表示不同,没有表面边缘,但只有三角形边缘。该轮廓显示在屏幕上,因为WEBGL渲染器在画布中呈现网格,但它不是每个Brep定义的边缘。如果你正在谈论有三角形边缘来定义网格,那么这是另一回事。 但是,Forge模型衍生API可以将您的模型导出为STEP,IGES,STL格式,您最终将获得Brep表示。 要查看节点,请从查看器显示对象树(或来自json响应的元数据),并查看网格(fragmentIds的集合),隔离节点。
那么节点的数据结构是什么?它是一个数组,但它是否具有像堆或二叉树这样的基础结构? https://en.wikipedia.org/wiki/Binary_tree#Arrays – shinzou
我试图找到更快的搜索方式,例如,通过到某个节点或某个位置的距离来找到最近的节点,我需要一个BFS的。 – shinzou