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

Перейдём к описанию статической части описания шаблонной категории. Это создание параметров, с помощью которых пользователь будет управлять формой оборудования и точками подключения в диалоге стиля объекта 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}