Файл описания параметров и портов#

Перейдём к описанию статической части описания шаблонной категории. Это создание параметров, с помощью которых пользователь будет управлять формой оборудования и точками подключения в диалоге стиля объекта Renga.

  1. В рабочей среде редактора создадим папку с названием будущего оборудования Wall-mounted VRF indoor unit и создадим в ней файл parameters.json. Добавим в файл объект metadata и массивы styleParameters, ports.

Создание файла parameters

Создание файла parameters.json#

  1. Заполним объект metadata информацией о шаблоне. Добавим атрибут defaultName — название по-умолчанию в списке стилей объекта (его можно изменить после импорта в Renga). Также добавим (не редактируемые в Renga) атрибуты description, version и author — они будут отображаться только в диалоге «Категории» при загрузке шаблона категории в Renga.

Внесение информации о шаблоне в объект metadata#
1"metadata": {
2    "defaultName": "Настенный блок VRF",
3    "description": "Общий шаблон внутренних блоков настенного типа мультизональных VRF-систем",
4    "version": "1.0.0",
5    "author": "Иванов Иван Иванович"
6}
  1. Создадим группы параметров, которые будут отображаться в диалоге стиля объекта.

Соглашение об описании параметров

Для унификации отображения параметров в диалоге стиля объекта принято группу «Общие» делать первой в списке, второй — группу «Габаритные размеры», а затем указывать группы «Порты» или «Точки подключения».

Создание групп параметров в массиве styleParameters#
 1"styleParameters": [
 2        {
 3            "name": "General",
 4            "text": "Общие",
 5            "params": []
 6        },
 7        {
 8            "name": "Dimensions",
 9            "text": "Габаритные размеры",
10            "params": []
11        },
12        {
13            "name": "WaterCoolant",
14            "text": "Подача жидкости (вход)",
15            "params": []
16        },
17        {
18            "name": "GasCoolant",
19            "text": "Подача газа (вход)",
20            "params": []
21        },
22        {
23            "name": "Drainage",
24            "text": "Дренаж (выход)",
25            "params": []
26        },
27        {
28            "name": "ElectricConnectors",
29            "text": "Вводные электрические линии",
30            "params": []
31        }
32    ]
  1. Добавим в группу «Общие» параметр «Материал» типа ID для задания пользователем материала оборудования.

Добавление в группу «Общие» параметра material#
 1{
 2    "name": "General",
 3    "text": "Общие",
 4    "params": [
 5        {
 6            "name": "material",
 7            "text": "Материал",
 8            "type": "Id",
 9            "entityTypeId": "0abcb18f-0aaf-4509-bf89-5c5fad9d5d8b"
10        }
11    ]
12}
  1. Добавим в группу «Габаритные размеры» параметры типа Length, которые будут управлять длиной, шириной и высотой оборудования.

Добавление в группу «Габаритные размеры» параметров bodyLength, bodyWidth и bodyHeight#
 1{
 2    "name": "Dimensions",
 3    "text": "Габаритные размеры",
 4    "params": [
 5        {
 6            "name": "bodyLength",
 7            "text": "Длина корпуса",
 8            "type": "Length",
 9            "default": 970,
10            "min": 100,
11            "max": 2000
12        },
13        {
14            "name": "bodyWidth",
15            "text": "Ширина корпуса",
16            "type": "Length",
17            "default": 235,
18            "min": 100,
19            "max": 2000
20        },
21        {
22            "name": "bodyHeight",
23            "text": "Высота корпуса",
24            "type": "Length",
25            "default": 315,
26            "min": 100,
27            "max": 2000
28        }
29    ]
30}
  1. Опишем параметры группы WaterCoolant. Добавим параметр connectorType типа CoreEnum для указания вида соединения (из списка возможных в Renga). И ещё два параметра, которые будут задавать номинальный диаметр соединения: threadSize типа CoreEnum и nominalDiameter типа Length.

Примечание

Далее в скрипте пропишем логику, чтобы в диалоге стиля объекта отображался только один параметр (threadSize или nominalDiameter), в зависимости от того, какой вид соединения выберет пользователь.

Добавление в группу «Подача жидкости (вход)» параметров соединения#
 1{
 2    "name": "WaterCoolant",
 3    "text": "Подача жидкости (вход)",
 4    "params": [
 5        {
 6            "name": "connectorType",
 7            "text": "Вид соединения",
 8            "type": "CoreEnum",
 9            "coreEnumType": "PipeConnectorType",
10            "default": "Thread"
11        },
12        {
13            "name": "threadSize",
14            "text": "Номинальный диаметр",
15            "type": "CoreEnum",
16            "coreEnumType": "PipeThreadSize",
17            "default": "D0_50"
18        },
19        {
20            "name": "nominalDiameter",
21            "text": "Номинальный диаметр",
22            "type": "Length",
23            "default": 6.35,
24            "min": 1,
25            "max": 100
26        },
27        ..
28    ]
29}

Примечание

Причиной создания двух параметров для задания номинального диаметра является то, что при резьбовом виде соединения диаметр указывается в дюймах (из списка возможных вариантов), а во всех остальных случаях вводится пользователем в миллиметрах:

threadSize

nominalDiameter

_images/thread_size.png _images/nominal_diameter.png

Ещё важным моментом в подключении блоков к инженерным системам является — сторона подключения (слева или справа) и направление подключения (сбоку, сзади, снизу).

Подключение трубопроводов к внутреннему блоку

Подключение трубопроводов к внутреннему блоку#

Как правило, патрубки, соединяющие трубопроводы с оборудованием, располагаются в корпусе блока. Мы их моделировать не будем, но возможность управлять ориентацией и расположением портов добавим, для того, чтобы трубопроводы могли «подойти» к корпусу с нужной стороны.

Добавим ещё три параметра. Параметр connectionSide типа UserEnum будет состоять из вариантов ["Слева", "Справа"]. Параметр connectionDirection типа UserEnum будет состоять из вариантов ["Сбоку", "Сзади", "Снизу"]. А параметр portIndentation будет задавать отступ точек подключения от задней стенки блока.

Добавление в группу «Подача жидкости (вход)» параметров connectionSide, connectionDirection и portIndentation#
 1{
 2    "name": "WaterCoolant",
 3    "text": "Подача жидкости (вход)",
 4    "params": [
 5        ..
 6        {
 7            "name": "connectionSide",
 8            "text": "Сторона подключения",
 9            "type": "UserEnum",
10            "default": "right",
11            "items": [
12                {
13                    "key": "right",
14                    "text": "Справа"
15                },
16                {
17                    "key": "left",
18                    "text": "Слева"
19                }
20            ]
21        },
22        {
23            "name": "connectionDirection",
24            "text": "Направление подключения",
25            "type": "UserEnum",
26            "default": "side",
27            "items": [
28                {
29                    "key": "side",
30                    "text": "Сбоку"
31                },
32                {
33                    "key": "back",
34                    "text": "Сзади"
35                },
36                {
37                    "key": "below",
38                    "text": "Снизу"
39                }
40            ]
41        },
42        {
43            "name": "portIndentation",
44            "text": "Отступ точки подключения",
45            "type": "Length",
46            "default": 50,
47            "min": 0,
48            "max": 200
49        }
50    ]
51}
  1. Следующие две группы параметров GasCoolant и Drainage также описывают подключение к трубопроводным системам. Поэтому мы можем использовать аналогичные параметры для задания соединения connectorType, nominalDiameter, threadSize, connectionSide, connectionDirection и portIndentation. Скопируем их из группы WaterCoolant и присвоим характерные значения по-умолчанию default.

Важно

В параметре connectorType мы использовали список идентификаторов для создания видов соединения к трубопроводным системам. Для создания видов соединения к вентиляционным системам необходимо использовать системное перечисление "type": "DuctConnectorType" со своим списком вариантов. См. идентификаторы системных перечислений

  1. Перейдём к описанию параметров соединения с электрическими системами группы ElectricConnectors. В описании оборудования мы определили, что будет 3 точки подключения (к силовой сети, сети управления/связи и проводному пульту управления). Добавим в статической части характерные параметры для этих точек подключения: расположение portLocation и расстояние между ними distanceBetweenPorts, portIndentation.

Параметр portLocation типа UserEnum будет состоять из вариантов ["Слева", "По центру", "Справа"].

Направление электрических портов будет фиксированным — назад. Параметры для управления направлением добавлять не будем.

Добавление в группу «Вводные электрические линии» параметров соединения#
 1{
 2    "name": "ElectricConnectors",
 3    "text": "Вводные электрические линии",
 4    "params": [
 5        {
 6            "name": "portLocation",
 7            "text": "Расположение точек подключения",
 8            "type": "UserEnum",
 9            "default": "center",
10            "items": [
11                    {
12                        "key": "right",
13                        "text": "Справа"
14                    },
15                    {
16                        "key": "center",
17                        "text": "По центру"
18                    },
19                    {
20                        "key": "left",
21                        "text": "Слева"
22                    }
23                ]
24        },
25        {
26            "name": "distanceBetweenPorts",
27            "text": "Расстояние между точками подключения",
28            "type": "Length",
29            "default": 12,
30            "min": 0,
31            "max": 30
32        },
33        {
34            "name": "portIndentation",
35            "text": "Отступ точек подключения",
36            "type": "Length",
37            "default": 6,
38            "min": 0,
39            "max": 200
40        }
41    ]
42}

Параметры стиля описаны. После импорта в Renga, наш список параметров в диалоге стиля объекта примет такой вид:

Параметры стиля объекта Renga

Параметры стиля объекта Renga.#

Пока еще есть задвоение параметров Номинальный диаметр. В дальнейшей работе, в скрипте мы настроим отображение нужного нам параметра.

  1. Осталось описать порты в массиве ports. У нас есть 6 портов, перечислим их:

Перечисление портов в группе ports#
 1{
 2    "ports": [
 3        {
 4            "name": "WaterCoolant"
 5        },
 6        {
 7            "name": "GasCoolant"
 8        },
 9        {
10            "name": "Drainage"
11        },
12        {
13            "name": "PowerSupplyLine"
14        },
15        {
16            "name": "ControlNetwork1"
17        },
18        {
19            "name": "ControlNetwork2"
20        }
21    ]
22}

Примечание

Имя портам даётся уникальное и понятное. Оно является ключом для доступа к его параметрам.

Рассмотрим подробнее на примере порта Drainage для чего нужны параметры порту.

Перечисление атрибутов порта Drainage#
 1{
 2    "ports": {
 3        ..
 4        {
 5            "name": "Drainage",
 6            "text": "Канализация",
 7            "flowDirection": "Outlet",
 8            "systemCategories": [
 9                "DomesticSewage",
10                "IndustrialSewage",
11                "OtherPipeSystem"
12            ]
13        },
14        ..
15    }
16}

Параметр text задает отображаемое имя порта в Renga. Его лучше сопоставить с названиями категорий систем в Renga, чтобы проектировщику было легче ориентироваться при работе во вкладках систем.

Пример:pic2

Параметры flowDirection и systemCategories описаны в разделе Определение точек подключения.

Примечание

Понятие Направление потока или flowDirection не применяется к электрическим системам. При описании электрических портов этот параметр можно не указывать.

В массиве systemCategories перечисляются идентификаторы категорий систем, к которым будет возможно подключить данный порт. Соответственно, варианты подключения оборудования к другим системам будут не доступны.

Доступные варианты систем в Renga

Доступные варианты систем, к которым можно подключить оборудование.#

  1. Полное описание портов:

Описание портов в массиве ports#
 1{
 2    "ports": [
 3        {
 4            "name": "WaterCoolant",
 5            "text": "Жидкостный трубопровод",
 6            "flowDirection": "Inlet",
 7            "systemCategories": [
 8                "OtherPipeSystem"
 9            ]
10        },
11        {
12            "name": "GasCoolant",
13            "text": "Фреоновый трубопровод",
14            "flowDirection": "Inlet",
15            "systemCategories": [
16                "OtherPipeSystem"
17            ]
18        },
19        {
20            "name": "Drainage",
21            "text": "Канализация",
22            "flowDirection": "Outlet",
23            "systemCategories": [
24                "DomesticSewage",
25                "IndustrialSewage",
26                "OtherPipeSystem"
27            ]
28        },
29        {
30            "name": "PowerSupplyLine",
31            "text": "Силовая линия",
32            "systemCategories": [
33                "PowerCircuit"
34            ]
35        },
36        {
37            "name": "ControlNetwork1",
38            "text": "Линия управления 1",
39            "systemCategories": [
40                "OtherElectricalSystem"
41            ]
42        },
43        {
44            "name": "ControlNetwork2",
45            "text": "Линия управления 2",
46            "systemCategories": [
47                "OtherElectricalSystem"
48            ]
49        }
50    ]
51}