Мне нужно реализовать некоторые настройки в средстве просмотра Autodesk, и для этого мне нужно понять, как работают отношения с файлами репозитория, чтобы понять эти отношения, я также использую модель.sdb, предоставляемую forge производным-api. (то же самое, что дает нам файлы 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 и dbids (номер строки -1).
objects_attrs.json. gz - Опять же, этот файл эквивалентен таблице в базе данных sdb, очень легко читаемой. Здесь у нас есть определение атрибутов, используемых в просмотрщике моделей. Он имеет следующие «столбцы»: идентификатор, имя, категория, тип_данных, тип_данных_контекста, описание, имя_отображения, флаги, 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`
Но не существует файла json, эквивалентного таблице _objects_eav ...
Вместо этого мы имеем следующееfiles objects_avs.json.gz, objects_offs.json.gz, objects_viewables.json.gz
В настоящее время я не знаю, как объединить данные между этими файлами и получить всю необходимую информацию,Есть ли какие-либо сложности по этому поводу?
Другие мысли: В качестве альтернативы я мог бы использовать model.sdb для доступа к данным, но я бы предпочел использовать JSON, поскольку они намного меньше (в 30 раз меньше, чем model.sdb, этоогромное количество).
Я мог бы также получить некоторые данные, используя методы, предоставляемые объектами просмотра в JavaScript, но тогда я застрял бы с методами и свойствами, предоставленными средством просмотра, и, к сожалению, они не выполняютвсе мои требования.
Тогда есть возможность использовать производный от модели API, но одно из моих требований - уметь работать с отключенными данными (автономно).