🧩 Tekla API С# — класс Operation: магия, спрятанная в одном месте
Если бы у Tekla Structures был волшебник, который умеет гнуть, копировать, комбинировать и экспортировать - это был бы класс Operation.
Это статический класс (
🔧 Что он умеет:
🪄 Геометрия и модель
CreateBentPlateByParts - создаёт гнутую пластину между двумя деталями.
ExplodeBentPlate - превращает обратно в обычные пластины.
📦 Работа с данными и экспорт
🔩 Арматура и бетон
🧱 Манипуляции с объектами
🌐 Экспорт в Web
⚙️ Пример использования:
- и вот у вас уже две одинаковые балки, аккуратно смещённые на два метра вверх.
💡 Зачем знать про Operation:
Он - как универсальный инструмент API Tekla:
📌 автоматизация рутинных действий
📌 быстрые проверки (фильтры, выделение, нумерация)
📌 геометрические операции без ручной возни
💬 Совет:
Если вы пишете плагины под Tekla — перед тем как “изобретать велосипед”, посмотрите, не делает ли это уже Operation.
Скорее всего, делает. И даже чище, чем хотелось бы 😎
#nipgroup #Tekla #TeklaSupport #TeklaHelp #TeklaAPI
Если бы у Tekla Structures был волшебник, который умеет гнуть, копировать, комбинировать и экспортировать - это был бы класс Operation.
Это статический класс (
public static class Operation) - значит, вы не создаёте его экземпляр, а просто вызываете нужные методы напрямую.🔧 Что он умеет:
🪄 Геометрия и модель
Combine(Beam, Beam) - объединяет балки.Split(Beam, Point) - наоборот, делит.CreateBentPlateByParts - создаёт гнутую пластину между двумя деталями.
ExplodeBentPlate - превращает обратно в обычные пластины.
📦 Работа с данными и экспорт
CreateIFC4ExportFromAll() / CreateIFC4ExportFromSelected() - экспорт модели или выбранных объектов в IFC4.CreateReportFromAll() / CreateReportFromSelected() генерация отчётов по шаблону.CreateNCFilesFromSelected() - выпуск NC-файлов для металлоконструкций.CreateMISFileFromAll() - MIS-файлы, если вы в старой школе.🔩 Арматура и бетон
Group() / Ungrouping() - группировка и разгруппировка арматуры.AddToPourUnit() и RemoveFromPourUnit() - управление бетонными заливками.🧱 Манипуляции с объектами
CopyObject() и MoveObject() - перемещение и копирование объектов (в том числе по системам координат).ObjectMatchesToFilter() - проверка, подходит ли объект под фильтр.Highlight() и ShowOnlySelected() - управление в UI (пользовательском интерфейсе).🌐 Экспорт в Web
SaveAsWebModel() / SaveSelectedAsWebModel() - выгрузка модели или её части в формат, доступный для просмотра через браузер.⚙️ Пример использования:
var part = new Beam(new Point(0,0,0), new Point(6000,0,0));part.Insert();var copy = Operation.CopyObject(part, new Vector(0, 0, 2000));- и вот у вас уже две одинаковые балки, аккуратно смещённые на два метра вверх.
💡 Зачем знать про Operation:
Он - как универсальный инструмент API Tekla:
📌 автоматизация рутинных действий
📌 быстрые проверки (фильтры, выделение, нумерация)
📌 геометрические операции без ручной возни
💬 Совет:
Если вы пишете плагины под Tekla — перед тем как “изобретать велосипед”, посмотрите, не делает ли это уже Operation.
Скорее всего, делает. И даже чище, чем хотелось бы 😎
#nipgroup #Tekla #TeklaSupport #TeklaHelp #TeklaAPI
👍7🔥2
Tekla API С#: фильтры
В Tekla Structures фильтры - это не только клики в окне выбора, но и мощный инструмент автоматизации.
С помощью API можно генерировать фильтры на лету, управлять ими через код и использовать в макросах, плагинах или внешних скриптах.
💡 Что такое BinaryFilterExpression
Это основа любого фильтра в Tekla API.
BinaryFilterExpression описывает простое выражение вроде:
PartName == "BEAM1"
Пример создания:
📘 Важно: таких выражений может быть сколько угодно, и их можно объединять через логические операторы (OR, AND и т.д.).
🧠 Класс Filter — собираем выражения в фильтр
Класс Filter позволяет объединить несколько BinaryFilterExpression и сохранить всё как файл фильтра Tekla (.SObjGrp или .ObjGrp).
Пример: создаём фильтр, выбирающий элементы, у которых имя "BEAM1", "BEAM2", "BEAM3",
или комментарий начинается с "test".
// Создаём выражения
// Описываем логические выражения
var e3 = new BinaryFilterExpression(PartName, StringOperatorType.IS_EQUAL, Beam3);
// Объединяем их в коллекцию
// Сохраняем фильтр
После запуска в Tekla появится фильтр CustomFilter.SObjGrp 🎉
Теперь его можно использовать для выбора объектов.
🚀 Вывод
Tekla API позволяет не просто использовать фильтры -
а программировать логику выбора элементов,
создавать сложные правила и интегрировать их в ваши инструменты BIM-автоматизации.
#nipgroup #Tekla #TeklaSupport #TeklaHelp #TeklaAPI
В 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-автоматизации.
#nipgroup #Tekla #TeklaSupport #TeklaHelp #TeklaAPI
🔥10❤1
Чертеж монолитизации швов между пустотными плитами
🏗 Новый ролик на канале!
В видео:
🔹 Настройка видов и фильтров
🔹 Отображение меток плит и арматуры
🔹 Создание узлов и компоновка чертежа
🔹 Финальная корректировка и оформление
📹 Смотреть ролик
👉 YouTube👉 https://youtu.be/ZB5l4_KIq1U
👉 RuTube👉 https://rutube.ru/video/a09afd31cbae608597ba431143215500/
👉 Дзен👉 https://dzen.ru/video/watch/6901cfe82e906c2a4a38904a
#nipgroup #Tekla #TeklaTutorial
🏗 Новый ролик на канале!
В видео:
🔹 Настройка видов и фильтров
🔹 Отображение меток плит и арматуры
🔹 Создание узлов и компоновка чертежа
🔹 Финальная корректировка и оформление
📹 Смотреть ролик
👉 YouTube👉 https://youtu.be/ZB5l4_KIq1U
👉 RuTube👉 https://rutube.ru/video/a09afd31cbae608597ba431143215500/
👉 Дзен👉 https://dzen.ru/video/watch/6901cfe82e906c2a4a38904a
#nipgroup #Tekla #TeklaTutorial
Чертежи планов и разрезов по стенам
🏗 Новый ролик на канале!
В видео:
🔹 Развертки и разрезы стен
🔹 Настройка видов и меток
🔹 Добавление 3D-вида
🔹 Формирование спецификации
📹 Смотреть ролик
👉 YouTube👉 https://youtu.be/tg1C7_y6bv4
👉 RuTube👉 https://rutube.ru/video/b4e014bf12e39db291c0f2bc7d079b1c/
👉 Дзен👉 https://dzen.ru/video/watch/690b5b1ef0a5043518e3509f
#nipgroup #Tekla #TeklaTutorial
🏗 Новый ролик на канале!
В видео:
🔹 Развертки и разрезы стен
🔹 Настройка видов и меток
🔹 Добавление 3D-вида
🔹 Формирование спецификации
📹 Смотреть ролик
👉 YouTube👉 https://youtu.be/tg1C7_y6bv4
👉 RuTube👉 https://rutube.ru/video/b4e014bf12e39db291c0f2bc7d079b1c/
👉 Дзен👉 https://dzen.ru/video/watch/690b5b1ef0a5043518e3509f
#nipgroup #Tekla #TeklaTutorial
❤3
Моделирование цоколя и отмостки коттеджа
🏗 Новый ролик на канале!
В видео:
🔹 Гидроизоляция и утепление
🔹 Песчаное основание и штукатурка
🔹 Создание отмостки и отлива
🔹 Финальная корректировка модели
📹 Смотреть ролик
👉 YouTube👉 https://youtu.be/nUqLBYDMMpg
👉 RuTube👉 https://rutube.ru/video/404946f6412db71fd07d6d743288ddba/
👉 Дзен👉 https://dzen.ru/video/watch/691494e46f9bcc2e5448d068
#nipgroup #Tekla #TeklaTutorial
🏗 Новый ролик на канале!
В видео:
🔹 Гидроизоляция и утепление
🔹 Песчаное основание и штукатурка
🔹 Создание отмостки и отлива
🔹 Финальная корректировка модели
📹 Смотреть ролик
👉 YouTube👉 https://youtu.be/nUqLBYDMMpg
👉 RuTube👉 https://rutube.ru/video/404946f6412db71fd07d6d743288ddba/
👉 Дзен👉 https://dzen.ru/video/watch/691494e46f9bcc2e5448d068
#nipgroup #Tekla #TeklaTutorial
ComponentInput в Tekla API C#: просто о том, как скормить компоненту всё, что ему нужно
Когда мы создаём компонент в Tekla Structures через API, ему обязательно нужен «рацион» - набор объектов, точек и прочих структур, которые помогут компоненту появиться на свет.
За подачу этого рациона отвечает специальный класс: ComponentInput.
Сегодня разберёмся, что это за зверь, как с ним жить и как красиво использовать в своих инструментах.
🔍 Что такое ComponentInput?
ComponentInput - это коллекция, в которую вы складываете всё, что требуется вашему компоненту:
объекты модели (балки, пластины, детали),
точки,
полигоны,
либо комбинацию всего этого.
Класс реализует интерфейсы ICollection и IEnumerable, так что с перебором и базовыми коллекционными операциями всё по-взрослому.
🧱 Основные возможности
📌 Конструктор
📦 Что можно добавить?
AddInputObject(modelObject) - добавляет одиночный объект.
AddInputObjects(listOfObjects) - добавляет список объектов.
AddInputPolygon(polygon) - добавляет полигон.
AddOneInputPosition(point) - одна точка.
AddTwoInputPositions(p1, p2) - две точки.
🧠 Пример: добавляем компонент к балке
Что здесь происходит?
создаём балку;
создаём компонент;
добавляем балку как входной объект;
подгружаем атрибуты;
пытаемся вставить.
🧭 Когда нужен ComponentInput?
Используйте ComponentInput всякий раз, когда:
вставляете Component или CustomComponent,
нужно передать объект модели, точку, набор точек или полигон,
хотите автоматически формировать входные данные в инструментах Tekla.
Простая мысль:
компонент = функция, ComponentInput = аргументы.
🎯 Небольшой совет
Если вы делаете свои инструменты, очень удобно формировать ComponentInput динамически - на основе выбора пользователя в модели или автоматически через ваш код-наблюдатель.
#nipgroup #Tekla #TeklaSupport #TeklaHelp #TeklaAPI
Когда мы создаём компонент в Tekla Structures через API, ему обязательно нужен «рацион» - набор объектов, точек и прочих структур, которые помогут компоненту появиться на свет.
За подачу этого рациона отвечает специальный класс: ComponentInput.
Сегодня разберёмся, что это за зверь, как с ним жить и как красиво использовать в своих инструментах.
🔍 Что такое ComponentInput?
ComponentInput - это коллекция, в которую вы складываете всё, что требуется вашему компоненту:
объекты модели (балки, пластины, детали),
точки,
полигоны,
либо комбинацию всего этого.
Класс реализует интерфейсы ICollection и IEnumerable, так что с перебором и базовыми коллекционными операциями всё по-взрослому.
🧱 Основные возможности
📌 Конструктор
var input = new ComponentInput();📦 Что можно добавить?
AddInputObject(modelObject) - добавляет одиночный объект.
AddInputObjects(listOfObjects) - добавляет список объектов.
AddInputPolygon(polygon) - добавляет полигон.
AddOneInputPosition(point) - одна точка.
AddTwoInputPositions(p1, p2) - две точки.
🧠 Пример: добавляем компонент к балке
public class ComponentInputExample{public void Example(){Beam Beam = new Beam(new Point(12000, 0, 0), new Point(12000, 0, 6000));Beam.Profile.ProfileString = "380*380";Beam.Material.MaterialString = "K40-1";Beam.Insert();Component Component = new Component();Component.Name = "Component Test";Component.Number = 30000063;ComponentInput ComponentInput = new ComponentInput();ComponentInput.AddInputObject(Beam);Component.SetComponentInput(ComponentInput);Component.LoadAttributesFromFile("standard");Component.SetAttribute("side_bar_space", 333.0);if (!Component.Insert()){Console.WriteLine("Component Insert failed");}}}Что здесь происходит?
создаём балку;
создаём компонент;
добавляем балку как входной объект;
подгружаем атрибуты;
пытаемся вставить.
🧭 Когда нужен ComponentInput?
Используйте ComponentInput всякий раз, когда:
вставляете Component или CustomComponent,
нужно передать объект модели, точку, набор точек или полигон,
хотите автоматически формировать входные данные в инструментах Tekla.
Простая мысль:
компонент = функция, ComponentInput = аргументы.
🎯 Небольшой совет
Если вы делаете свои инструменты, очень удобно формировать ComponentInput динамически - на основе выбора пользователя в модели или автоматически через ваш код-наблюдатель.
#nipgroup #Tekla #TeklaSupport #TeklaHelp #TeklaAPI
👍5