v4.0
Шаблон стиля армирования стены

Разберём создание шаблона стиля армированияДве арматурные сетки с выпусками.

Техническое задание

Перед созданием шаблона стиля рассмотрим техническое задание, по которому составим файл параметров в формате JSON и напишем скрипт на языке Lua.

Чертёж двух арматурных сеток в стене

Группа/Параметр Описание Тип параметра Значение по умолчанию Минимальное Максимальное
ClearCover Защитный слой
ClearCoverInner Внутренний Length 20 0 100
ClearCoverOuter Наружный Length 20 0 100
ClearCoverLeft Слева Length 20 0 100
ClearCoverRight Справа Length 20 0 100
ClearCoverTop Сверху Length 20 0 100
ClearCoverBottom Снизу Length 20 0 100
ClearCoverOpenings Для окон и дверей Length 25 0 100
LongitudinalRebar Продольный стержень
RebarStyleId Стиль Id
Step Шаг Length 300 50 500
TransverseRebar Поперечный стержень
RebarStyleId Стиль Id
Step Шаг Length 300 50 500
Overhang Выпуски
UseHook Использовать крюк Boolean true
TopOverhang1 Верхний выпуск 1 Length 300 0 1000
TopOverhang2 Верхний выпуск 2 Length 600 0 1000
HookLength Длина крюка Length 150 0 500
CShapedFixator С-образный хомут
RebarStyleId Стиль хомута Id
LegLength Длина ножки Length 15 0 100
HorizontalStep Шаг по горизонтали (ячейки) Length 2 1 10
VerticalStep Шаг по вертикали (ячейки) Length 2 1 10
UseChessOrder Шахматный порядок Boolean false

Описание параметров

По техническому заданию составляем файл параметров согласно структуре, описанной в разделе Шаблоны стилей армирования.

Результат смотрите в файле описания параметров.

Скрипт

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

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

function SetStyleParameterStates(parameters)
local values = parameters:GetParameterValues()
-- Показывать или скрывать HookLength в зависимости от значения UseHook.
parameters:GetParameter("Overhang", "HookLength"):SetVisible(values.Overhang.UseHook)
end

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

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

function rebarRowParameters(group)
local rebarStyleId = group.RebarStyleId
local layout = RebarRowEdgeProtectionLayout(group.Step)
return RebarRowParameters(rebarStyleId, layout)
end
Раскладка арматурных стержней с защитой граней.
Определения RebarRowEdgeProtectionLayout.h:16
Параметры ряда арматурных стержней.
Определения RebarRowParameters.h:23

Поперечные стержни должны быть с выпусками наверх, с возможностью указания их длины и опцией использования крюка. Создадим функцию для указания правил выпусков с помощью конструктора RebarOverhangParameters:

function createOverhangRules(styleParameters, hookAngle)
local overhangValues = {
styleParameters.Overhang.TopOverhang1,
styleParameters.Overhang.TopOverhang2
}
-- Если пользователь будет использовать крюк
if styleParameters.Overhang.UseHook then
local hook = RebarHookParameters(
math.pi,
styleParameters.Overhang.HookLength,
hookAngle
)
local overhang = RebarOverhangParameters(overhangValues, hook)
return {{ObjectSideSelector(WallSide.Top), overhang}}
else
-- Если пользователь не будет создавать крюк
local overhang = RebarOverhangParameters(overhangValues)
return {{ObjectSideSelector(WallSide.Top), overhang}}
end
end
WallSide
Сторона стены.
Определения ObjectSide.h:21
Выбирает грани объекта, соответствующие указанной стороне.
Определения FaceSelector.h:49
Параметры отгиба арматурного стержня.
Определения RebarHookParameters.h:19
Параметры выпуска арматурного стержня.
Определения RebarOverhangParameters.h:18

С помощью структуры DoubleReinforcingMeshParameters указываем параметры создания двух арматурных сеток:

function meshParameters(styleParameters)
local longitudinalParams = rebarRowParameters(styleParameters.LongitudinalRebar)
-- Передняя сетка (внутренняя, угол поворота крюка вокруг оси стержня 180°)
local transFront = rebarRowParameters(styleParameters.TransverseRebar)
transFront.OverhangRules = createOverhangRules(styleParameters, math.pi)
-- Задняя сетка (наружная, угол поворота крюка вокруг оси стержня 0°)
local transBack = rebarRowParameters(styleParameters.TransverseRebar)
transBack.OverhangRules = createOverhangRules(styleParameters, 0)
-- Сетки
local frontMesh = ReinforcingMeshParameters(longitudinalParams, transFront)
local backMesh = ReinforcingMeshParameters(longitudinalParams, transBack)
-- C-образный хомут (длина = 1 для авто-подстройки)
local cShaped = CShapedRebarParameters(
styleParameters.CShapedFixator.RebarStyleId,
1,
styleParameters.CShapedFixator.LegLength
)
-- Раскладка фиксаторов арматуры сетки с указанием количества пройденных ячеек между элементами.
styleParameters.CShapedFixator.HorizontalStep,
styleParameters.CShapedFixator.VerticalStep
)
-- Если шахматный порядок включен, то учитывается смещение рядов фиксаторов арматуры.
if styleParameters.CShapedFixator.UseChessOrder then
layout.Displacements = {1, 0}
end
-- Фиксаторы
local supports = ReinforcingMeshSupportsParameters(cShaped, layout)
-- Две сетки с фиксаторами
local doubleMesh = DoubleReinforcingMeshParameters(frontMesh, backMesh)
doubleMesh.Supports = supports
return doubleMesh
end
Параметры C-образной арматурной детали.
Определения CShapedRebarParameters.h:21
Параметры создания двух арматурных сеток. Передняя и задняя сетки определяются по направлению взгляда...
Определения DoubleReinforcingMeshParameters.h:29
ReinforcingMeshSupportsParameters Supports
Параметры фиксаторов арматуры сетки.
Определения DoubleReinforcingMeshParameters.h:48
Параметры сетки арматурных стержней.
Определения ReinforcingMeshParameters.h:22
Раскладка фиксаторов арматуры сетки с указанием количества пройденных ячеек между элементами.
Определения ReinforcingMeshSupportsCellLayout.h:30
Параметры фиксаторов арматурной сетки. Для фиксации вертикальных сеток между собой используются C-обр...
Определения ReinforcingMeshSupportsParameters.h:29

С помощью функции CreateObjectReinforcement() создаём в объекте армирование с учетом защитных слоёв.

function CreateObjectReinforcement(object, styleParameters)
-- Защитные слои
local clearCoverRules = {
{ObjectSideSelector(WallSide.Front), styleParameters.ClearCover.ClearCoverInner},
{ObjectSideSelector(WallSide.Back), styleParameters.ClearCover.ClearCoverOuter},
{ObjectSideSelector(WallSide.Left), styleParameters.ClearCover.ClearCoverLeft},
{ObjectSideSelector(WallSide.Right), styleParameters.ClearCover.ClearCoverRight},
{ObjectSideSelector(WallSide.Top), styleParameters.ClearCover.ClearCoverTop},
{ObjectSideSelector(WallSide.Bottom), styleParameters.ClearCover.ClearCoverBottom},
-- Защитные слои для окон и дверей
{VoidingSelector(ModelObjectType.Window), styleParameters.ClearCover.ClearCoverOpenings},
{VoidingSelector(ModelObjectType.Door), styleParameters.ClearCover.ClearCoverOpenings}
}
object,
clearCoverRules,
meshParameters(styleParameters)
)
end
ReinforcementContainer CreateDoubleReinforcingMeshInBaseLayer(Entity object, table clearCoverRules, DoubleReinforcingMeshParameters meshParameters, EdgeReinforcementParameters oEdgeReinfParameters)
Создает двойную арматурную сетку в слое основы объекта. На текущий момент поддерживаются Стены и Пере...
ModelObjectType
Типы объектов.
Определения ModelObjectType.h:29
Выбирает грани объекта, которые образованы при пересечении с другим объектом.
Определения FaceSelector.h:21

Полный пример шаблона стиля смотрите по ссылке.