我需要对Autodesk Viewer进行一些自定义,并且要做到这一点,我需要了解与存储库文件的关系如何工作,要了解这些关系,我还使用了伪造衍生API提供的model.sdb。 (为我们提供了json文件)。
我确定了6个文件:
objects_ids.json.gz
objects_attrs.json.gz
objects_avs.json.gz
objects_vals.json.gz
objects_offs.json.gz
objects_viewables.json.gz
其中一些文件很容易理解:
objects_ids.json.gz -此文件与_objecs_id表具有相同的内容,基本上是外部ID和dbid(即行号-1)。
objects_attrs.json.gz -同样,此文件等效于sdb数据库上的表,非常易于阅读。在这里,我们定义了模型查看器中使用的属性。它具有以下“列”:id,名称,类别,data_type,data_type_context,描述,display_name,flags,display_precision
objects_vals.json.gz 与_objects_val表等效,这里我们有两件事,即ID和VALUE(用于上一个json文档中定义的属性)。
直到现在一切都变得很容易...我们拥有对象标识,属性及其可能的值,但是问题是,如何使它们一起工作?现在它们是孤立的,所以它们现在毫无用处。我需要将对象标识与其属性及其值相关联。
要在model.mdb中做到这一点,我们可以将表与主关系表连接起来:_objects_eav 它具有entity_id,attribute_id和value_id。因此,要加入数据并获得我们需要的信息,我们可以简单地做到:
`SELECT * FROM _objects_id
INNER JOIN _objects_eav ON _objects_id.id = _objects_eav.entity_id
INNER JOIN _objects_attr ON _objects_attr.id = _objects_eav.attribute_id
INNER JOIN _objects_val ON _objects_val.id = _objects_eav.value_id`
但是没有与_objects_eav表等效的json文件...
相反,我们有以下文件 objects_avs.json.gz,objects_offs.json.gz,objects_viewables.json.gz
现在,我不知道如何在这些文件之间合并数据并获取所需的全部信息。有什么强硬的东西吗?
其他想法: 另外,我可以使用model.sdb来访问数据,但是我更喜欢使用JSON,因为它们的大小要小得多(比model.sdb小30倍,这是一个很大的数目)。
我还可以使用JavaScript中查看器对象提供的方法来获取一些数据,但是随后我会被查看器提供的方法和属性所困扰,不幸的是它们不能满足我的所有要求。
然后可以选择使用模型衍生API,但是我的要求之一是能够处理断开连接的数据(脱机)。
答案 0 :(得分:1)
。单个.json.gz文件包含以下内容:
objects_ids.json.gz
-对象ID objects_offs.json.gz
-对于objects_ids.json.gz
中相同索引处的每个对象ID,此数组在objects_avs.json.gz
中的属性值列表中定义一个偏移量objects_avs.json.gz
-包含属性值对,它们基本上偏移为objects_attrs.json.gz
和objects_vals.json.gz
objects_attrs.json.gz
-包含不同的属性(我相信它们及其元数据)objects_vals.json.gz
-包含重复数据删除的值话虽如此,我仍然建议使用sqlite格式(即使更大),而不要使用专有的.json.gz文件,因为这些文件确实是供Forge Viewer使用的,并且可能会在未来。