В программном комплексе Топоматик Робур 3D-модели связываются с элементами информационной модели (ИМ). Элементы ИМ содержат в себе семантическую информацию об объекте, например, размер, материал, форма, код классификатора и т.д. Элементы ИМ описываются в текстовых файлах с расширением «.smdx». Для описания используется разметка JSON. Файлы с описанием хранятся в директории «C:\ProgramData\Topomatic\Robur <TYPE>\16.0\Support\Smdx\».
Каждый элемент должен содержать родительский элемент. Базовым родительским элементом всех элементов ИМ является тип «SmdxElement».
Элемент ИМ описывается следующими парами ключ/значение:
Каждое свойство массива properties должно содержать пары ключ/значение:
Также свойства могут содержать следующие пары ключ/значение:
Пары ключ/значение объекта info:
Создадим библиотеку элементов ИМ, которая будет содержать в себе следующие элементы:
График наследования для SmdxCustomCylinder_0,5 будет выглядеть так:
Создайте текстовый файл customtypes.smdx и поместите его в директорию
«C:\ProgramData\Topomatic\Robur <TYPE>\16.0\Support\Smdx\». Заполните файл следующим образом:
[ { "id": "SmdxCustomElement", "name": "Пользовательский элемент", "parent": "SmdxElement", "properties": [ { "tag": "caption", "name": "Описание", "value": "Пользовательский элемент" } ] }, { "id": "SmdxCustomVolumeElement", "name": "Пользовательский объёмный элемент", "parent": "SmdxCustomElement", "properties": [ { "tag": "caption", "value": "Пользовательский объёмный элемент" }, { "tag": "shape", "name": "Форма", "info": { "type": "enum", "values": { "Cube": "Куб", "Cylinder": "Цилиндр" } } } ] }, { "id": "SmdxCustomCylinderElement", "name": "Пользовательский цилиндрический элемент", "parent": "SmdxCustomVolumeElement", "properties": [ { "tag": "caption", "fixed": true, "value": "Пользовательский цилиндрический элемент" }, { "tag": "shape", "fixed": true, "value": "Cylinder" }, { "tag": "diameter", "name": "Диаметр", "info": { "type": "float", "units": "m" } } ] }, { "id": "SmdxCustomCylinder_0,5", "name": "Пользовательский цилиндр 0,5м", "parent": "SmdxCustomCylinderElement", "properties": [ { "tag": "diameter", "fixed": true, "value": 0.5 } ] }, { "id": "SmdxCustomCylinder_1,0", "name": "Пользовательский цилиндр 1,0м", "parent": "SmdxCustomCylinderElement", "properties": [ { "tag": "diameter", "fixed": true, "value": 1 } ] }, { "id": "SmdxCustomCubeElement", "name": "Пользовательский кубический элемент", "parent": "SmdxCustomVolumeElement", "properties": [ { "tag": "caption", "fixed": true, "value": "Пользовательский кубический элемент" }, { "tag": "shape", "fixed": true, "value": "Cube" }, { "tag": "width", "name": "Ширина", "info": { "type": "float", "units": "m" } } ] }, { "id": "SmdxCustomCube_0,5", "name": "Пользовательский куб 0,5м", "parent": "SmdxCustomCubeElement", "properties": [ { "tag": "width", "fixed": true, "value": 0.5 } ] }, { "id": "SmdxCustomCube_1,0", "name": "Пользовательский куб 1,0м", "parent": "SmdxCustomCubeElement", "properties": [ { "tag": "width", "fixed": true, "value": 1 } ] } ]
Откроем менеджер структуры Smdx и убедимся, что описанные выше типы появились в библиотеке.