Архитектору и проектировщику|Тепло- и звукоизоляция 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
Сообщений: 318

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


Последний раз редактировалось PashaStr, 02.03.2017 в 13:19.
Просмотров: 16519
 
Автор темы   Непрочитано 23.12.2018, 15:46
#21
PashaStr

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


Konstruktiv54 не ясна конечная цель. Вы же сами в текле моделируете или балку или фундамент. Зачем ей что-то анализировать, вы сами задали тип. Можно же и колонну замоделировать pad fouting.
PashaStr вне форума  
 
Непрочитано 23.12.2018, 15:56
#22
Konstruktiv54


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


мда...вопрос я конечно поставил неправильно ))
меня интересует как смоделировать pad footing или panel, при помощи api.
В api есть только классы beam и multibeam.
Beam.type может принимать значение pad footing или panel или column, но он является read-only. В общем я в тупике ))

---
upd: если у колонны вы сместите верхнюю точку по горизонтали, то колонна станет балкой, так что она все таки анализирует...
Konstruktiv54 вне форума  
 
Автор темы   Непрочитано 23.12.2018, 16:19
1 | #23
PashaStr

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


в api как вы уже и указали тип можно только зачитать. Для новых элементов тип будет балка (в апи есть примечание об этом). Так, что скорее всего, никак нельзя решить вашу задачу. Моделируйте балками, разницы практически нет между панелью или фундаментом
PashaStr вне форума  
 
Непрочитано 24.12.2018, 10:33
2 | #24
sivlad

Конструктор
 
Регистрация: 23.11.2005
Москва
Сообщений: 230


Konstruktiv54, а почему бы просто при создании экземпляра не использовать перегрузку конструктора?
Например, так:
Beam padFooting = new Beam(Beam.BeamTypeEnum.PAD_FOOTING);
sivlad вне форума  
 
Непрочитано 24.01.2019, 10:13
#25
Konstruktiv54


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


Код:
[Выделить все]
          
const string PluginName = "Каркас плоский вертикальный СП";
Polygon polygon = new Polygon();
polygon.Points.Add(new Point(solid.MinimumPoint.X, solid.MaximumPoint.Y, solid.MinimumPoint.Z));
ComponentInput componentInput = new ComponentInput();
componentInput.AddInputObject(myPart);
componentInput.AddInputPolygon(polygon);
componentInput.AddOneInputPosition(new Point(solid.MinimumPoint.X, solid.MaximumPoint.Y, solid.MinimumPoint.Z));

Component component = new Component();
component.SetComponentInput(componentInput);
component.Number = -100000;
component.Name = PluginName;

component.Insert();
безуспешно пытаюсь вставить компонент плоского каркаса в модель, может кто разъяснить, в чем проблема?
Konstruktiv54 вне форума  
 
Непрочитано 24.01.2019, 10:34
#26
andrejjerdna

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


А там не надо что-то вроде еще добавить (как в примере)?
C.LoadAttributesFromFile("standard");

C.SetAttribute("side_bar_space", 333.0);
andrejjerdna вне форума  
 
Непрочитано 24.01.2019, 10:46
#27
Konstruktiv54


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


C.LoadAttributesFromFile("standard"); - по идее этой строчки должно быть достаточно, да она тоже в коде присутствует, ноль эмоций... (

думаю, как-то я не правильно обращаюсь к компоненту, вот их состояния перед вставкой, компонент из примера имеет свой ID, я мой нет...

Выбрал этот каркас через picker, что бы посмотреть свойства...
Миниатюры
Нажмите на изображение для увеличения
Название: 2019-01-24_14-42-25.png
Просмотров: 40
Размер:	40.0 Кб
ID:	210233  Нажмите на изображение для увеличения
Название: 2019-01-24_14-50-23.png
Просмотров: 25
Размер:	26.4 Кб
ID:	210235  

Последний раз редактировалось Konstruktiv54, 24.01.2019 в 10:53.
Konstruktiv54 вне форума  
 
Непрочитано 24.01.2019, 11:32
1 | #28
100k

Tekla.Structures.Model.Beam
 
Регистрация: 31.01.2010
Сообщений: 1,923


GUID появляется в объекте когда объект вставлен в модель (insert), пользовательские атрибуты можно назначить объекту с GUID
Не факт, что файл атрибутов "standard" есть в модели (возможно надо сохранить такие настройки предварительно)
При установке компонентов, не факт, что вы правильно задаете номер компонента.
У вас этот пример работать не будет, так как используются методы расширения, но идея ясна.
Миниатюры
Нажмите на изображение для увеличения
Название: c_001.png
Просмотров: 45
Размер:	28.0 Кб
ID:	210237  

Последний раз редактировалось 100k, 24.01.2019 в 12:10.
100k вне форума  
 
Непрочитано 24.01.2019, 20:56
#29
Konstruktiv54


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


с первым экстеншеном вроде разобрался, а вот такие записи (с=> c.UIName == ComponentName) меня пока что вгоняют в ступор, но суть да, понятна ))
Если смотреть через CatalogHandler, то номер компонента -1, но беда в том, что таких компонентов с номером -1 много.
Может что-то в консерватории подправить? Можно как нибудь заменить номер компонента, в этой базе компонентов?
Миниатюры
Нажмите на изображение для увеличения
Название: 2019-01-25_00-47-04.png
Просмотров: 40
Размер:	24.5 Кб
ID:	210268  
Konstruktiv54 вне форума  
 
Непрочитано 31.01.2019, 18:08
#30
Konstruktiv54


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


Это снова я ))
Возник вопрос с размещением размеров на видах, размеры на виде в плане с успехом размещаются. Но если пытаюсь расставить размеры на виде детали спереди, то размеры улетают в тьму таракань.
Уже весь мозг сломал, или я BaseView не правильно задаю, или надо как-то трансформирование координат подключать, DimensionExamples из примеров тоже работает только с планом...
Может кто натолкнуть на истинный путь?
Konstruktiv54 вне форума  
 
Непрочитано 01.02.2019, 09:40
1 | #31
100k

Tekla.Structures.Model.Beam
 
Регистрация: 31.01.2010
Сообщений: 1,923


Для повернутых видов дополнительно учитывается другая система координат, кажется DisplayCS. Возможно для видов деталей, надо учитывать дополнительную СК как для повернутых видов, когда происходит трансформация координат модели в СК вида и тд. Для не повернутых видов viewCS и displayCS совпадают.
100k вне форума  
 
Непрочитано 01.02.2019, 09:42
#32
Konstruktiv54


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


Ну да, вроде бы разобрался, надо было применить
Код:
[Выделить все]
Point p1 = beamPlane.TransformationMatrixToLocal.Transform(currentPlane.TransformationMatrixToGlobal.Transform(p1o));
пыхчу дальше )
Konstruktiv54 вне форума  
 
Автор темы   Непрочитано 01.02.2019, 14:28
#33
PashaStr

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


Konstruktiv54 что вы там такое в ж.б. автоматизируете, что дошли до чертежей и автообразмеривания))? Откроете тайну?))
PashaStr вне форума  
 
Непрочитано 01.02.2019, 14:40
1 | #34
Konstruktiv54


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


))) ну не понимаю я, как штатными методами расставить привязки колонн, собрал такой костыль... ), со стенами надо правда еще разобраться

если, поможете разъяснить, как похожие привязки получить без костылей, буду благодарен.
Поднимал тему недавно, но понятней не стало (
Максимум чего удалось добиться, это вот такой картинки, но привязка одной точки - что-то маловато будет.
Миниатюры
Нажмите на изображение для увеличения
Название: 2019-02-01_18-52-43.png
Просмотров: 56
Размер:	34.8 Кб
ID:	210552  

Последний раз редактировалось Konstruktiv54, 01.02.2019 в 14:53.
Konstruktiv54 вне форума  
 
Непрочитано 01.02.2019, 15:16
#35
Darhan


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


Можно вашего "кастылом" пользоваться?
Darhan вне форума  
 
Автор темы   Непрочитано 01.02.2019, 15:32
#36
PashaStr

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


Цитата:
Сообщение от Konstruktiv54 Посмотреть сообщение
если, поможете разъяснить, как похожие привязки получить без костылей
я руками расставляю размеры)
Кстати, могу помочь идеей по вашему плагину с ФБС (если проблемы озвученные в видео актуальны)
PashaStr вне форума  
 
Непрочитано 01.02.2019, 15:38
2 | #37
Konstruktiv54


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


Цитата:
Сообщение от Darhan Посмотреть сообщение
Можно вашего "кастылом" пользоваться?


Цитата:
Сообщение от PashaStr Посмотреть сообщение
Кстати, могу помочь идеей по вашему плагину с ФБС (если проблемы озвученные в видео актуальны)
вроде бы все решил... )

Последний раз редактировалось Konstruktiv54, 13.03.2019 в 06:13.
Konstruktiv54 вне форума  
 
Непрочитано 05.02.2019, 10:08
#38
100k

Tekla.Structures.Model.Beam
 
Регистрация: 31.01.2010
Сообщений: 1,923


Было бы не плохо попробовать установку размеров в чертежах и меток через машинное обучение (я серьезно).
100k вне форума  
 
Автор темы   Непрочитано 05.02.2019, 10:21
#39
PashaStr

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


Цитата:
Сообщение от 100k Посмотреть сообщение
Было бы не плохо попробовать установку размеров в чертежах и меток через машинное обучение (я серьезно)
тогда уже надо программированием на жизнь зарабатывать, а не раскладкой арматуры
PashaStr вне форума  
 
Непрочитано 05.02.2019, 10:25
#40
andrejjerdna

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


Цитата:
Сообщение от 100k Посмотреть сообщение
Было бы не плохо попробовать установку размеров в чертежах и меток через машинное обучение (я серьезно).
Это реально наверное. Только надо где-то достаточно большую подборку готового, чтобы программу можно было обучить. Или как-то по другому двигаться?
andrejjerdna вне форума  
Ответ
Вернуться   Форум 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