v4.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
}
]
}
]
}

В секции 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": "RebarStyleId",
"text": "Стиль арматурного стержня",
"type": "Id",
"entityTypeId": "608edb78-96f3-40a6-a0ec-71000105581b"
}

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

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

  1. Настройка отображения параметров в редакторе стилей армирования.
  2. Описание армирования объекта.

Настройка отображения параметров в редакторе стилей армирования

Для управления параметрами стиля армирования необходимо описать функцию SetStyleParameterStates(). В эту функцию передается экземпляр класса ParameterContainer(), с помощью которого можно менять состояние параметров.

Пример управления состоянием параметра с помощью SetStyleParameterStates():

function SetStyleParameterStates(parameters)
local values = parameters:GetParameterValues()
local needUpOverhangs = parameters:GetParameter("General", "UpOverhangs")
needUpOverhangs:SetEnabled(values.General.HasUpOverhang == "Yes")
end

Создание армирования

Чтобы создать армирование объекта необходимо описать функцию CreateObjectReinforcement(). В эту функцию передается армируемый объект и параметры стиля армирования. CreateObjectReinforcement() должна возвращать экземпляр класса ReinforcementContainer().

function CreateObjectReinforcement(object, styleParameters)
local reinforcementContainer = ReinforcementContainer()
-- создание армирования
...
reinforcementContainer.AddRebar(...)
...
reinforcementContainer.AddReinforcementUnit(...)
...
return reinforcementContainer()
end
Контейнер армирования.
nil AddRebar(number id, Curve3D curve)
Добавляет арматурный стержень.

Локальные системы координат объектов армирования

Армирование располагается в объектах относительно центра локальной системы координат объекта. Положение центра локальной системы координат зависит от типа объекта.

Столбчатый фундамент

Центр локальной системы координат столбчатого фундамента расположен в центре его нижней грани. Координатные оси расположены следующим образом:

Столбчатый фундамент в локальной системе координат

Стена

Центр локальной системы координат стены расположен в начале основания прямого участка слоя основы без учета участка соединения. Ось OX' направлена по касательной к центральной линии слоя основы стены.

Стена в локальной системе координат

Перекрытие

Центр локальной системы координат перекрытия расположен в первой точке контура перекрытия по центру слоя основы. Ось OX' локальной системы координат перекрытия направлена под углом армирования перекрытия к оси OX глобальной системы координат модели здания.

Перекрытие в локальной системе координат

Получение стиля арматурного стержня и его параметров

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

Пример получения диаметра арматурного стержня:

local style = GetRebarStyle(rebarStyleId)
local rebarDiameter = GetParameterValue(style, "RebarDiameter")
print(rebarDiameter)
value GetParameterValue(Entity entity, string name)
Возвращает значение параметра по имени.
Entity GetRebarStyle(number id)
Возвращает стиль арматурного стержня по идентификатору.

Выбор граней объекта для описания армирования

Для решения различных задач армирования, например задания защитных слоёв от грани объекта или описания выпусков, необходимо выбрать грани объектов. Для этого в Renga STDL предусмотрены селекторы граней армируемого объекта. Существуют следующие виды селекторов:

  • Селекторы по стороне объекта применяются к сегментам сечений или граням, соответствующим исходной форме объекта, т.е. до взаимодействия с другими объектами. Набор этих значений может быть разным в зависимости от типа объекта. Например, у стены определена левая, правая, верхняя, нижняя, передняя и задняя грани.
  • Селекторы грани вырезания применяются только к тем граням, которые образованы при взаимодействии с другими объектами. При использовании такого селектора указывается тип объекта взаимодействия.

Армирование параметрическими сетками

Ряд арматурных стержней

Для описания ряда стержней арматурной сетки используется структура RebarRowParameters. Ее можно создать, передав необходимые параметры: стиль арматурного стержня, тип раскладки.

Типы раскладки ряда
  • Раскладка с защитой граней. Раскладка арматурных стержней между опорными стержнями, которые расставляются у вертикальных или горизонтальных граней. При такой раскладке расстояние между стержнями не всегда равно заданному шагу и может быть скорректировано для некоторых стержней алгоритмом раскладки. Для исключения ситуации с наложением стержней используется минимальный просвет между стержнями, определяющий наименьшее расстояние между стержнями. Если в процессе выполнения алгоритма раскладки получается расстояние меньше минимального просвета, то стержень, который нарушает это условие, не добавляется в ряд. По умолчанию минимальный просвет – 25 мм.

    local rebarStep = styleParameters.ReinforcingMesh.LongitudinalRebarStep
    local rebarRowLayout = RebarRowEdgeProtectionLayout(rebarStep)
    rebarRowLayout.MinClearance = 20
    Раскладка арматурных стержней с защитой граней.
    Определения RebarRowEdgeProtectionLayout.h:16
    number MinClearance
    Минимальный просвет между стержнями. Значение по умолчанию равно 25 мм. Этот параметр задает минималь...
    Определения RebarRowEdgeProtectionLayout.h:38
  • Равномерная раскладка. Раскладка с соблюдением равномерного шага по всей длине области армирования позволяет синхронизировать армирование объекта с армированием объектов, расположенных, сверху или снизу. Для синхронизации положения стержней с объектом сверху или снизу может понадобиться сместить стержни на небольшое расстояние, чтобы выпуски армирования объектов не накладывались, а примыкали друг к другу. Для этого используется смещение всех арматурных стержней.

    local rebarStep = styleParameters.ReinforcingMesh.LongitudinalRebarStep
    local rebarRowLayout = RebarRowUniformLayout(rebarStep)
    rebarRowLayout.Displacement = 10
    Раскладка арматурных стержней с равномерным шагом.
    Определения RebarRowUniformLayout.h:16
    number Displacement
    Смещение ряда арматурных стержней. Значение по умолчанию равно 0. Этот параметр может использоваться ...
    Определения RebarRowUniformLayout.h:35

Пример создания структуры параметров ряда сетки:

local rebarId = styleParameters.ReinforcingMesh.LongitudinalRebarStyleId
local rebarRowParams = RebarRowParameters(rebarId, layout)
Параметры ряда арматурных стержней.
Определения RebarRowParameters.h:23

Выпуски арматурных стержней

Выпуски арматурных стержней задаются с помощью селекторов граней. Чтобы задать выпуски необходимо передать таблицу из пар, где первый элемент пары это селектор грани, из которой нужно сделать выпуск, а второй элемент – параметры выпуска. Параметры выпуска содержат величины выпусков и параметры отгиба арматурного стержня.

  • Величины выпусков. Определяют на сколько стержень будет выходить из указанной грани. Можно задать несколько значений, в том числе отрицательные.
  • Параметры отгиба стержня(RebarHookParameters). Позволяет задать длину анкеровки, угол отгиба и угол поворота крюка вокруг оси стержня.

Выпуски не выходят в грани, образованные окнами, дверьми, проёмами, отверстиями.

local topWallAnchorForm = {math.pi/2, 200}
local overhangForTopWalls = RebarOverhangParameters({600, 300}, topWallAnchorForm)
local overhangForBottomWalls = RebarOverhangParameters({-600, -300})
local overhangForColumns = RebarOverhangParameters({600})
local overhangForAnyOtherObject = RebarOverhangParameters({100})
local overhangParameters = {
{ObjectSideSelector(WallSide.Top), overhangForTopWalls},
{ObjectSideSelector(WallSide.Bottom), overhangForBottomWalls},
{VoidingSelector(ObjectType.Column), overhangForColumns},
{{}, overhangForAnyOtherObject}
}
rebarLayoutParams.Overhangs = overhangParameters
WallSide
Сторона стены.
Определения ObjectSide.h:21
Выбирает грани объекта, соответствующие указанной стороне.
Определения FaceSelector.h:49
Параметры выпуска арматурного стержня.
Определения RebarOverhangParameters.h:18
table Overhangs
Величины выпусков.
Определения RebarOverhangParameters.h:28
Выбирает грани объекта, которые образованы при пересечении с другим объектом.
Определения FaceSelector.h:21

Правила защитных слоев

Величины защитных слоев задаются с помощью селекторов граней. Для создания правил защитных слоев необходимо передать таблицу из пар, где первый элемент пары — это Селектор грани от которой обеспечить защитный слой, а второй — величина защитного слоя.

local coverRules = {
{VoidingSelector(ObjectType.Window), 120},
{{}, 150}
}

Армирование одной сеткой

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

local reinforcingMeshParams = ReinforcingMeshParameters(longitudinalRow, transverseRow)
reinforcingMeshParams.LongitudinalFreeEnd = 25
reinforcingMeshParams.TransverseFreeEnd = 20
Параметры сетки арматурных стержней.
Определения ReinforcingMeshParameters.h:22
number LongitudinalFreeEnd
Свободный конец продольных стержней.
Определения ReinforcingMeshParameters.h:46
Управление взаимным положением продольных и поперечных стержней

Чтобы управлять взаимным положением стержней в сетке используйте перечисление ReinforcingMeshRowsOrder. Перечисление определяет относительный порядок рядов сетки арматурных стержней. Для горизонтальных объектов, таких как перекрытие, направление взгляда — сверху. Для вертикальных объектов, таких как стена, направление взгляда — спереди:

  • LongitudinalInFront — продольные стержни располагаются перед поперечными арматурными стержнями.
  • TransverseInFront — поперечные стержни располагаются перед продольными арматурными стержнями.
reinforcingMeshParams.RowsOrder = ReinforcingMeshRowsOrder.TransverseInFront
ReinforcingMeshRowsOrder
Перечисление определяет относительный порядок рядов сетки арматурных стержней. Для горизонтальных объ...
Определения ReinforcingMeshRowsOrder.h:30
Управление аппроксимацией формы области армирования

За счёт управления аппроксимацией формы области армирования можно заменить стороны сечения, изначально неортогональные направлениям стержней, на ортогональные. Таким образом можно уменьшить количество уникальных стержней, которые могут появиться при наличии наклонных и криволинейных граней.

reinforcingMeshParams.UseRectangularApproximation = true
Создание одной арматурной сетки в слое основы

Арматурная сетка в слое основы объекта создается функцией CreateReinforcingMeshInBaseLayer(), в которую необходимо передать армируемый объект, защитные слои, параметры сетки и опционально положение сетки в слое и смещение.

local retinforcementContainer = CreateReinforcingMeshInBaseLayer(object, coverRules, reinforcingMeshParams, InLayerAlignment.Center, 100.0)
InLayerAlignment
Перечисление определяет относительную плоскость базового материального слоя объекта.
Определения InLayerAlignment.h:23
ReinforcementContainer CreateReinforcingMeshInBaseLayer(Entity object, table clearCoverRules, ReinforcingMeshParameters meshParameters, InLayerAlignment oMeshAlignment, number oMeshOffset)
Создает арматурную сетку в слое основы объекта. На текущий момент поддерживаются Стены и Перекрытия.

Армирование двумя сетками

Для описания армирования двумя сетками используется структура DoubleReinforcingMeshParameters. Ее можно создать, передав параметры двух сетки. Управления положением стержней и аппроксимацией формы задается так же как для одной сетки.

local doubleMeshParams = DoubleReinforcingMeshParameters(frontMeshParams, backMeshParams)
Параметры создания двух арматурных сеток. Передняя и задняя сетки определяются по направлению взгляда...
Определения DoubleReinforcingMeshParameters.h:29
Усиление торцов объекта

Для описания арматуры усиления торцов слоя основы используется структура EdgeReinforcementParameters, для создания которой нужно задать деталь армирования, тип раскладки детали вдоль торца.

local edgeReinfStyle = styleParameters.EdgeReinforcement.EdgeRebarStyle
local edgeRebar = UShapedRebarParameters(edgeReinfStyle, 200, 600, 600)
edgeRebar.RebarStyleId = edgeReinfStyle
edgeRebar.LeftLegLength = 500
edgeRebar.RightLegLength = 500
edgeRebar.BaseLength = 100
edgeRebar.BendingFactor = 2 --- по умолчанию
local detailsLayout = EdgeReinforcementCenteredLayout(styleParameters.EdgeReinforcement.EdgeReinfStep)
local edgeReinfParameters = EdgeReinforcementParameters(edgeRebar, detailsLayout)
Раскладка арматурных деталей от центра грани торца.
Определения EdgeReinforcementCenteredLayout.h:18
Параметры усиления торцов объекта.
Определения EdgeReinforcementParameters.h:21
Параметры U-образной арматурной детали.
Определения UShapedRebarParameters.h:21

В параметрах усиления торцов можно с помощью списка селекторов грани задать грани, которые нужно усилить:

edgeReinfParameters.EdgeSelectors = {ObjectSideSelector(WallSide.Left), VoidingSelector(ModelObjectType.Roof)}
ModelObjectType
Типы объектов.
Определения ModelObjectType.h:29
Параметры фиксаторов арматуры

Для описания фиксаторов двух арматурных сеток, таких как хомуты или лягушки, используется структура ReinforcingMeshSupportsParameters. Для её создания нужно задать форму фиксатора и способ раскладки.

  • Раскладка с указанием количества пройденных ячеек между элементами. Шаг фиксаторов задан в количестве пройденных ячеек сетки. Смещения рядов фиксаторов арматуры измеряются в количестве пройденных ячеек. Значения смещения применяются последовательно к каждому горизонтальному ряду. Этот параметр позволяет задать вид расположения деталей, например, шахматный.

    local supportsHorStep = 2
    local supportsVerStep = 1
    local meshLayout = ReinforcingMeshSupportsCellLayout(supportsHorStep, supportsVerStep)
    meshLayout.Displacements = {0, 1}
    Раскладка фиксаторов арматуры сетки с указанием количества пройденных ячеек между элементами.
    Определения ReinforcingMeshSupportsCellLayout.h:30
    table Displacements
    Смещения рядов фиксаторов арматуры. Измеряются в количестве пройденных ячеек. Значения смещения приме...
    Определения ReinforcingMeshSupportsCellLayout.h:56
  • Раскладка с указанием расстояния между элементами. Шаг фиксаторов задан в миллиметрах. Смещения рядов применяются к горизонтальным рядам и определяют через какое расстояние от края должен быть расположен первый фиксатор соответствующего ряда.

    local supportsHorStep = 300
    local supportsVerStep = 200
    local distanceLayout = ReinforcingMeshSupportsDistanceLayout(supportsHorStep, supportsVerStep)
    distanceLayout.Displacements = {0, 450}
    Раскладка фиксаторов арматуры сетки с указанием расстояния между элементами.
    Определения ReinforcingMeshSupportsDistanceLayout.h:20
    table Displacements
    Смещения рядов фиксаторов арматуры. Значения смещения применяются последовательно к каждому горизонта...
    Определения ReinforcingMeshSupportsDistanceLayout.h:46

Пример создания фиксаторов арматуры с раскладкой с указанием количества пройденных ячеек:

local supportsParameters = ReinforcingMeshSupportsParameters(supportDetail, meshLayout)
Параметры фиксаторов арматурной сетки. Для фиксации вертикальных сеток между собой используются C-обр...
Определения ReinforcingMeshSupportsParameters.h:29
Создание двух арматурных сеток в слое основы

Две арматурные сетки в слое основы объекта создаются функцией CreateDoubleReinforcingMeshInBaseLayer(), в которую необходимо передать армируемый объект, параметры защитных слоёв, параметры сетки и опционально параметры усиления торцов.

meshParams.Supports = supportsParameters
local reinforcementContainer = CreateDoubleReinforcingMeshInBaseLayer(object, coverRules, ReinforcingMeshParams, edgeReinfParamters)
ReinforcementContainer CreateDoubleReinforcingMeshInBaseLayer(Entity object, table clearCoverRules, DoubleReinforcingMeshParameters meshParameters, EdgeReinforcementParameters oEdgeReinfParameters)
Создает двойную арматурную сетку в слое основы объекта. На текущий момент поддерживаются Стены и Пере...