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

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

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

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

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


Последний раз редактировалось PashaStr, 02.03.2017 в 13:19.
Просмотров: 17666
 
Непрочитано 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
Новосибирск
Сообщений: 995
<phrase 1=


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

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


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

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


 
Регистрация: 31.01.2007
Новосибирск
Сообщений: 995
<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
Минск
Сообщений: 319


Цитата:
Сообщение от 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
г. Пермь
Сообщений: 108


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

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


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

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

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

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


Метка сборок и деталей
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
Питер
Сообщений: 760


Цитата:
Сообщение от 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
Владимир
Сообщений: 554
Отправить сообщение для 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
Минск
Сообщений: 319


Цитата:
Сообщение от raider1530 Посмотреть сообщение
а как его скачать? я у теклы на сайте полазил так и не понял где его скачать
https://warehouse.tekla.com/#!/catal...4-1f4febe853a9
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