【问题标题】:Nodes and fragids data structre节点和脆弱数据结构
【发布时间】:2017-08-13 00:04:43
【问题描述】:

查看器的nodesfragids是否代表有向图数据结构?

如果是这样,边是如何表示的?

两个节点之间的边代表什么?

它总是代表一棵树还是可能有多个连接的组件?

整数数组与它所代表的图形之间是否存在可视化示例映射?

【问题讨论】:

    标签: autodesk autodesk-forge autodesk-viewer


    【解决方案1】:

    您的问题的本质是什么?你想达到什么目的?在处理具有大量组件的大型模型时,节点和片段被压缩成一个数组以节省内存。查看器 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我写的可能会有帮助。

    【讨论】:

    • 我正在尝试寻找更快搜索的方法,例如,通过到某个节点或某个位置的距离找到最近的节点,我需要一个 BFS。
    【解决方案2】:

    节点代表一个对象,它位于代表原始设计模型中数据结构的树层次结构中。例如,如果您将 Inventor 文件发送到 Model Derivative,每个节点将代表一个装配体、子装配体或零件。树实例将节点链接在一起以反映该结构。 fragmentIds 表示网格。一个特定的对象可能是片段的集合。例如,一个对象有一个 id(映射到原始设计模型唯一 ID 或 GUID 的唯一 id),每个对象可能有一个几何图形,它是片段的集合。 在 Forge 模型和 Forge viewerAPI 中,几何图形表示为带有三角形的网格。因此,与 Brep 表示不同的是,没有表面边缘,只有三角形边缘。剪影显示在屏幕上,因为 WEBGL 渲染器在画布中渲染网格,但根据 Brep 定义,它不是边缘。如果您正在谈论用于定义网格的三角形边缘,那么这是另一回事。 但是,Forge Model Derivative API 可以将您的模型导出为 STEP、IGES、STL 格式,您最终将获得 Brep 表示。 要查看节点,请从查看器显示对象树(或来自 json 响应的元数据),要查看网格(fragmentId 的集合),请隔离节点。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2010-10-05
    • 2014-08-03
    • 1970-01-01
    相关资源
    最近更新 更多