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