11.02.2025 • C3D Modeler

Строковые выражения в Renga: новый уровень автоматизации BIM-проектов

Renga — российская BIM-система для комплексного проектирования, разработанная на основе геометрического ядра C3D Modeler. В системе свойства объектов играют важную роль, так как используются при составлении спецификаций и легенд, создании стилей маркеров и фильтров, а также во многих других сценариях проектирования.

В прошлом году разработчики Renga интегрировали возможность работы со строковыми выражениями в вычисляемых свойствах объектов. Это нововведение открывает новые горизонты для автоматизации и гибкой настройки параметров моделей.

Ранее Renga поддерживала вычисляемые свойства, которые определялись по формулам с вещественными параметрами. Теперь же появилась возможность использовать строковые параметры в формулах благодаря интеграции класса MbTreeStringVariable из C3D Modeler. Это решение было внедрено по просьбе разработчиков Renga и стало важным шагом в расширении функционала системы.

MbTreeStringVariable позволяет:

  • сравнивать значения переменных со строками;
  • присваивать строковые значения;
  • выполнять логические операции сравнения (равенство и неравенство) с другими строковыми переменными и строковыми литералами.

Рассмотрим пример типичного выражения в Renga, определяющего значение свойства типа данных «Площадь» в зависимости от имени помещения:

Имя помещения == 'Лоджия' ? Чистая площадь пола * 0.5 : Имя помещения == 'Балкон' || Имя помещения == 'Терраса' ? Чистая площадь пола * 0.3 : Чистая площадь пола

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

  • Если имя помещения — Лоджия, его площадь равна половине чистой площади пола.
  • Если имя помещения — Балкон или Терраса, его площадь составляет треть чистой площади пола.
  • В остальных случаях площадь равна чистой площади пола.
Строковые выражения в Renga: новый уровень автоматизации BIM-проектов, фото 1
Пример записи вычисляемых свойств со строковыми выражениями в Renga

Дмитрий Кириллов, представитель команды разработчиков C3D Modeler

Дмитрий Кириллов, представитель команды разработчиков C3D Modeler:

«В C3D Modeler по просьбе разработчиков Renga появилась возможность работы с переменными строкового типа (MbTreeStringVariable). Данные переменные могут быть использованы при разборе математического выражения в логических операциях сравнения (проверка на равенство и неравенство) с другими строковыми переменными, а также с литералами строкового типа.

Например, для двух заданных строковых переменных MbTreeStringVariable var1("v1", "str1") и MbTreeStringVariable var2("v2", "str2") значение выражения "v1 == v2" равно нулю (значение первой переменной "str1" не равно значению второй переменной "str2"). Аналогичным образом осуществляется сравнение с литералами строкового типа. Например, значение выражения "v1 == 'str1'" равно единице (значение переменной v1 равно "str1").

Строковые переменные могут быть использованы в условном (тернарном) операторе. В этом случае строковая переменная может быть использована как в условии, так и в выражениях оператора. Значением тернарного оператора может быть как переменная строкового типа, так и переменная вещественного типа. Например, значение выражения "v1 == 'str2'? 1.0 : 2.0" равно 2.0. Строковое значение выражения "10.0 > 5.0 ? v1 : v2" равно "str1".

Тернарный оператор может быть вложенным. Например, значение выражения "v1 == v2 ? (v1 != v2 ? v1 : v2) : v2" равно "str2".»

На практике работа со строковыми переменными позволяет автоматизировать различные аспекты проектирования:

  • создание интеллектуальных фильтров для спецификаций и легенд;
  • автоматическое присваивание значений свойств объектов в зависимости от текстовых атрибутов;
  • более сложные и гибкие условия для вычисляемых параметров моделей.

Тесное взаимодействие с разработчиками C3D Modeler позволило интегрировать поддержку строковых переменных, что значительно расширило возможности автоматизации и интеллектуальной обработки данных в Renga. Такой шаг свидетельствует о непрерывном развитии BIM-платформы и ориентации на потребности пользователей.

Поделиться материалом
Вверх