v1.1
 
Структура шаблона стиля

Шаблон стиля состоит из:

  • файла описания параметров и портов .json;
  • одного или нескольких файлов скриптов .lua.

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

Файл описания параметров и портов в формате 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 необходимо задать ключ entityTypeId, значение которого нужно указать в соответствии со справкой Renga API. В текущей версии, можно задать только ссылку на материал:

{
"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 можно создать описание стиля объекта, т.е.:

  • построить трёхмерную модель объекта, которую можно изменять с помощью параметров;
  • создать представление объекта для отображения на чертежах;
  • указать, какие параметры показывать в редакторе стиля объекта в Renga;
  • задать положение портов подключения и параметры соединения.

Скрипт на языке Lua может содержать:

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

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

Доступ к параметрам

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

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

local parameters = Style.GetParameterValues()
print(parameters.Dimensions.BodyWidth)
Style namespace.
Definition GeometryStyleMethodRegistrator.h:13

В данном случае в лог будет напечатано значение параметра "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)
Локальная система координат в трёхмерном пространстве.
Точка в трёхмерном пространстве.
Порт.
Вектор в трёхмерном пространстве.