Файл описания параметров и портов¶
Перейдём к описанию статической части описания шаблонной категории. Это создание параметров, с помощью которых пользователь будет управлять формой оборудования и точками подключения в диалоге стиля объекта Renga.
В рабочей среде редактора создадим папку с названием будущего оборудования
Wall-mounted VRF indoor unit
и создадим в ней файлparameters.json
. Добавим в файл объектmetadata
и массивыstyleParameters
,ports
.
Заполним объект
metadata
информацией о шаблоне. Добавим атрибутdefaultName
— название по-умолчанию в списке стилей объекта (его можно изменить после импорта в Renga). Также добавим (не редактируемые в Renga) атрибутыdescription
,version
иauthor
— они будут отображаться только в диалоге «Категории» при загрузке шаблона категории в Renga.
1"metadata" : {
2 "defaultName" : "Настенный блок VRF",
3 "description" : "Общий шаблон внутренних блоков настенного типа мультизональных VRF-систем",
4 "version" : "1.0.0",
5 "author" : "Иванов Иван Иванович"
6}
Создадим группы параметров, которые будут отображаться в диалоге стиля объекта.
Соглашение об описании параметров
Для унификации отображения параметров в диалоге стиля объекта принято группу «Общие» делать первой в списке, второй — группу «Габаритные размеры», а затем указывать группы «Порты» или «Точки подключения».
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 ]
Добавим в группу «Общие» параметр «Материал» типа ID для задания пользователем материала оборудования.
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}
Добавим в группу «Габаритные размеры» параметры типа Length, которые будут управлять длиной, шириной и высотой оборудования.
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}
Опишем параметры группы
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 |
---|---|
Ещё важным моментом в подключении блоков к инженерным системам является — сторона подключения (слева или справа) и направление подключения (сбоку, сзади, снизу).
Как правило, патрубки, соединяющие трубопроводы с оборудованием, располагаются в корпусе блока. Мы их моделировать не будем, но возможность управлять ориентацией и расположением портов добавим, для того, чтобы трубопроводы могли «подойти» к корпусу с нужной стороны.
Добавим ещё три параметра. Параметр connectionSide
типа UserEnum будет состоять из вариантов ["Слева", "Справа"]
. Параметр connectionDirection
типа UserEnum будет состоять из вариантов ["Сбоку", "Сзади", "Снизу"]
. А параметр 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}
Следующие две группы параметров
GasCoolant
иDrainage
также описывают подключение к трубопроводным системам. Поэтому мы можем использовать аналогичные параметры для задания соединенияconnectorType
,nominalDiameter
,threadSize
,connectionSide
,connectionDirection
иportIndentation
. Скопируем их из группыWaterCoolant
и присвоим характерные значения по-умолчаниюdefault
.
Важно
В параметре connectorType
мы использовали список идентификаторов для создания видов соединения к трубопроводным системам. Для создания видов соединения к вентиляционным системам необходимо использовать системное перечисление "type" : "DuctConnectorType"
со своим списком вариантов. См. идентификаторы системных перечислений
Перейдём к описанию параметров соединения с электрическими системами группы
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, наш список параметров в диалоге стиля объекта примет такой вид:
Пока еще есть задвоение параметров Номинальный диаметр. В дальнейшей работе, в скрипте мы настроим отображение нужного нам параметра.
Осталось описать порты в массиве
ports
. У нас есть 6 портов, перечислим их:
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
для чего нужны параметры порту.
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, чтобы проектировщику было легче ориентироваться при работе во вкладках систем.
Параметры flowDirection
и systemCategories
описаны в разделе Определение точек подключения.
Примечание
Понятие Направление потока или flowDirection
не применяется к электрическим системам. При описании электрических портов этот параметр можно не указывать.
В массиве systemCategories
перечисляются идентификаторы категорий систем, к которым будет возможно подключить данный порт. Соответственно, варианты подключения оборудования к другим системам будут не доступны.
Полное описание портов:
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}