v2.0
 
Шаблоны стилей объектов инженерных систем

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

Файл описания параметров в формате JSON для объектов инженерных систем должен содержать сгруппированные параметры стиля и данные для создания портов в следующем виде:

{
"metadata":{
"defaultName": "DefaultName",
"description": "Описание",
"version": "1.0.0",
"author": "Автор"
},
"styleParameters":[
{
"name": "Group1",
"text": "Группа 1",
"params": [
{
"name": "ParameterName",
"text": "Имя параметра",
"type": "Id",
"entityTypeId": "0000000-0000-0000-0000-000000000000"
}
]
},
{
"name": "Group2",
"text": "Группа 2",
"params": [
{
"name": "ParameterName",
"text": "Имя параметра",
"type": "Length",
"default": 595,
"min": 1,
"max": 1000000.0
}
]
}
],
"ports": [
{
"name": "PortName",
"text": "Имя порта",
"flowDirection": "Inlet",
"systemCategories": [
"DomesticColdWater"
]
}
]
}

Параметры

В секции metadata содержатся данные, которые будут отображаться в окне Категории в Renga Professional. Версия шаблона стиля должна быть задана в виде 3 чисел, разделенных точками, например "1.2.34".

Секция styleParameters содержит группы параметров, в которых описываются все возможные параметры стиля. Видимость групп параметров в редакторе стилей может включаться или отключаться с помощью функций Style Template API.

Каждый параметр должен содержать имя, описание и тип. В зависимости от типа параметра задаются другие данные.

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

Значение Описание
Integer Целое число
Real Действительное число
String Строка
CoreEnum Перечисление Style Template API
UserEnum Пользовательское перечисление
Length Длина в миллиметрах
Angle Угол в десятичных градусах
Id Идентификатор
Boolean Булевый (true/false)

Для всех типов параметров, кроме Id можно задать ключ default, значение которого будет значением параметра по умолчанию. Значение не может быть пустым.

Для числовых параметров можно задать минимальное и максимальное значения с помощью ключей min и max.

Для перечислений CoreEnum нужно задать ключ CoreEnumType, допустимые значения которого указаны в разделе Системные перечисления.

Для перечислений UserEnum нужно создать массив items, в котором задать значения для выбора из списка:

"items" : [
{
"key" : "Item1",
"text" : "Значение 1"
},
{
"key" : "Item2",
"text" : "Значение 2"
},
{
"key" : "Item3",
"text" : "Значение 3"
}
]

Чтобы в параметрах стиля пользователь мог выбрать материал, необходимо задать параметр типа Id в следующем виде:

{
"name" : "Material",
"text" : "Материал",
"type" : "Id",
"entityTypeId" : "0abcb18f-0aaf-4509-bf89-5c5fad9d5d8b"
}

Порты

Секция ports содержит группы параметров для описания портов.

Описание порта должно содержать имя, описание порта, направление потока flowDirection и набор допустимых категорий трубопроводной, воздуховодной или электрической системы systemCategories.

Допустимое направление потока flowDirection:

Значение Описание
Inlet Вход
Outlet Выход
InletAndOutlet Вход и выход

Категории трубопроводных систем:

Значение Описание
DomesticColdWater Бытовое холодное водоснабжение
DomesticHotWater Бытовое горячее водоснабжение
DomesticSewage Бытовая канализация
Gas Бытовое газоснабжение
Firewater Водяное пожаротушение
Heating Водяное теплоснабжение
GaseousFireSuppression Газовое пожаротушение
Rainwater Дождевая канализация
IndustrialColdWater Производственное холодное водоснабжение
IndustrialHotWater Производственное горячее водоснабжение
IndustrialSewage Производственная канализация
OtherPipeSystem Прочие трубопроводные системы

Категории воздуховодных систем:

Значение Описание
Ventilation Приточная вентиляция
Exhaust Вытяжная вентиляция
Pressurization Приточное дымоудаление
SmokeExhaust Вытяжное дымоудаление
Vacuum Пылеудаление
OtherDuctSystem Прочие воздуховодные системы

Категории электрических систем:

Значение Описание
LightingCircuit Осветительная сеть
PowerCircuit Силовая сеть
OtherElectricalSystem Прочие электрические системы

Описание портов аксессуара трубопровода и аксессуара воздуховода может содержать параметр portRole, позволяющий определить роль порта. Допустимые значения:

Значение Описание
TransitPort Транзитный порт — порт для размещения объекта на трассе.
EndPort Конечный порт — порт для создания трассы от объекта.

Например, чтобы аксессуар трубопровода можно было и разместить на трубопроводной трассе, и подключить к электрической системе, опишите порты следующим образом:

"ports": [
{
"name": "PipeInlet",
"text": "Трубопроводный вход",
"flowDirection": "Inlet",
"portRole":"TransitPort",
"systemCategories": [
// Список категорий трубопроводных систем
]
},
{
"name": "PipeOutlet",
"text": "Трубопроводный выход",
"flowDirection": "Outlet",
"portRole":"TransitPort",
"systemCategories": [
// Список категорий трубопроводных систем
]
},
{
"name": "ElectricPort",
"text": "Для подключения электричества",
"flowDirection": "InletAndOutlet",
"portRole": "EndPort",
"systemCategories": [
"PowerCircuit"
]
}
]

Файлы скриптов

Скрипт на языке Lua может включать следующие элементы:

  1. Получение параметров из файла описания параметров и портов.
  2. Описание детальной геометрии для создания трёхмерной модели.
  3. Описание символьной геометрии для символьного отображения на чертеже.
  4. Описание условной геометрии для условного отображения на чертеже.
  5. Положение портов и параметры соединения.
  6. Настройка отображения параметров в редакторе стилей объекта.

Функции для получения параметров, задания геометрии, положения портов, параметров соединения и настройки отображения параметров стиля объекта находятся в пространстве имён Style.

Получение параметров

Для получения параметров используется функция Style.GetParameter(), также для доступа к значениям параметров используется функция Style.GetParameterValues(), которая возвращает таблицу параметров.

Пример доступа к значению параметра с помощью Style.GetParameterValues():

local parameters = Style.GetParameterValues()
print(parameters.Dimensions.BodyWidth)
Пространство имён Style содержит функции задания геометрии, получения параметров и портов.
Definition GeometryStyleMethodRegistrator.h:12

В данном случае в лог будет напечатано значение параметра "BodyWidth" из группы параметров "Dimensions".

Для управления видимостью параметров в редакторе стилей объекта необходимо получить доступ к группе параметров или к объекту параметра с помощью функций Style.GetParameterGroup(groupName) и Style.GetParameter(groupName, parameterName).

Детальная геометрия

Детальная геометрия описывает модель объекта. Для установки детальной геометрии используется функция Style.SetDetailedGeometry(modelGeometry), которая принимает в качестве аргумента модельную геометрию, созданную с помощью функций и классов Style Template API.

Например:

function MakeBody()
return CreateBlock(dimensions.Width, dimensions.Depth, dimensions.Height):Shift(0, 0, - dimensions.Height / 2)
end
local solid = MakeBody()
solid:Shift(0, 0, dimensions.Height / 2)
Style.SetDetailedGeometry(ModelGeometry():AddSolid(solid))
Модельная геометрия.
Solid CreateBlock(number xSize, number ySize, number zSize, Placement3D oPlacement)
Создаёт прямоугольный параллелепипед.

Символьная геометрия

Символьная геометрия описывает символьное отображение объекта на чертеже. Её можно создавать для следующих типов объектов:

Для установки символьной геометрии используется функция Style.SetSymbolGeometry(modelGeometry), которая принимает в качестве аргумента модельную геометрию, созданную с помощью функций и классов Style Template API.

Условная геометрия

Условная геометрия описывает условное отображение объекта на чертеже. Её можно создавать для следующих типов объектов:

Для установки условной геометрии используется функция Style.SetSymbolicGeometry(modelGeometry), которая принимает в качестве аргумента модельную геометрию, созданную с помощью функций и классов Style Template API.

Порты

В скрипте можно задать:

  • Положение порта.
  • Якорь. Можно добавить для деталей и аксессуаров, чтобы сдвинуть их относительно трассы.
  • Параметры подключения к трубопроводным или воздуховодным системам.

Получить доступ к порту можно с помощью функции Style.GetPort(portName), которая в качестве аргумента принимает имя порта, заданное в файле описания параметров и портов.

local height = Style.GetParameter("Dimensions", "Height"):GetValue()
local coldWaterOrigin = Point3D(0, 0, height)
local portPlacement = Placement3D(coldWaterOrigin, Vector3D(0, 1, 0), Vector3D(1, 0, 0))
Style.GetPort("PortName"):SetPlacement(portPlacement)
local connectionType = Style.GetParameter("Port", "ConnectionType"):GetValue()
local diameter = Style.GetParameter("Port", "Diameter"):GetValue()
Style.GetPort("PortName"):SetPipeParameters(connectionType, diameter)
Локальная система координат в трёхмерном пространстве.
Точка в трёхмерном пространстве.
Порт.
Вектор в трёхмерном пространстве.