Tekla API С#: фильтры — 7 апреля 2026 г. в 08:11:53.139
Tekla API С#: фильтры В Tekla Structures фильтры - это не только клики в окне выбора, но и мощный инструмент автоматизации. С помощью API можно генерировать фильтры на лету, управлять ими через код и использовать в макросах, плагинах или внешних скриптах. 💡 Что такое BinaryFilterExpression Это основа любого фильтра в Tekla API. BinaryFilterExpression описывает простое выражение вроде: PartName == "BEAM1" Пример создания: PartFilterExpressions.Name PartName = new PartFilterExpressions.Name(); StringConstantFilterExpression Beam1 = new StringConstantFilterExpression("BEAM1"); BinaryFilterExpression expr = new BinaryFilterExpression( PartName, StringOperatorType.IS_EQUAL, Beam1 ); 📘 Важно: таких выражений может быть сколько угодно, и их можно объединять через логические операторы (OR, AND и т.д.). 🧠 Класс Filter — собираем выражения в фильтр Класс Filter позволяет объединить несколько BinaryFilterExpression и сохранить всё как файл фильтра Tekla (.SObjGrp или .ObjGrp). Пример: создаём фильтр, выбирающий элементы, у которых имя "BEAM1", "BEAM2", "BEAM3", или комментарий начинается с "test". using System; using System.IO; using Tekla.Structures.Filtering; using Tekla.Structures.Filtering.Categories; public class FilterExample { public void CreateSelectionFilter() { // Создаём выражения var PartName = new PartFilterExpressions.Name(); var Beam1 = new StringConstantFilterExpression("BEAM1"); var Beam2 = new StringConstantFilterExpression("BEAM2"); var Beam3 = new StringConstantFilterExpression("BEAM3"); var Comment = new PartFilterExpressions.CustomString("Comment"); var Test = new StringConstantFilterExpression("test"); // Описываем логические выражения var e1 = new BinaryFilterExpression(PartName, StringOperatorType.IS_EQUAL, Beam1); var e2 = new BinaryFilterExpression(PartName, StringOperatorType.IS_EQUAL, Beam2); var e3 = new BinaryFilterExpression(PartName, StringOperatorType.IS_EQUAL, Beam3); var e4 = new BinaryFilterExpression(Comment, StringOperatorType.STARTS_WITH, Test); // Объединяем их в коллекцию var expressions = new BinaryFilterExpressionCollection(); expressions.Add(new BinaryFilterExpressionItem(e1, BinaryFilterOperatorType.BOOLEAN_OR)); expressions.Add(new BinaryFilterExpressionItem(e2, BinaryFilterOperatorType.BOOLEAN_OR)); expressions.Add(new BinaryFilterExpressionItem(e3, BinaryFilterOperatorType.BOOLEAN_OR)); expressions.Add(new BinaryFilterExpressionItem(e4)); // Сохраняем фильтр string filterDir = Path.Combine(@"C:\ModelPath", "attributes"); string filterPath = Path.Combine(filterDir, "CustomFilter"); var filter = new Filter(expressions); filter.CreateFile(FilterExpressionFileType.OBJECT_GROUP_SELECTION, filterPath); } } После запуска в Tekla появится фильтр CustomFilter.SObjGrp 🎉 Теперь его можно использовать для выбора объектов. 🚀 Вывод Tekla API позволяет не просто использовать фильтры - а программировать логику выбора элементов, создавать сложные правила и интегрировать их в ваши инструменты BIM-автоматизации. 👇ОБСУДИМ?!👇 MAX Беседка #nipgroup #Tekla #TeklaSupport #TeklaHelp #TeklaAPI

