Анкерные системы Schöck Dorn
dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

Вернуться   Форум DWG.RU > Программное обеспечение > Другие CAD системы > Tekla > Tekla. Open API. Создание пользовательских плагинов и макросов

Tekla. Open API. Создание пользовательских плагинов и макросов

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 02.03.2017, 12:58 #1
Tekla. Open API. Создание пользовательских плагинов и макросов
PashaStr
 
инженер-конструктор
 
Минск
Регистрация: 24.04.2011
Сообщений: 274

PashaStr вне форума Вставить имя

Вдохновившись фильмами по пользовательским компонентам на ютьюбе уважаемых 100k и andrejjerdna, написал свой небольшой скрипт по прикреплению вертикальной панели-стены к нижней грани плиты перекрытия. В режиме отладки в Visual Studio всё прекрасно работает. Но появилось пару вопросов:
  1. Как закинуть готовый код (в виде dll или exe) в теклу? Интересует именно сам синтаксис в коде (для того чтобы текла "увидела" компонент). Требуется ли делать форму для плагина или допустимо использовать его без вызова формы? Примеры учебных плагинов просто идут все с формами и в лоб как-то не получилось решить вопрос.
  2. Можно ли в таком простом виде перекинуть его в макрос, сохранив функционал? Если да, есть ли у кого-нибудь простой пример макроса с выбором элементов, точек без формы
Код:
[Выделить все]
 
public class pk_Connect
    {        
        public static void WallSlabAttach()
        {
            Picker picker = new Picker();
            Beam panel=picker.PickObject(Picker.PickObjectEnum.PICK_ONE_OBJECT, "Pick PANEL") as Beam;
            double panelZ = panel.StartPoint.Z;
            ContourPlate TopSlab = PickSlab();
            Point TopSlabPoint = TopSlab.Contour.ContourPoints[0] as Point;
            double SlabZBottom = TopSlabPoint.Z-Convert.ToDouble(TopSlab.Profile.ProfileString);
            double HeightWall = SlabZBottom - panelZ;
            panel.Profile.ProfileString=Convert.ToString(HeightWall) +"*100";
            panel.Modify();
                   }
        private static ContourPlate PickSlab()
        {
            Picker picker = new Picker();
            ModelObject mo = picker.PickObject(Picker.PickObjectEnum.PICK_ONE_PART, "Pick a SLAB");
            ContourPlate slab = mo as ContourPlate;
            return slab;
        }
    }
Сам проект VS во вложении

Вложения
Тип файла: rar pk_tekla_1ext_wall_slab_adjust.rar (1.02 Мб, 21 просмотров)


Последний раз редактировалось PashaStr, 02.03.2017 в 13:19.
Просмотров: 2603
 
Непрочитано 02.03.2017, 13:34
1 | #2
andrejjerdna

Борьба с пустотой
 
Блог
 
Регистрация: 30.01.2014
Владимир
Сообщений: 510
Отправить сообщение для andrejjerdna с помощью Skype™


О пакете с Open API есть примеры плагинов.
Суть в том, что плагин имеет четкую структуру, необходимо соблюдать их логику. Как-то так...
Миниатюры
Нажмите на изображение для увеличения
Название: Скриншот 02-03-2017 133358.png
Просмотров: 166
Размер:	44.0 Кб
ID:	184493  
andrejjerdna вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 02.03.2017, 13:55
#3
PashaStr

инженер-конструктор
 
Регистрация: 24.04.2011
Минск
Сообщений: 274


Цитата:
Сообщение от andrejjerdna Посмотреть сообщение
О пакете с Open API есть примеры плагинов.
Суть в том, что плагин имеет четкую структуру, необходимо соблюдать их логику. Как-то так...
Примеры я смотрел. Правильно ли понимаю, что для плагинов обязателен интерфейс (форма)?
PashaStr вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.03.2017, 13:57
#4
andrejjerdna

Борьба с пустотой
 
Блог
 
Регистрация: 30.01.2014
Владимир
Сообщений: 510
Отправить сообщение для andrejjerdna с помощью Skype™


Цитата:
Сообщение от PashaStr Посмотреть сообщение
Примеры я смотрел. Правильно ли понимаю, что для плагинов обязателен интерфейс (форма)?
Можно без формы сделать, если ничего в плагине не хотите менять потом.
andrejjerdna вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 02.03.2017, 20:27
#5
PashaStr

инженер-конструктор
 
Регистрация: 24.04.2011
Минск
Сообщений: 274


Цитата:
Сообщение от andrejjerdna Посмотреть сообщение
Можно без формы сделать, если ничего в плагине не хотите менять потом
Решение оказалось значительно проще. Делать динамический плагин мне нет необходимости. Так что просто скомпилировал в exe и добавил как приложение в теклу.
Но после 2 часов колупания в примерах, понял как синтаксис плагинов, так и "смысловую" разницу плагинов и приложений. Так, что спасибо)
PashaStr вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 06.07.2017, 10:31
#6
DonJad


 
Регистрация: 20.12.2005
Murmansk
Сообщений: 107


Можно сделать кнопочную форму, на кнопки забиндить свои методы. Скопилить, оттестировать.
А потом получившийся класс и методы обернуть в Tekla Macro script.

Как это делается можно посмотреть на примере этого скрита

Но логика в целом примитивна, мы внутри

Код:
[Выделить все]
namespace Tekla.Technology.Akit.UserScript
{

}
закидываем наши классы полностью - например форму, или какие то статик классы с нужными методами.

и там же добавляем собственно сам класс скрипта который вызывает нашу форму
Код:
[Выделить все]
	    
public class Script
        {
            public static void Run(Tekla.Technology.Akit.IScript akit)
            {
                Application.EnableVisualStyles();
                Application.Run(new Form1());
            }
        }

Т.е. получается чтото такое:

Код:
[Выделить все]
...
using TSM = Tekla.Structures.Model; 

namespace Tekla.Technology.Akit.UserScript
{
	    public class Script
        {
            public static void Run(Tekla.Technology.Akit.IScript akit)
            {
                Application.EnableVisualStyles();
                Application.Run(new Form1());
            }
        }

    public class Form1 : System.Windows.Forms.Form
    {
       // тут добавляем всё из нашего приложения form1.design.cs + form1.cs
    }
    public static class WhatEver
   {
   }

}
Таким макаром можно конвертировать приложения в макросы, или наоборот, из макроса стырить функционал и добавить в свое приложение.
Ну и главное преимущество в том что макрос автоматом копилится во время исполнения. Соответственно можно не переживать за перекопиляцию при переходе на новую версию теклы.
__________________
Tekla support
DonJad вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 06.07.2017, 10:45
#7
PashaStr

инженер-конструктор
 
Регистрация: 24.04.2011
Минск
Сообщений: 274


DonJad спасибо за ответ. С макросами разобрался уже.
Для форм всё же на мой взгляд поудобнее будет в VS работать на мой взгляд (отладка и т.д.), но макросы для небольшого количества кода одназначно выигрывают перед полноценными приложениями.
PashaStr вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 06.07.2017, 11:22
#8
DonJad


 
Регистрация: 20.12.2005
Murmansk
Сообщений: 107


При отладке приложения и формы без конечно VS никуда.

Но когда всё отлажено и толково работает в производственной среде, то имеет смысл оформить результат в виде макроса, чтобы не возвращаться больше к вопросам связанным с перекомпиляцией приложения под каждую используемую версию.
Да и другим пользователям в таком виде пересылать результат сильно проще - один малюсенький текстовый файл, вместо архива с экзешником дллками.

Чтобы не переживать за то, что исходный код утечет можно применить обсфукацию.
__________________
Tekla support
DonJad вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 06.07.2017, 11:31
#9
PashaStr

инженер-конструктор
 
Регистрация: 24.04.2011
Минск
Сообщений: 274


Цитата:
Сообщение от DonJad Посмотреть сообщение
можно применить обсфукацию.
обсфукация вроде же для dll и exe? или для макросов можно применить?
PashaStr вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Другие CAD системы > Tekla > Tekla. Open API. Создание пользовательских плагинов и макросов

Инженерные консультации
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание просечно-вытяжного листа в Tekla. safronsafronov Tekla 8 21.04.2016 03:26
AUTOCAD 2010 перестал переключаться в многооконный режим. Проблемы с переменными Андрей Х. AutoCAD 24 27.05.2015 10:17
Acaddoc.lsp - насколько вредный Alexander88 LISP 1 10.06.2014 09:29
Автозагрузка приложения до загрузки чертежа Ax3 Программирование 14 15.02.2008 23:29

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||


Размещение рекламы