我们正在尝试使用带有getBulkProperties
方法的Forge Viewer导出元素的维度属性。对于Revit文件,该方法可以正常工作,但对于Navisworks文件,我们无法直接获得任何有用的属性。
在调查问题时,我们发现Navisworks文件的所有externalId
都采用斜杠分隔整数的格式(例如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 */