| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

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

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

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

Вдохновившись фильмами по пользовательским компонентам на ютьюбе уважаемых 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 Мб, 172 просмотров)


Последний раз редактировалось PashaStr, 02.03.2017 в 13:19.
Просмотров: 42429
 
Непрочитано 11.03.2019, 17:44
1 | #61
art_rrc


 
Регистрация: 28.01.2013
Минск
Сообщений: 379


Цитата:
Сообщение от PashaStr Посмотреть сообщение
Добрый день! При создании программно текста не удаётся избавится от выноски, есть ли возможность как-нибудь программно удалить/изменить свойства текста? Не могу найти нужный метод в справочнике апи.
По памяти (суть думаю будет ясна):
text.attributes.frame = FrameTypes.None;
text.modify();
art_rrc вне форума  
 
Непрочитано 12.03.2019, 11:45
#62
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


PashaStr, а ты что бы эту таблицу вставить, создаешь отдельный вид(View)? или как-то прям непосредственно в чертеж получается вставить ее?
Konstruktiv54 вне форума  
 
Автор темы   Непрочитано 12.03.2019, 12:22
#63
PashaStr

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


Цитата:
Сообщение от art_rrc Посмотреть сообщение
По памяти (суть думаю будет ясна):
text.attributes.frame = FrameTypes.None;
text.modify();
Вроде добавил, однако всё равно не хочет корректировать рамку. Буду искать "косяк"

Цитата:
Сообщение от Konstruktiv54 Посмотреть сообщение
PashaStr, а ты что бы эту таблицу вставить, создаешь отдельный вид(View)? или как-то прям непосредственно в чертеж получается вставить ее?
пользователь вводит точку вставки "таблицы", из точки получаю viewbase и далее передаю в метод создания текста. Получается прямо на чертёж.
PashaStr вне форума  
 
Непрочитано 12.03.2019, 12:30
#64
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


у меня сначала не получалось выводить текст прямо на чертеж, сейчас да, все как ты пишешь так и работает.
Но странно, у меня нет такой проблемы, текст без всякой выноски вставляется.
textAttr.Frame.Type = FrameTypes.None;
А остальные атрибуты у тебя меняются?

----- добавлено через ~2 ч. -----
попробуй еще textAttr.PreferredPlacing = PreferredTextPlacingTypes.PointPlacingType(); вот этот параметр установить

Последний раз редактировалось Konstruktiv54, 12.03.2019 в 14:38.
Konstruktiv54 вне форума  
 
Автор темы   Непрочитано 12.03.2019, 20:08
#65
PashaStr

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


Цитата:
Сообщение от Konstruktiv54 Посмотреть сообщение
у меня сначала не получалось выводить текст прямо на чертеж, сейчас да, все как ты пишешь так и работает.
Но странно, у меня нет такой проблемы, текст без всякой выноски вставляется.
textAttr.Frame.Type = FrameTypes.None;
А остальные атрибуты у тебя меняются?

----- добавлено через ~2 ч. -----
попробуй еще textAttr.PreferredPlacing = PreferredTextPlacingTypes.PointPlacingType(); вот этот параметр установить
всё оказалось проще. Текст создавался методом Text(ViewBase, Point, String, PlacingBase, Text.TextAttributes), в этом случае не получалось убрать эти линии. При переходе на метод Text(ViewBase, Point, String, Text.TextAttributes) всё ок!
PashaStr вне форума  
 
Непрочитано 14.04.2019, 06:20
#66
kiter

конструктор
 
Регистрация: 21.08.2011
г. Пермь
Сообщений: 114


Поделитесь макросом вывода "Ведомости чертежей" для Теклы_21.0 . \... спрашиваю , наверно, какую-то ерунду... \
kiter вне форума  
 
Непрочитано 22.04.2019, 10:30
#67
Кореш

Самоходная нейросеть
 
Регистрация: 12.12.2007
Питер
Сообщений: 1,195


Здравствуйте.

Есть ли у кого пример рабочего кода с обработкой событий Tekla.Structures.Drawing.UI.Events?
Не могу понять, даже код из хэлпа не слушает события.

Нужно, чтобы программа работала только когда открыто редактирование чертежа, думаю через событие Events.DrawingEditorOpened.
Кореш вне форума  
 
Непрочитано 22.04.2019, 10:57
#68
CuPo>I<a

Металлоконструкции
 
Регистрация: 28.02.2009
Златоуст
Сообщений: 480


Метка сборок и деталей
CuPo>I<a вне форума  
 
Непрочитано 22.04.2019, 11:11
#69
art_rrc


 
Регистрация: 28.01.2013
Минск
Сообщений: 379


Цитата:
Сообщение от Кореш Посмотреть сообщение
Нужно, чтобы программа работала только когда открыто редактирование чертежа, думаю через событие Events.DrawingEditorOpened.
Вы уверены, что вам нужны именно события?
Код:
[Выделить все]
//Определить где находимся в модели или на чертеже
        private string GetWorkSpaceDWGRU()
        {
            if (TeklaModel.GetConnectionStatus())
            {                
                drawingHandler = new DrawingHandler();               
                if (drawingHandler.GetConnectionStatus())
                {
                    curDrawing = drawingHandler.GetActiveDrawing(); // Текущий чертеж
                    if (curDrawing != null)
                    {
                        TSD.DrawingHandler.SetMessageExecutionStatus(TSD.DrawingHandler.MessageExecutionModeEnum.BY_COMMIT);
                        return "Drawing";
                        //MessageBox.Show("Находимся на чертеже");
                    }
                    else
                    {
                        return "Model";
                        //MessageBox.Show("Находимся в модели");
                    }
                }
                else
                {
                    return null;
                    //MessageBox.Show("Не удалось подключиться к чертежам.");
                }
            }
            else
            {
                return null;
                //MessageBox.Show("Не удалось подключиться к модели.");
            }
        }
art_rrc вне форума  
 
Непрочитано 22.04.2019, 11:28
#70
Кореш

Самоходная нейросеть
 
Регистрация: 12.12.2007
Питер
Сообщений: 1,195


Цитата:
Сообщение от art_rrc Посмотреть сообщение
Вы уверены, что вам нужны именно события?
Код:
[Выделить все]
//Определить где находимся в модели или на чертеже
        private string GetWorkSpaceDWGRU()
        {
            if (TeklaModel.GetConnectionStatus())
            {                
                drawingHandler = new DrawingHandler();               
                if (drawingHandler.GetConnectionStatus())
                {
                    curDrawing = drawingHandler.GetActiveDrawing(); // Текущий чертеж
                    if (curDrawing != null)
                    {
                        TSD.DrawingHandler.SetMessageExecutionStatus(TSD.DrawingHandler.MessageExecutionModeEnum.BY_COMMIT);
                        return "Drawing";
                        //MessageBox.Show("Находимся на чертеже");
                    }
                    else
                    {
                        return "Model";
                        //MessageBox.Show("Находимся в модели");
                    }
                }
                else
                {
                    return null;
                    //MessageBox.Show("Не удалось подключиться к чертежам.");
                }
            }
            else
            {
                return null;
                //MessageBox.Show("Не удалось подключиться к модели.");
            }
        }
Честно говоря, не уверен.
Ага, спасибо, попробую.

Супер, работает, спасибо! Я - чайник со свистком.

Последний раз редактировалось Кореш, 22.04.2019 в 11:39.
Кореш вне форума  
 
Непрочитано 11.07.2019, 18:30
#71
raider1530


 
Регистрация: 11.07.2019
Сообщений: 2


Добрый день. может кто то подскажет с чего начать работать с OpenAPI? Я пока что не могу даже понять как в visual studio загрузить среду теклы?? может есть уроки или что то такое
raider1530 вне форума  
 
Непрочитано 11.07.2019, 21:02
#72
andrejjerdna

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


Цитата:
Сообщение от raider1530 Посмотреть сообщение
Добрый день. может кто то подскажет с чего начать работать с OpenAPI? Я пока что не могу даже понять как в visual studio загрузить среду теклы?? может есть уроки или что то такое
Качайте Tekla OpenAPI. Там и вся справка и шаблоны проектов.
andrejjerdna вне форума  
 
Непрочитано 12.07.2019, 04:53
#73
raider1530


 
Регистрация: 11.07.2019
Сообщений: 2


Цитата:
Сообщение от andrejjerdna Посмотреть сообщение
Качайте Tekla OpenAPI. Там и вся справка и шаблоны проектов.
а как его скачать? я у теклы на сайте полазил так и не понял где его скачать
raider1530 вне форума  
 
Автор темы   Непрочитано 12.07.2019, 10:03
#74
PashaStr

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


Цитата:
Сообщение от raider1530 Посмотреть сообщение
а как его скачать? я у теклы на сайте полазил так и не понял где его скачать
https://warehouse.tekla.com/#!/catal...4-1f4febe853a9
PashaStr вне форума  
 
Непрочитано 24.11.2019, 14:56
#75
Ann24


 
Регистрация: 31.10.2018
Сообщений: 1


----- добавлено через ~1 мин. -----
Цитата:
Сообщение от PashaStr Посмотреть сообщение
Вдохновившись фильмами по пользовательским компонентам на ютьюбе уважаемых 100k и andrejjerdna, написал свой небольшой скрипт по прикреплению вертикальной панели-стены к нижней грани плиты перекрытия. В режиме отладки в Visual Studio всё прекрасно работает.
можно ссылку на уроки / каналы youtube?
Ann24 вне форума  
 
Непрочитано 26.11.2019, 09:07
#76
100k

Жалкий инженеришка-проектаст
 
Регистрация: 31.01.2010
Сообщений: 1,986


https://developer.tekla.com/

И еще стрим признанного авторитета в области Текла АПИ
https://www.youtube.com/watch?time_c...ature=emb_logo

Последний раз редактировалось 100k, 26.11.2019 в 10:30.
100k вне форума  
 
Непрочитано 13.04.2020, 02:56
#77
Georgiy_KN


 
Регистрация: 20.02.2018
Сообщений: 6


Можете помочь мне? Пытаюсь подключиться к модели и выбрать объекты, а выдается ошибка. Внутреннее исключение DelProxy. Я новичок в этом деле. Может у кого-нибудь возникали подобные сообщения?
Нигде не могу найти информацию.
Картинка тут

https://yadi.sk/i/vrRL-kvKhcl4tA

----- добавлено через ~15 мин. -----
[quote=Georgiy_KN;1866882]Можете помочь мне? Пытаюсь подключиться к модели и выбрать объекты, а выдается ошибка. SystemTypeInitialisation Exception. Внутреннее исключение. DelProxy. Я новичок в этом деле. Может у кого-нибудь возникали подобные сообщения?Нигде не могу найти информацию. Программа не видит объекты внутри сборки. Саму модель видит, но при щелчке мыши по объекту tekla программа до точки остановки не идет. Ругается на эту строчку.
*Даже пытался запускать программу visual от имени админа. Но сообщение все возникает и возникает. Версия*visual 2017 . Tekla также запускалась от админа и нет. Пробовал разные комбинации и не помогло.*Картинку с подробностями можно посмотреть тут
https://downloader.disk.yandex.ru/pr...&size=1366x576

Последний раз редактировалось Georgiy_KN, 13.04.2020 в 03:27.
Georgiy_KN вне форума  
 
Непрочитано 13.04.2020, 10:43
#78
Konstruktiv54


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
<phrase 1=


Вообще в похожих случаях часто спасает волшебная перезагрузка.
ТопИнженером пользуетесь? У меня их приложение не дает нормально работать программкам. Убил его из автозагрузки, сначала вчключаю теклу, потом только топинж.
Konstruktiv54 вне форума  
 
Непрочитано 05.06.2020, 01:15
#79
Кореш

Самоходная нейросеть
 
Регистрация: 12.12.2007
Питер
Сообщений: 1,195


Добрый день.
Пытаюсь сделать вставку ведомости деталей через приложение.
Можно ли как-то в ContainerView открытого чертежа показать ReinforcementPulloutElement?
К примеру, вставить Mark на ContainerView?
Кореш вне форума  
 
Непрочитано 05.06.2020, 06:39
#80
CuPo>I<a

Металлоконструкции
 
Регистрация: 28.02.2009
Златоуст
Сообщений: 480


Цитата:
Сообщение от Кореш Посмотреть сообщение
Добрый день.
Пытаюсь сделать вставку ведомости деталей через приложение.
Можно ли как-то в ContainerView открытого чертежа показать ReinforcementPulloutElement?
К примеру, вставить Mark на ContainerView?
А что Вас останавливает? ContainerView наследуется от ViewBase.
Например:
Код:
[Выделить все]
 
private static void InsertSymbol(TSD.ViewBase viewBase, double height, double SymAngle, Point startSym, TSD.SymbolInfo Symbol)
{
TSD.Symbol xs = new TSD.Symbol(viewBase, startSym, Symbol);
xs.Attributes.Angle = SymAngle;
xs.Attributes.Height = height;
xs.Insert();
}
CuPo>I<a вне форума  
Ответ
Вернуться   Форум 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