|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
1 | | #1 |
Tekla. Open API. Создание пользовательских плагинов и макросов
инженер-конструктор
Минск
Регистрация: 24.04.2011
Сообщений: 320
|
||
Просмотров: 45842
|
|
||||
О пакете с Open API есть примеры плагинов.
Суть в том, что плагин имеет четкую структуру, необходимо соблюдать их логику. Как-то так... |
||||
![]() |
|
||||
инженер-конструктор Регистрация: 24.04.2011
Минск
Сообщений: 320
|
Примеры я смотрел. Правильно ли понимаю, что для плагинов обязателен интерфейс (форма)?
__________________
Журнал "Бетон и железобетон" (поиск) |
|||
![]() |
|
||||
|
||||
![]() |
|
||||
инженер-конструктор Регистрация: 24.04.2011
Минск
Сообщений: 320
|
Цитата:
Но после 2 часов колупания в примерах, понял как синтаксис плагинов, так и "смысловую" разницу плагинов и приложений. Так, что спасибо)
__________________
Журнал "Бетон и железобетон" (поиск) |
|||
![]() |
|
||||
Регистрация: 20.12.2005
Murmansk
Сообщений: 106
|
Можно сделать кнопочную форму, на кнопки забиндить свои методы. Скопилить, оттестировать.
А потом получившийся класс и методы обернуть в Tekla Macro script. Как это делается можно посмотреть на примере этого скрита Но логика в целом примитивна, мы внутри Код:
и там же добавляем собственно сам класс скрипта который вызывает нашу форму Код:
Т.е. получается чтото такое: Код:
Ну и главное преимущество в том что макрос автоматом копилится во время исполнения. Соответственно можно не переживать за перекопиляцию при переходе на новую версию теклы.
__________________
Tekla support |
|||
![]() |
|
||||
инженер-конструктор Регистрация: 24.04.2011
Минск
Сообщений: 320
|
DonJad спасибо за ответ. С макросами разобрался уже.
Для форм всё же на мой взгляд поудобнее будет в VS работать на мой взгляд (отладка и т.д.), но макросы для небольшого количества кода одназначно выигрывают перед полноценными приложениями.
__________________
Журнал "Бетон и железобетон" (поиск) |
|||
![]() |
|
||||
Регистрация: 20.12.2005
Murmansk
Сообщений: 106
|
При отладке приложения и формы без конечно VS никуда.
Но когда всё отлажено и толково работает в производственной среде, то имеет смысл оформить результат в виде макроса, чтобы не возвращаться больше к вопросам связанным с перекомпиляцией приложения под каждую используемую версию. Да и другим пользователям в таком виде пересылать результат сильно проще - один малюсенький текстовый файл, вместо архива с экзешником дллками. Чтобы не переживать за то, что исходный код утечет можно применить обсфукацию.
__________________
Tekla support |
|||
![]() |
|
||||
инженер-конструктор Регистрация: 24.04.2011
Минск
Сообщений: 320
|
обсфукация вроде же для dll и exe? или для макросов можно применить?
__________________
Журнал "Бетон и железобетон" (поиск) |
|||
![]() |
|
||||
class вроде должен быть int, а не string, если ввиду имеется именно цвет объекта.
|
||||
![]() |
|
||||
инженер-конструктор Регистрация: 24.04.2011
Минск
Сообщений: 320
|
Я бы предположил, что так более правильно
Код:
__________________
Журнал "Бетон и железобетон" (поиск) |
|||
![]() |
|
||||
_Class = "4"; в скобки брать не обязательно в данном случае.
|
||||
![]() |
|
||||
Регистрация: 08.09.2015
Сообщений: 37
|
Свойство "class" для детали должно иметь значение int. Так же и для арматуры.
Хотя, цвет балки к примеру, или жб колонны изменять не пробовал таким способом. Может быть есть различия? Цвет какого объекта должен меняться? Последний раз редактировалось nieghbor, 13.04.2018 в 19:33. |
|||
![]() |
|
||||
инженер-конструктор Регистрация: 24.04.2011
Минск
Сообщений: 320
|
Добрый день! Появилась задача "повесить" вызов MessageDialog на сочетание клавиш. Записал макрос встроенным менеджером макросов и получил такой код (см. ниже). Но вызов результирующего макроса, который должен включать данную панель просто не срабатывает, панель не появляется. Может быть кто-нибудь сталкивался с такими проблемами и может подсказать решение?
Код:
__________________
Журнал "Бетон и железобетон" (поиск) |
|||
![]() |
|
||||
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
![]() |
Добрый день.
Может кто-нибудь объяснить как им образом class Beam, получает type? Одно понятно, если второй узел имеет точно такие же координаты X, Y как и первый, то type = Beam.BeamTypeEnum.COLUMN. а какие условия должны быть выполнены, что бы получить тип Pad_footing или Panel? Последний раз редактировалось Konstruktiv54, 22.12.2018 в 15:47. |
|||
![]() |
|
||||
инженер-конструктор Регистрация: 24.04.2011
Минск
Сообщений: 320
|
Konstruktiv54 не ясна конечная цель. Вы же сами в текле моделируете или балку или фундамент. Зачем ей что-то анализировать, вы сами задали тип. Можно же и колонну замоделировать pad fouting.
__________________
Журнал "Бетон и железобетон" (поиск) |
|||
![]() |
|
||||
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
![]() |
мда...вопрос я конечно поставил неправильно ))
меня интересует как смоделировать pad footing или panel, при помощи api. В api есть только классы beam и multibeam. Beam.type может принимать значение pad footing или panel или column, но он является read-only. В общем я в тупике )) --- upd: если у колонны вы сместите верхнюю точку по горизонтали, то колонна станет балкой, так что она все таки анализирует... |
|||
![]() |
|
||||
инженер-конструктор Регистрация: 24.04.2011
Минск
Сообщений: 320
|
в api как вы уже и указали тип можно только зачитать. Для новых элементов тип будет балка (в апи есть примечание об этом). Так, что скорее всего, никак нельзя решить вашу задачу. Моделируйте балками, разницы практически нет между панелью или фундаментом
__________________
Журнал "Бетон и железобетон" (поиск) |
|||
![]() |
|
||||
А там не надо что-то вроде еще добавить (как в примере)?
C.LoadAttributesFromFile("standard"); C.SetAttribute("side_bar_space", 333.0); |
||||
![]() |
|
||||
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
![]() |
C.LoadAttributesFromFile("standard"); - по идее этой строчки должно быть достаточно, да она тоже в коде присутствует, ноль эмоций... (
думаю, как-то я не правильно обращаюсь к компоненту, вот их состояния перед вставкой, компонент из примера имеет свой ID, я мой нет... Выбрал этот каркас через picker, что бы посмотреть свойства... Последний раз редактировалось Konstruktiv54, 24.01.2019 в 10:53. |
|||
![]() |
|
||||
Жалкий инженеришка-проектаст Регистрация: 31.01.2010
Сообщений: 1,986
|
GUID появляется в объекте когда объект вставлен в модель (insert), пользовательские атрибуты можно назначить объекту с GUID
Не факт, что файл атрибутов "standard" есть в модели (возможно надо сохранить такие настройки предварительно) При установке компонентов, не факт, что вы правильно задаете номер компонента. У вас этот пример работать не будет, так как используются методы расширения, но идея ясна. Последний раз редактировалось 100k, 24.01.2019 в 12:10. |
|||
![]() |
|
||||
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
![]() |
с первым экстеншеном вроде разобрался, а вот такие записи (с=> c.UIName == ComponentName) меня пока что вгоняют в ступор, но суть да, понятна ))
Если смотреть через CatalogHandler, то номер компонента -1, но беда в том, что таких компонентов с номером -1 много. Может что-то в консерватории подправить? Можно как нибудь заменить номер компонента, в этой базе компонентов? |
|||
![]() |
|
||||
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
![]() |
Это снова я ))
Возник вопрос с размещением размеров на видах, размеры на виде в плане с успехом размещаются. Но если пытаюсь расставить размеры на виде детали спереди, то размеры улетают в тьму таракань. Уже весь мозг сломал, или я BaseView не правильно задаю, или надо как-то трансформирование координат подключать, DimensionExamples из примеров тоже работает только с планом... Может кто натолкнуть на истинный путь? |
|||
![]() |
|
||||
Жалкий инженеришка-проектаст Регистрация: 31.01.2010
Сообщений: 1,986
|
Для повернутых видов дополнительно учитывается другая система координат, кажется DisplayCS. Возможно для видов деталей, надо учитывать дополнительную СК как для повернутых видов, когда происходит трансформация координат модели в СК вида и тд. Для не повернутых видов viewCS и displayCS совпадают.
|
|||
![]() |
|
||||
инженер-конструктор Регистрация: 24.04.2011
Минск
Сообщений: 320
|
Konstruktiv54 что вы там такое в ж.б. автоматизируете, что дошли до чертежей и автообразмеривания))? Откроете тайну?))
__________________
Журнал "Бетон и железобетон" (поиск) |
|||
![]() |
|
||||
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
![]() |
))) ну не понимаю я, как штатными методами расставить привязки колонн, собрал такой костыль... ), со стенами надо правда еще разобраться
если, поможете разъяснить, как похожие привязки получить без костылей, буду благодарен. Поднимал тему недавно, но понятней не стало ( Максимум чего удалось добиться, это вот такой картинки, но привязка одной точки - что-то маловато будет. Последний раз редактировалось Konstruktiv54, 01.02.2019 в 14:53. |
|||
![]() |
|
||||
инженер-конструктор Регистрация: 24.04.2011
Минск
Сообщений: 320
|
Цитата:
Кстати, могу помочь идеей по вашему плагину с ФБС (если проблемы озвученные в видео актуальны)
__________________
Журнал "Бетон и железобетон" (поиск) |
|||
![]() |
|
||||
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
![]() |
вроде бы все решил... ) Последний раз редактировалось Konstruktiv54, 13.03.2019 в 06:13. |
|||
![]() |
|
||||
инженер-конструктор Регистрация: 24.04.2011
Минск
Сообщений: 320
|
тогда уже надо программированием на жизнь зарабатывать, а не раскладкой арматуры
__________________
Журнал "Бетон и железобетон" (поиск) |
|||
![]() |
|
||||
|
||||
![]() |
|
||||
Жалкий инженеришка-проектаст Регистрация: 31.01.2010
Сообщений: 1,986
|
Цитата:
да, на готовых примерах. Последний раз редактировалось 100k, 05.02.2019 в 10:37. |
|||
![]() |
|
||||
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
![]() |
можно как-нибудь через api достучаться до соседней детали, солид ее определить?
myPart.GetSurfaceObjects(); - ноль эмоций, выдает пустоту, кто-нибудь сталкивался? Последний раз редактировалось Konstruktiv54, 19.02.2019 в 19:51. |
|||
![]() |
|
||||
инженер-проектировщик Регистрация: 07.08.2011
Казань
Сообщений: 33
|
|
|||
![]() |
|
||||
инженер-проектировщик Регистрация: 07.08.2011
Казань
Сообщений: 33
|
Цитата:
Для работы просто с гранями детали - myPart.GetSolid() -> mySolid.GetFaceEnumerator() |
|||
![]() |
|
||||
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
![]() |
ааа...понятно, а я уже было обрадовался, когда нашел GetSurfaceObjects, думал он присоединенные к поверхности соседние объекты находит ))
Part.GetSurfaceObjects - Method Returns an enumerator of all the connected surface objects. |
|||
![]() |
|
||||
Жалкий инженеришка-проектаст Регистрация: 31.01.2010
Сообщений: 1,986
|
Проще всего сначала проверить пересечения тел деталей через OBB. Если нет пересечения OBB деталей значит они не контачат между собой. Если пересечения OBB есть, надо дальше искать контактные поверхности и тд.
|
|||
![]() |
|
||||
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
![]() |
Еще вопрос возник, а что в плагинах нельзя ссылаться на свои выделенные библиотеки?
Я создал свою dll, по типу cs_net_lib, но если она лежит где-то на диске, то Текла ее не находит, и при запуске плагина ругается. При попытке положить ее в папку рядом с cs_net_lib, Текла вылетает при самом старте с каким то огромным окном ошибок, никто не сталкивался? ---- upd: разобрался сам, просто библиотека была создана как netstandart, почему-то (( Последний раз редактировалось Konstruktiv54, 25.02.2019 в 13:25. |
|||
![]() |
|
||||
Жалкий инженеришка-проектаст Регистрация: 31.01.2010
Сообщений: 1,986
|
Konstruktiv54, Можно ссылаться на свои библиотеки.
Есть способ лучше. В солюшен можно сделать несколько проектов, добавить ссылки из одного проекта на другой. Это позволит сразу работать над текущим проектом и библиотекой в VS. Так же необходимо прописать в настройках солюшен "события сборки" и при компиляции dll эта самая dll скопируется по указанному пути. Следовательно в папке теклы у вас будет последняя сборка вашего ПО. Это очень экономит время. Выглядит это примерно так copy "$(ProjectDir)$(OutDir)$(TargetFileName)" "c:\TeklaStructures\$(TSdir)\nt\bin\plugins\sv\$(TargetFileName)" copy "$(ProjectDir)$(OutDir)$(TargetName).pdb" "c:\TeklaStructures\$(TSdir)\nt\bin\plugins\sv\$(TargetName).pdb" |
|||
![]() |
|
||||
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
![]() |
Цитата:
С одним солюшеном надо будет попробовать наверно У меня сейчас так идет, есть рабочий солюшен, в котором весь функционал построен как приложения, в нем же разрабатывается dll. И второй солюшен под под плагины, в нем я работаю когда уже отлажен основной алгоритм на уровне приложения... |
|||
![]() |
|
||||
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
![]() |
Цитата:
что бы отладку производить без подключения к процессу? Уперся в то, что не могу нестатические методы плагина передать куда-то. |
|||
![]() |
|
||||
инженер-конструктор Регистрация: 24.04.2011
Минск
Сообщений: 320
|
Добрый день! При создании программно текста не удаётся избавится от выноски, есть ли возможность как-нибудь программно удалить/изменить свойства текста? Не могу найти нужный метод в справочнике апи.
__________________
Журнал "Бетон и железобетон" (поиск) |
|||
![]() |
|
||||
Жалкий инженеришка-проектаст Регистрация: 31.01.2010
Сообщений: 1,986
|
Можно попробовать создать файл атрибутов этой метки с нужными настройками назвать его например "standard001" и загрузить его послед создания экземпляра этой метки, потом отредактивовать нужные поля и сделать insert
|
|||
![]() |
|
||||
Регистрация: 28.01.2013
Минск
Сообщений: 375
|
Цитата:
text.attributes.frame = FrameTypes.None; text.modify(); |
|||
![]() |
|
||||
инженер-конструктор Регистрация: 24.04.2011
Минск
Сообщений: 320
|
Цитата:
пользователь вводит точку вставки "таблицы", из точки получаю viewbase и далее передаю в метод создания текста. Получается прямо на чертёж.
__________________
Журнал "Бетон и железобетон" (поиск) |
|||
![]() |
|
||||
Регистрация: 31.01.2007
Новосибирск
Сообщений: 1,040
![]() |
у меня сначала не получалось выводить текст прямо на чертеж, сейчас да, все как ты пишешь так и работает.
Но странно, у меня нет такой проблемы, текст без всякой выноски вставляется. textAttr.Frame.Type = FrameTypes.None; А остальные атрибуты у тебя меняются? ----- добавлено через ~2 ч. ----- попробуй еще textAttr.PreferredPlacing = PreferredTextPlacingTypes.PointPlacingType(); вот этот параметр установить Последний раз редактировалось Konstruktiv54, 12.03.2019 в 14:38. |
|||
![]() |
|
||||
инженер-конструктор Регистрация: 24.04.2011
Минск
Сообщений: 320
|
Цитата:
__________________
Журнал "Бетон и железобетон" (поиск) |
|||
![]() |
|
||||
Самоходная нейросеть Регистрация: 12.12.2007
Питер
Сообщений: 1,300
|
Здравствуйте.
Есть ли у кого пример рабочего кода с обработкой событий Tekla.Structures.Drawing.UI.Events? Не могу понять, даже код из хэлпа не слушает события. Нужно, чтобы программа работала только когда открыто редактирование чертежа, думаю через событие Events.DrawingEditorOpened. |
|||
![]() |
|
||||
Металлоконструкции Регистрация: 28.02.2009
Златоуст
Сообщений: 480
|
|
|||
![]() |
|
||||
Самоходная нейросеть Регистрация: 12.12.2007
Питер
Сообщений: 1,300
|
Честно говоря, не уверен.
Ага, спасибо, попробую. Супер, работает, спасибо! Я - чайник со свистком. Последний раз редактировалось Кореш, 22.04.2019 в 11:39. |
|||
![]() |
|
||||
|
||||
![]() |
|
||||
инженер-конструктор Регистрация: 24.04.2011
Минск
Сообщений: 320
|
Цитата:
__________________
Журнал "Бетон и железобетон" (поиск) |
|||
![]() |
|
||||
Регистрация: 31.10.2018
Сообщений: 1
|
----- добавлено через ~1 мин. -----
можно ссылку на уроки / каналы youtube? |
|||
![]() |
|
||||
Жалкий инженеришка-проектаст Регистрация: 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. |
|||
![]() |
|
||||
Регистрация: 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. |
|||
![]() |
|
||||
Металлоконструкции Регистрация: 28.02.2009
Златоуст
Сообщений: 480
|
Цитата:
Например: Код:
|
|||
![]() |
|
||||
Самоходная нейросеть Регистрация: 12.12.2007
Питер
Сообщений: 1,300
|
Вставить символ, линию или текст в ContainerView не проблема. У конструктора класса Mark нет параметра с видом, только Drawing.ModelObject входящий. Видимо он берет вид для вставки как вид объекта. Может есть какой-то объект аналогичный, который можно вставить на ContainerView, параметры получив с Part там, или Rebar? Еще вопрос - можно ли через API вставить шаблон на ContainerView без механизма изменения компоновки чертежа? Шаблон к детали поставить понятно как, через метку.
|
|||
![]() |
|
||||
Регистрация: 16.08.2020
Сообщений: 1
|
Сталкивался кто с проблемой, что при первом запуске плагина, не работают привязки к форме? Изменение размера формы происходит без изменения размеров компонентов. Последующие запуски плагина работают нормально. При перезапуски Tekla повторяется.
|
|||
![]() |
|
||||
Самоходная нейросеть Регистрация: 12.12.2007
Питер
Сообщений: 1,300
|
По C# на openedu неплохие курсы с тренажером были, после них хорошо зашел канал #SimpleCode на youtube. Главное не учить сразу все, а пытаться что-то делать под теклу, по мере поступления знаний, постепенно наращивая сложность.
|
|||
![]() |
|
||||
Регистрация: 06.03.2011
Сообщений: 250
|
Yuzer, порекомендую на начальном этапе этот плейлист на Youtube (Группа НИП Иваново):
https://www.youtube.com/playlist?lis...Ly-Cxa5rXW1uNu Если удручает и расстраивает обилие неиссякаемой информации в виде сухого текста при первичном самостоятельном изучении, то как альтернатива мне "зашло" в формате видео. (правда и я забросил в силу слабой мотивации после нескольких приложений) |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание просечно-вытяжного листа в 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 |