不用Forge Viewer的API获取模型的层次结构以及构件的DbId

一般,基于Forge Viewer 开发的的朋友须要获取到模型的层次结构以及构件的DbId,用于在本身的流程中构造相关对象和处理。尤为DbId,大部分Forge Viewer对象的操做,参数是输入的DbId,而用来惟一肯定构件的信息是一些其它的Id,例如ExternalId。因此,有时要作ID的映射,方便前端流程中,能够更快速的找到对应的构件。前端

一些朋友喜欢在Forge Viewer加载模型( 譬如在这个事件中Autodesk.Viewing.GEOMETRY_LOADED_EVENT)来遍历Viewer.InstanceTree (instanceTree.enumNodeChildren)获取DbId。对于简单模型,这个方法可用,而对于复杂模型,将形成较长时间才能完成遍历过程,影响流程的其它工做。数据库

另一篇文章中,介绍了如何经过Viewer.InstanceTree 直接拿到DbId的数组,而在本文中,咱们看看如何在模型转换后,无需前端加载模型就能获得模型的层次结构以及构件的DbId。segmentfault

你们知道,模型要能在Forge Viewer中显示,首先要经过Forge的【【模型数据提取和格式转换服务】来转换 ,英文叫作Model Derivative API。 一般,你们已经很熟悉这两个服务:api

发起转换的服务:POST https://developer.api.autodes...
查询转换状态GET https://developer.api.autodes...数组

而实际上,在转换程SVF数据包之后,该服务还有另外几个API,用于获取模型层次结构以及对象的属性。只须要:ui

  1. 发起服务获取metadata GET https://developer.api.autodes...
    此服务用来获得文件中全部model (3D,2D)的view id。这是一个guid。例如本例中,只有一个3D内容:

图片描述

  1. 发起服务请求获得模型层次结构
    GET https://developer.api.autodes...

此服务输入#1中获得的guid,请求获得对应内容的模型层次结构。注意:请求后,首先返回的是202,代表Forge接受了任务,即将开始操做。因此这里须要澄清一个误解,转换后的SVF数据包含有模型层次结构,对象属性等,但考虑到数据量较大,默认并无现成的Json形式的模型层次对象,属性的数据放在Forge云端。只有当开发者请求的时候,Forge才会从云端转换后的数据库提取出来,所以须要点时间操做完成。
等待片刻,继续发起请求,将返回200成功,这时就能够拿到Json形式的层次结构了,而这个信息就包括了DbIdspa

图片描述

若是是获取对象属性,只须要用这个过程也是相似的,只是请求端口是:
GET https://developer.api.autodes...对象

这也是为什么把Model Derivative API叫作 【模型数据提取和格式转换服务】。blog

相关文章
相关标签/搜索