⚙️ Подключение библиотек Tekla API в C#|
Tekla Structures — это мощная BIM-система для 3D-моделирования, которую активно используют в строительстве и проектировании.
Один из её больших плюсов — API, позволяющий автоматизировать рутину и интегрировать Tekla с другими приложениями.
Разберёмся, как подключить библиотеки Tekla API в C# и запустить первый код.
🟢 Шаг 1. Установка Tekla Structures
API работает только вместе с установленной программой. Без установленной Tekla вы не сможете запустить свой код.
🟢 Шаг 2. Совпадение версий библиотек
Очень важно, чтобы версия библиотек, подключённых в проект, совпадала с версией Tekla Structures.
Иначе возможны ошибки — от устаревших функций до несовместимости методов.
👉 Рекомендации:
Проверьте версию Tekla в Справка → О программе.
Подключайте именно те .
После разработки обязательно тестируйте плагин в той же версии Tekla.
Читайте документацию к API для своей версии — там есть список изменений.
🟢 Шаг 3. Настройка окружения
Используем .NET Framework 4.7.2+.
IDE: лучше всего Visual Studio.
Создаём проект типа Console App (.NET Framework).
🟢 Шаг 4. Подключение библиотек
В Visual Studio:
Откройте Solution Explorer.
ПКМ по References → Add Reference.
Укажите нужные
В коде добавьте:
🟢 Шаг 5. Первый код
Пример создания балки в Tekla API:
🟢 Шаг 6. Запуск проекта
Запустите Tekla Structures.
Запустите консольное приложение.
В модели появится новый элемент 🎉
🚀 Вот ты и встал на путь профессионального разработчика Tekla API.
#nipgroup #Tekla #TeklaSupport #TeklaHelp #TeklaAPI
Tekla Structures — это мощная BIM-система для 3D-моделирования, которую активно используют в строительстве и проектировании.
Один из её больших плюсов — API, позволяющий автоматизировать рутину и интегрировать Tekla с другими приложениями.
Разберёмся, как подключить библиотеки Tekla API в C# и запустить первый код.
🟢 Шаг 1. Установка Tekla Structures
API работает только вместе с установленной программой. Без установленной Tekla вы не сможете запустить свой код.
🟢 Шаг 2. Совпадение версий библиотек
Очень важно, чтобы версия библиотек, подключённых в проект, совпадала с версией Tekla Structures.
Иначе возможны ошибки — от устаревших функций до несовместимости методов.
👉 Рекомендации:
Проверьте версию Tekla в Справка → О программе.
Подключайте именно те .
dll, которые лежат в C:\Program Files\Tekla Structures\<версия>\bin.После разработки обязательно тестируйте плагин в той же версии Tekla.
Читайте документацию к API для своей версии — там есть список изменений.
🟢 Шаг 3. Настройка окружения
Используем .NET Framework 4.7.2+.
IDE: лучше всего Visual Studio.
Создаём проект типа Console App (.NET Framework).
🟢 Шаг 4. Подключение библиотек
В Visual Studio:
Откройте Solution Explorer.
ПКМ по References → Add Reference.
Укажите нужные
dll:Tekla.Structures.Model.dllTekla.Structures.Drawing.dllTekla.Structures.Customization.dllВ коде добавьте:
using Tekla.Structures.Model;using Tekla.Structures.Drawing;using Tekla.Structures.Customization;🟢 Шаг 5. Первый код
Пример создания балки в Tekla API:
using System;using Tekla.Structures.Model;class Program{ static void Main(string[] args){Model model = new Model();if (!model.GetConnectionStatus()){ Console.WriteLine("Model is not opened."); return; } Beam beam = new Beam( new Tekla.Structures.Geometry3d.Point(0, 0, 0), new Tekla.Structures.Geometry3d.Point(1000, 0, 0) );beam.Material = new Material("Steel");beam.Name = "New Beam";if (beam.Insert())Console.WriteLine("Beam successfully added!");elseConsole.WriteLine("Failed to add beam."); model.CommitChanges(); }}🟢 Шаг 6. Запуск проекта
Запустите Tekla Structures.
Запустите консольное приложение.
В модели появится новый элемент 🎉
🚀 Вот ты и встал на путь профессионального разработчика Tekla API.
#nipgroup #Tekla #TeklaSupport #TeklaHelp #TeklaAPI
🔥8⚡1👍1
Пример использования класса ViewHandler в Tekla API C#
В этом примере мы разберём, как работать с представлениями модели в Tekla Structures с помощью класса ViewHandler.
Мы:
🔹 установим стандартное представление,
🔹 получим все доступные виды,
🔹 выполним их отображение, перерисовку и скрытие.
🧩 Код примера
// Устанавливаем стандартное представление для объектов модели.
// Получаем перечислитель всех видов в модели.
// Перебираем все виды в модели.
// Получаем текущий вид.
// Отображаем текущий вид.
// Перерисовываем текущий вид.
// Скрываем текущий вид.
📖 Объяснение кода
1️⃣ Установка представления
👉 Сначала задаём стандартное отображение объектов модели. Это базовый стиль, с которым удобно начинать.
2️⃣ Получение всех видов
👉 Метод GetAllViews() возвращает перечислитель для обхода всех видов модели.
3️⃣ Перебор видов
👉 С помощью
4️⃣ Отображение и перерисовка
👉 Сначала показываем вид (
Это гарантирует актуальное отображение.
5️⃣ Скрытие вида
👉 Когда вид больше не нужен — убираем его из отображения.
✅ Заключение
Этот пример демонстрирует базовые операции с классом ViewHandler:
⚙️ установка представления,
👀 отображение,
🔄 перерисовка,
🙈 скрытие.
📌 Такие действия помогают разработчикам управлять визуализацией проекта в Tekla Structures и делают работу с моделью более удобной и наглядной
#nipgroup #Tekla #TeklaSupport #TeklaHelp #TeklaAPI
В этом примере мы разберём, как работать с представлениями модели в Tekla Structures с помощью класса ViewHandler.
Мы:
🔹 установим стандартное представление,
🔹 получим все доступные виды,
🔹 выполним их отображение, перерисовку и скрытие.
🧩 Код примера
using Tekla.Structures.Model.UI;public class Example{public void Example1(){// Устанавливаем стандартное представление для объектов модели.
ViewHandler.SetRepresentation("standard");// Получаем перечислитель всех видов в модели.
ModelViewEnumerator viewEnum = ViewHandler.GetAllViews();// Перебираем все виды в модели.
while (viewEnum.MoveNext()){// Получаем текущий вид.
View viewSel = viewEnum.Current;// Отображаем текущий вид.
ViewHandler.ShowView(viewSel);// Перерисовываем текущий вид.
ViewHandler.RedrawView(viewSel);// Скрываем текущий вид.
ViewHandler.HideView(viewSel); } }}📖 Объяснение кода
1️⃣ Установка представления
ViewHandler.SetRepresentation("standard");👉 Сначала задаём стандартное отображение объектов модели. Это базовый стиль, с которым удобно начинать.
2️⃣ Получение всех видов
ModelViewEnumerator viewEnum =
ViewHandler.GetAllViews();👉 Метод GetAllViews() возвращает перечислитель для обхода всех видов модели.
3️⃣ Перебор видов
while (viewEnum.MoveNext()){View viewSel = viewEnum.Current;}👉 С помощью
MoveNext() последовательно проходим по каждому виду.4️⃣ Отображение и перерисовка
ViewHandler.ShowView(viewSel);ViewHandler.RedrawView(viewSel);👉 Сначала показываем вид (
ShowView()), затем обновляем его (RedrawView()). Это гарантирует актуальное отображение.
5️⃣ Скрытие вида
ViewHandler.HideView(viewSel);👉 Когда вид больше не нужен — убираем его из отображения.
✅ Заключение
Этот пример демонстрирует базовые операции с классом ViewHandler:
⚙️ установка представления,
👀 отображение,
🔄 перерисовка,
🙈 скрытие.
📌 Такие действия помогают разработчикам управлять визуализацией проекта в Tekla Structures и делают работу с моделью более удобной и наглядной
#nipgroup #Tekla #TeklaSupport #TeklaHelp #TeklaAPI
👍8
Tekla API C# Использование CoordinateSystem и MatrixFactory
💡 В Tekla Structures всё, что вы видите на экране — живёт в своей системе координат. Если вы хотите точно управлять положением объектов, нужно уметь работать с CoordinateSystem.
🧭 CoordinateSystem
Класс CoordinateSystem описывает локальную систему координат с тремя элементами:
Origin - точка начала координат,
AxisX - направление оси X,
AxisY - направление оси Y.
На их основе Tekla автоматически строит ось Z как векторное произведение AxisX × AxisY.
Вы можете создать систему координат вручную:
Если оси не перпендикулярны или не нормализованы - Tekla создаст "кривую" рабочую плоскость. Поэтому важно:
нормализовать векторы:
проверять, чтобы`x.Cross(y)` не давал нулевой вектор.
🧮 MatrixFactory — трансформации
Класс MatrixFactory позволяет переводить точки и объекты между системами координат.
Главные методы:
FromCoordinateSystem(cs) - из локальной СК → в рабочую плоскость;
ToCoordinateSystem(cs) - наоборот, из рабочей плоскости → в локальную;
ByCoordinateSystems(cs1, cs2) - напрямую из одной СК в другую.
Пример:
🎯 Тот же результат можно получить в два шага:
📌 Практический смысл
Работа с системами координат - ключ к точному позиционированию элементов, особенно при:
- создании закладных, пластин и вырезов;
- копировании объектов между сборками;
- вычислении ориентации деталей.
#nipgroup #Tekla #TeklaSupport #TeklaHelp #TeklaAPI
💡 В Tekla Structures всё, что вы видите на экране — живёт в своей системе координат. Если вы хотите точно управлять положением объектов, нужно уметь работать с CoordinateSystem.
🧭 CoordinateSystem
Класс CoordinateSystem описывает локальную систему координат с тремя элементами:
Origin - точка начала координат,
AxisX - направление оси X,
AxisY - направление оси Y.
На их основе Tekla автоматически строит ось Z как векторное произведение AxisX × AxisY.
Вы можете создать систему координат вручную:
var origin = new Point(0, 0, 0);var x = new Vector(1, 0, 0);var y = new Vector(0, 1, 0);var cs = new CoordinateSystem(origin, x, y);Если оси не перпендикулярны или не нормализованы - Tekla создаст "кривую" рабочую плоскость. Поэтому важно:
нормализовать векторы:
x.Normalize(), y.Normalize();проверять, чтобы`x.Cross(y)` не давал нулевой вектор.
🧮 MatrixFactory — трансформации
Класс MatrixFactory позволяет переводить точки и объекты между системами координат.
Главные методы:
FromCoordinateSystem(cs) - из локальной СК → в рабочую плоскость;
ToCoordinateSystem(cs) - наоборот, из рабочей плоскости → в локальную;
ByCoordinateSystems(cs1, cs2) - напрямую из одной СК в другую.
Пример:
Beam beam1 = new Beam();Beam beam2 = new Beam();Point point1 = new Point(1000, 0, 0);var cs1 = beam1.GetCoordinateSystem();var cs2 = beam2.GetCoordinateSystem();var matrix = MatrixFactory.ByCoordinateSystems(cs1, cs2);var point2 = matrix.Transform(point1);🎯 Тот же результат можно получить в два шага:
var toCurrent = MatrixFactory.FromCoordinateSystem(cs1);var toLocal = MatrixFactory.ToCoordinateSystem(cs2);var point2 = toLocal.Transform(toCurrent.Transform(point1));📌 Практический смысл
Работа с системами координат - ключ к точному позиционированию элементов, особенно при:
- создании закладных, пластин и вырезов;
- копировании объектов между сборками;
- вычислении ориентации деталей.
#nipgroup #Tekla #TeklaSupport #TeklaHelp #TeklaAPI
👍5
Tekla API С#: класс Picker в модели - выбираем объекты и точки в 3D
Когда плагину нужно дать пользователю выбрать точку, грань, линию или объект прямо в модели Tekla Structures - в игру вступает Tekla.Structures.Model.UI.Picker.
💡 Пример простого выбора точки
🧩 Что ещё может Picker
PickFace() - выбрать грань модели.
PickLine() - выбрать линию (например, ось).
PickObject() - выбрать один объект (балку, пластину, компонент и т.п.).
PickObjects() - выбрать сразу несколько объектов.
PickPoints() - выбрать последовательность точек (например, контур).
Все методы имеют перегрузки с подсказками (String prompt) для вывода сообщений пользователю.
💬 Подсказки (Prompts)
Tekla автоматически ищет переводы в prompts.ail.
Если перевода нет - покажет ваш текст как есть.
Так можно создавать уже локализованные плагины без дополнительного кода.
⚙️ Типичный сценарий
Например, ваш макрос строит линию между двумя точками.
Вы просто вызываете:
И пользователь буквально рисует мышью в модели.
Без сложных диалогов и ручного ввода координат.
🧠 Зачем это нужно
Упрощает взаимодействие с пользователем.
Делает плагины "живыми" и наглядными.
Позволяет строить, измерять и модифицировать объекты.
#nipgroup #Tekla #TeklaSupport #TeklaHelp #TeklaAPI
Когда плагину нужно дать пользователю выбрать точку, грань, линию или объект прямо в модели Tekla Structures - в игру вступает Tekla.Structures.Model.UI.Picker.
💡 Пример простого выбора точки
using Tekla.Structures.Model.UI;using Tekla.Structures.Geometry3d;public class Example{ public void Example1(){var picker = new Picker();try{ Point point = picker.PickPoint("Выберите точку в модели"); MessageBox.Show($"Выбрана точка: {point}");}catch (Exception e) {MessageBox.Show($"Пользователь отменил выбор: {e.Message}"); } }}🧩 Что ещё может Picker
PickFace() - выбрать грань модели.
PickLine() - выбрать линию (например, ось).
PickObject() - выбрать один объект (балку, пластину, компонент и т.п.).
PickObjects() - выбрать сразу несколько объектов.
PickPoints() - выбрать последовательность точек (например, контур).
Все методы имеют перегрузки с подсказками (String prompt) для вывода сообщений пользователю.
💬 Подсказки (Prompts)
Tekla автоматически ищет переводы в prompts.ail.
Если перевода нет - покажет ваш текст как есть.
Так можно создавать уже локализованные плагины без дополнительного кода.
⚙️ Типичный сценарий
Например, ваш макрос строит линию между двумя точками.
Вы просто вызываете:
var picker = new Picker();var p1 = picker.PickPoint("Выберите первую точку");var p2 = picker.PickPoint("Выберите вторую точку");И пользователь буквально рисует мышью в модели.
Без сложных диалогов и ручного ввода координат.
🧠 Зачем это нужно
Упрощает взаимодействие с пользователем.
Делает плагины "живыми" и наглядными.
Позволяет строить, измерять и модифицировать объекты.
#nipgroup #Tekla #TeklaSupport #TeklaHelp #TeklaAPI
👍8❤1
🧩 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