我正在尝试将 Autodesk a360 查看器集成到我的 Web 应用程序中。但是,我们希望提取所选对象的对象属性,以从我们的数据库中获取附加信息。例如,当用户点击一扇门时,我们想从对象属性中提取这扇门的标签 id,并使用这个标签 id 执行一些 sql 查询。
我见过autodesk forge,但我不太确定它是矫枉过正还是它的方向。
我正在尝试将 Autodesk a360 查看器集成到我的 Web 应用程序中。但是,我们希望提取所选对象的对象属性,以从我们的数据库中获取附加信息。例如,当用户点击一扇门时,我们想从对象属性中提取这扇门的标签 id,并使用这个标签 id 执行一些 sql 查询。
我见过autodesk forge,但我不太确定它是矫枉过正还是它的方向。
是的,您想要实现的目标在 Forge 中完全可以实现。实际上,有两种方法可以获取对象的属性。无论是从服务器端(模型派生 API)还是客户端(Forge Viewer API),我都在这里列出,以防您感兴趣。但是对于您的情况,我认为使用 Forge Viewer API 的第二种方式更合适。
第一个解决方案,使用 Model Derivative API,它提供以下 3 个 API,第一个 API 用于获取设计模型的模型视图 ID 列表。然后,您可以使用第二个 API 获取模型视图的对象分层列表。使用最后一个 API,您可以获得由 guid 表示的指定对象的所有属性。
有关以下 3 个 API 的详细信息,请查看模型衍生 API。
获取:瓮/元数据
GET :urn/元数据/:guid
GET :urn/元数据/:guid/properties
第二种解决方案是使用 Forge Viewer API,首先,您需要注册一个 SELECTION_CHANGED_EVENT 事件,在该事件中,很容易获取所选对象的 dbId,并使用 API getProperties 如下获取所需的所有属性,然后执行根据需要使用此属性进行一些 sql 查询。代码片段如下,如果您有兴趣,我有一个小示例代码来演示解决方案。
currentModel.getProperties(dbId, function(result) {
console.log("List properties of DbId:" + dbId);
if (result.properties) {
result.properties.forEach(function(prop) {
// call API to perform sql query with the property you are interested
console.log(prop);
});
};
});
希望能帮助到你。