Группа НИП
458 subscribers
1 video
7 files
36 links
BIM-Проекты и BIM-Консалтинг

Сайт https://nip-group.ru
Школа https://nip-school.ru
Беседка https://t.me/nipgroupsupport
Download Telegram
⚙️ Подключение библиотек Tekla API в C#|

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.dll
Tekla.Structures.Drawing.dll
Tekla.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!");
else
Console.WriteLine("Failed to add beam.");
model.CommitChanges();
}
}

🟢 Шаг 6. Запуск проекта

Запустите Tekla Structures.
Запустите консольное приложение.
В модели появится новый элемент 🎉

🚀 Вот ты и встал на путь профессионального разработчика Tekla API.

#nipgroup #Tekla #TeklaSupport #TeklaHelp #TeklaAPI
🔥81👍1
Пример использования класса ViewHandler в Tekla API C#

В этом примере мы разберём, как работать с представлениями модели в 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.

Вы можете создать систему координат вручную:

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.

💡 Пример простого выбора точки

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
👍81