В последнем обновлении генератора комбинаций нагрузок, мы упростили внутреннюю работу модуля и добавили следующий функционал:
- Генерация комбинации нагрузок определяется одним файлом .json. (Схема) для каждого стандарта.
- Группы и комбинации нагрузок можно создавать без необходимости предварительного назначения нагрузок в пространстве S3D-моделирования..
- Узоры, которые основаны на старых “Расширьте ветровые нагрузки” флажок, теперь работаем с любыми вариантами нагрузки.
Номенклатура
В последней версии генератора комбинаций нагрузок, имя варианта нагрузки, которое использовалось для многих вещей:
- Действовать как уникальный идентификатор.
- Различать нагрузку супер чехол и загружение, и всегда требуют одного значения в каждом (приводящие к странным вещам, таким как мертв: мертвых).
- Оставаться читабельным для человека, при этом оставаясь достаточно маленьким для выпадающих меню путем сокращения слов (Жить: Q-расстояние-крыша-пол).
В самом последнем обновлении, мы разделили названия вариантов нагрузки на символы, которые компактны и используются в условиях ограниченного пространства (например, при названии сочетаний нагрузок: 1.25Д1 + 1.5В + 1.5Лд + 0.5Sl + 0.5T), и этикетки, который будет описательным (используется, например, в раскрывающихся списках). Оба символы и этикетки должно быть уникальным в рамках данного стандарта. Мы также позволим случаи нагрузки называться так же, как нагрузка супер чехол, обычно для варианта нагрузки по умолчанию (наиболее часто используемый). Два примера, использованные выше, будут разделены следующим образом.:
{«Д»: "Мертвый"}
{«Лдр»: "Жить - Концентрированный, Крыши, Пол"}
В символ должен состоять минимум из одной заглавной буквы, который определяет суперслучай. В супер чехол это новая концепция, используется для группировки аналогичных случаев нагрузки, которые обычно действуют вместе. В супер чехол метка указывается в начале метки варианта нагрузки (перед тире). В примере выше (Еврокод) вариант нагрузки Ldr будет частью суперслучая L (под названием Live на лейбле), наряду с другими вариантами нагрузки, такими как Ldd и Ldo. За кулисами, в супер чехол в основном используется для обеспечения соблюдения правил фильтрации, то есть определить, какие строки схемы необходимо сохранить, а какие удалить..

Первая часть этикетки (перед тире) это имя супер чехол. Вторая часть - описание, использование запятых для отделения категорий от подкатегорий. Вторая часть необязательна, но только один вариант нагрузки может принимать значение по умолчанию супер чехол место.
Строки стандартных схем
Каждый стандарт имеет схема который полностью определяет все возможные комбинации нагрузок по настоящему стандарту.. В Схема.json файл довольно простой, но это может стать довольно длинным, особенно в стандартах (как Еврокод) которые требуют множества перестановок. Возьмем простой пример, возьмем следующий пример требования.
1.2*D + 1.5*L + (0.5*S или 0,5*W или 0,5*T)
Чтобы преобразовать это в наш схема, нам нужно разбить его на каждую возможную перестановку:
1.2*D + 1.5*L 1.2*D + 1.5*L + 0.5*S 1.2*D + 1.5*L + 0.5*W 1.2*D + 1.5*L + 0.5*T 1.2*D + 1.5*L + 0.5*S + 0.5*W 1.2*D + 1.5*L + 0.5*W + 0.5*T 1.2*D + 1.5*L + 0.5*T + 0.5*S 1.2*D + 1.5*L + 0.5*S + 0.5*W + 0.5*T
После того, как каждое сочетание нагрузок будет указано таким образом,, вы можете построить схему, выполнив следующие шаги:
- Используйте каждый ключ и коэффициент нагрузки для создания объекта строки схемы..
- Назовите каждую строку уникальным идентификатором. (так как это будет объект). Соглашение заключается в использовании тире для разделения различных элементов имени..
- На один уровень выше, группировать строки по критериям (прочность, работоспособность, случайный, и т.п.)
Конечный результат должен выглядеть примерно так:
"ряды": {
"прочность":{
"А-1-у": {"D": 1.40},
"А-2а-у":{"D": 1.25, "L": 1.50, "Лс": 1.50},
"А-2б-у":{"D": 1.25, "L": 1.50, "Лс": 1.50, "S": 1.00},
"А-2с-у":{"D": 1.25, "S": 1.50, "W": 0.40},
"А-3а-у":{"D": 1.25, "S": 1.50}
}
}
Алгоритм формирования комбинации нагрузок
Алгоритм проходит несколько этапов для создания окончательного объекта комбинации нагрузок.:
- В схема как определено выше, необходимо. Оно будет передано в функцию формирования основной комбинации нагрузок..
- Создан объект для группировки количества случаи нагрузки по шаблон. Например, давайте рассмотрим запрос на варианты нагрузки ниже:
2 Мертвая нагрузка, с шаблоном слияния 4 Варианты ветровой нагрузки, с индивидуальным рисунком 1 Снеговые нагрузки, с индивидуальным рисунком 2 Случаи мертвой нагрузки, с шаблоном слияния
Группировка узоры по загружение даст следующий объект, который будет передан в функцию формирования основной комбинации нагрузок.
input_by_case =
{
"D": {"сливаться": [2, 2], "индивидуальный": []},
"W": {"сливаться": [], "индивидуальный": [4]},
"S": {"сливаться": [], "индивидуальный": [1]}
}
- Последние два аргумента фильтруют объекты., которые позволяют фильтровать по критерии или по ключу схемы.
- Как только он получит все необходимые аргументы, функция формирования основной комбинации нагрузок называется. Эта функция проходит несколько вложенных циклов для создания каждой необходимой комбинации., которые объяснены в следующих пунктах списка, и показано на следующем рисунке.
- На самом высоком уровне, он проходит по строкам схемы. Каждая строка проверяется, следует ли ее сохранить или пропустить на этом этапе., используя объекты фильтрации и специальную логику, описанную в разделе ниже..
- В первый цикл вложен второй, который проходит через каждый запрошенный загружение в строке схемы. Если запрошенный загружение также существует строка схемы (запросы суммируются в объекте input_by_case), тогда мы переходим на следующий уровень.
- Во второй цикл вложен третий, который проходит через все возможные шаблон чтобы увидеть, есть ли в них группы нагрузки, которые можно создать, и запускает функцию, чтобы называть и генерировать их, когда они это делают.
- После того как все варианты нагрузки в строке схемы созданы и им присвоены имена, они рекомбинированы (вместе с их коэффициентами) в одну или несколько комбинаций нагрузок.

- Этот процесс повторяется для каждой строки схемы., помещение всех сгенерированных сочетаний нагрузок в окончательный объект сочетания нагрузок.
Ничего не стоит, что вся логика, связанная с шаблонами, происходит внутри одной строки схемы.. Знание этого важно для понимания поведения шаблонов.. Шаблон слияния, Например, не позволяет объединить что-либо, кроме загружения, которому оно присвоено. Это означает, что вы не можете:
- Объединение различных вариантов нагрузки вместе, как попытка объединить группы нагрузки D1 и L1.
- Объединить одинаковые варианты нагрузки в разных строках входной таблицы.. Например, в примере, приведенном в пункте #2 выше, нас просят сгенерировать 2 статические нагрузки с использованием шаблона слияния в двух отдельных строках. Конечные комбинации результатов будут выглядеть примерно так::
1.2*Д1 + 1.2*Д2 + 1.5*L 1.2*Д3 + 1.2*Д4 + 1.5*L 1.2*Д1 + 1.2*Д2 + 1.5*L + 0.5*S 1.2*Д3 + 1.2*Д4 + 1.5*L + 0.5*S 1.2*Д1 + 1.2*Д2 + 1.5*L + 0.5*W 1.2*Д3 + 1.2*Д4 + 1.5*L + 0.5*T
Автоматическая фильтрация ненужных сочетаний нагрузок
Хотя приведенный выше алгоритм работает без какой-либо фильтрации, это может привести к избыточным сочетаниям нагрузок, что приводит к дополнительному вычислительному времени и избыточным результатам. Примите следующие комбинации нагрузок:
1.2*D + 1.5*L 1.2*D + 1.5*L + 0.5*S 1.2*D + 1.5*L + 0.5*W 1.2*D + 1.5*L + 0.5*T
Если у нас есть один случай постоянной нагрузки, эти четыре сочетания нагрузок приведут к идентичным сочетаниям нагрузок:
1.2*D
1.2*D
1.2*D
1.2*D
Чтобы избежать этой ситуации, используются четыре правила, каждое из которых содержит небольшие исключения. Первый, давайте посмотрим на правила. По умолчанию комбинация сохраняется, а правила используются для определения того, какую из них следует исключить..
Фильтрация по критериям
Этот случай довольно понятен. Если критерии не запрашивается, все строки схемы, связанные с этим критерии отброшены.
Фильтрация по символам ключа схемы
Ключи схемы обычно представляют собой разделенные запятыми указатели на исходную ссылку.. Например, в примере NBCC ниже, ключ состоит из трех компонентов:
- А: Первый термин обычно является основной ссылкой, обратитесь к таблице, в которой взята эта часть нагрузок.
- 2б: Второй термин обычно представляет собой уникальный идентификатор сочетания нагрузок внутри таблицы..
- U: Третий термин обычно зарезервирован для обозначения случая, когда большое количество сочетаний нагрузок переставляются с небольшими изменениями.. Например, он может указывать, являются ли статические нагрузки в сочетании нагрузок благоприятными ( е ) или неблагоприятный ( U ).
{
"прочность":{
"А-2б-у":{"D": 1.25, "L": 1.50, "Лс": 1.50, "S": 1.00},
}
}
Фильтрацию по ключу схемы можно выполнить для любого из этих терминов.. Например, если мы хотим фильтровать по третьему члену, мы можем добавить следующий фильтр, который создаст раскрывающийся список фильтрации для этого термина:
"name_filters": {
"Сила": {
"Мертвая нагрузка": {
"позиция": 2,
"подсказка": "",
"предметы": {
"Благоприятный": "е",
"Неблагоприятный": "U"
},
"значения по умолчанию": ["Благоприятный", "Неблагоприятный"]
}
}
}
Все возможные названия раскрывающегося списка и связанные с ними термины должны быть перечислены в разделе «Элементы».. Будут сохранены только строки схемы с совпадающими символами.. Если необходимо сохранить строку схемы независимо от того, что введено в фильтр, термин можно оставить пустым. Любой ключ схемы, который не содержит все соответствующие термины раскрывающегося списка, будет удален..
Избыточные комбинации
Если строка схемы не отфильтровывается на первых двух шагах, он переходит к шагу номер три. На этом этапе, решена проблема избыточности из приведенного выше примера.. Сделать это, нам нужно смотреть на два объекта одновременно, строка схемы и отсортированный объект input_by_case (смотри описание выше), который описывает, какие варианты нагрузки были запрошены. Если строка схемы содержит какой-либо суперслучай, которого нет в объекте input_by_case, комбинация нагрузок удалена. Брать, Например, следующая строка схемы:
"А-2а-у":{"D": 1.25, "L": 1.50, "S": 1.50}
и следующий объект input_by_case:
input_by_case =
{
"D": {"сливаться": [], "индивидуальный": [1]},
"L": {"сливаться": [], "индивидуальный": [4]}
}
В этом примере, строка схемы содержит супер чехол S, который не был запрошен. Сохранение этой строки приведет к тому, что сочетание нагрузок будет идентично сочетанию нагрузок, связанному со строкой схемы ниже., поэтому оно удалено.
"А-1а-у":{"D": 1.25, "L": 1.50}
Исключения
Хотя такое поведение обычно желательно, бывают случаи, когда НЕ удаление строки при отсутствии варианта нагрузки приводит к гораздо более простой схеме. Например, если у нас есть горизонтальные нагрузки на землю, которые следует добавлять к каждой комбинации схемы, но не всегда присутствуют, мы могли бы скопировать и вставить все комбинации нагрузок и изменить ключ схемы для новых строк, добавив суффикс типа «h» для горизонтальных нагрузок на землю.. альтернативно, мы можем просто добавить горизонтальную нагрузку на землю во все случаи и добавить исключение сохранения для варианта нагрузки в метаданных. Таким образом, если вариант нагрузки не запрошен, оно не появится, но строка все равно сохранится. Результат выглядит примерно так в метасвойстве схемы.:
"ЧАС": {
"этикетка": "Боковая земля - Неблагоприятный",
"классифицировать": 1,
"исключения": ["держать"],
"старые_лейблы": []
},
Лишние комбинации
Если строка схемы не отфильтровывается на первых трех шагах, он переходит к шагу номер четыре. На этом этапе, проблема сопоставления конкретных случаев нагрузки между схемой и тем, что запрашивается. Если строка схемы и запрос имеют совпадающие суперслучаи, но запрошенный конкретный вариант нагрузки отсутствует в схеме, строка не будет сохранена. Брать, Например, следующая строка схемы:
"А-2а-у":{"D": 1.25, "Sl": 1.50}
и следующий input_by_case:
input_by_case =
{
"D": {"сливаться": [], "индивидуальный": [1]},
"Ш": {"сливаться": [], "индивидуальный": [1]}
}
В этом примере, и строка схемы, и запрос имеют совпадающие суперслучаи. тем не мение, запрос требует комбинации с Sh, чего строка схемы не предоставляет. таким образом, строка схемы не сохраняется.
Исключения
Снова, такое поведение обычно желательно, но может привести к проблемам. Одна из таких проблем заключается в том, что в стандартах есть варианты нагружения, которые имеют общий суперслучай., но не действуйте одновременно. Например, в ASCE, ветровые нагрузки W и смерчовые нагрузки Wt действуют не одновременно, хотя у них один и тот же суперслучай W. Когда мы сталкиваемся с этой проблемой, мы можем добавить исключение для переключения на другой супер чехол прежде чем код запустится в метаданных. За кулисами, символ, следующий за “->” символы будут относиться к варианту нагрузки, который будет моделировать варианты нагрузки, действующие в этом супер чехол. Результат выглядит примерно так в метасвойстве схемы.:
"вес" : {
"этикетка": "ветер - Торнадо",
"классифицировать": 8,
"исключения": ["суперкейс->Икс"],
"старые_лейблы": []
},
В случае выше, в супер чехол “W” будет заменен на “Икс” до запуска кода. Эту функцию также можно использовать для отправки групповых загружений с уникальными супер чехол символы вместе.

