Renga — российская BIM-система для комплексного проектирования, разработанная на основе геометрического ядра C3D Modeler. В системе свойства объектов играют важную роль, так как используются при составлении спецификаций и легенд, создании стилей маркеров и фильтров, а также во многих других сценариях проектирования.
В прошлом году разработчики Renga интегрировали возможность работы со строковыми выражениями в вычисляемых свойствах объектов. Это нововведение открывает новые горизонты для автоматизации и гибкой настройки параметров моделей.
Ранее Renga поддерживала вычисляемые свойства, которые определялись по формулам с вещественными параметрами. Теперь же появилась возможность использовать строковые параметры в формулах благодаря интеграции класса MbTreeStringVariable
из C3D Modeler. Это решение было внедрено по просьбе разработчиков Renga и стало важным шагом в расширении функционала системы.
MbTreeStringVariable
позволяет:
- сравнивать значения переменных со строками;
- присваивать строковые значения;
- выполнять логические операции сравнения (равенство и неравенство) с другими строковыми переменными и строковыми литералами.
Рассмотрим пример типичного выражения в Renga, определяющего значение свойства типа данных «Площадь» в зависимости от имени помещения:
Имя помещения == 'Лоджия' ? Чистая площадь пола * 0.5 : Имя помещения == 'Балкон' || Имя помещения == 'Терраса' ? Чистая площадь пола * 0.3 : Чистая площадь пола
В этом выражении учитываются понижающие коэффициенты отдельных помещений при расчете общей площади жилого помещения.
- Если имя помещения — Лоджия, его площадь равна половине чистой площади пола.
- Если имя помещения — Балкон или Терраса, его площадь составляет треть чистой площади пола.
- В остальных случаях площадь равна чистой площади пола.
На практике работа со строковыми переменными позволяет автоматизировать различные аспекты проектирования:
- создание интеллектуальных фильтров для спецификаций и легенд;
- автоматическое присваивание значений свойств объектов в зависимости от текстовых атрибутов;
- более сложные и гибкие условия для вычисляемых параметров моделей.
Тесное взаимодействие с разработчиками C3D Modeler позволило интегрировать поддержку строковых переменных, что значительно расширило возможности автоматизации и интеллектуальной обработки данных в Renga. Такой шаг свидетельствует о непрерывном развитии BIM-платформы и ориентации на потребности пользователей.
Дмитрий Кириллов, представитель команды разработчиков 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".»