我们正在尝试使用 Forge Viewer with getBulkProperties
method 导出元素的尺寸属性。对于 Revit 文件,该方法可以正常工作,但对于 Navisworks 文件,我们无法直接获得任何有用的属性。
当我们调查这个问题时,我们发现所有的externalId
Navisworks 文件都是以斜线分隔的整数格式(例如1/2/2/1/1
)。如果我们从externalId
(在这种情况下,使用1/2/2/1
)中去掉最后一个整数,并获取相应元素的属性,那么我们可以获得一些有用的维度属性,并且该值与我们在桌面版 Navisworks 上看到的信息相匹配。
Navisworks 编码是否externalId
意味着树结构?(我假设在这种情况下1/2/2/1
是父母1/2/2/1/1
)。什么可以解释我们的问题,即通过去掉最后一个整数,我们可以获得我们需要的信息?这是获取尺寸属性的可靠方法吗?
在 Chrome 控制台中重现这一点的小实验:
selected = AutodeskViewer.getSelection()[0]
AutodeskViewer.getProperties(selected, console.log)
/* {dbId: Array(1), properties: Array(0), externalId: "12/6/0/0/0/0"} */
/* We don't have any useful properties here */
// Get External ID mapping
map = {}; AutodeskViewer.model.getExternalIdMapping(ext_map => {map = ext_map})
// Chopoff the last integer, and run getProperties again
AutodeskViewer.getProperties(map['12/6/0/0/0'], console.log)
/* {dbId: 78085, properties: Array(151), externalId: "12/6/0/0/0", name: "Floor"} */
/* We get useful dimensional properties */