Перейти к публикации

Простой плагин на API


Pavel1990

Рекомендованные сообщения

Для получения форм

    TCComponentForm itemForm = (TCComponentForm) data.item.getRelatedComponent("IMAN_master_form");
    TCComponentForm revisionForm = (TCComponentForm) data.item_rev.getRelatedComponent("IMAN_master_form_rev");

ну и свойства есть у всех объектов, получать к ним доступ через getProperty и getTCProperty

 

 

Спасибо за помощь, завтра проверю на работе, отпишусь что получилось. А почему нужно использовать именно Eclipse 3.8? Я попробовал сделать плагин Hello Eclipse из client_customization_programmers_guide на 4.6 и вроде как работает.

Ссылка на сообщение
Поделиться на других сайтах


 

Если бы Вы прочитали уже упоминаемый тут client_customization_programmers_guide то знали бы что плагины для ТС 10 пишутся в Eclipse 3.8, а никак не в 4.6 Neon.

Ну и по существу, в гайде по кастомизации информации действительно не очень много, но простенькие плагины получится сделать даже по гайду. Для более сложного надо декомпилировать плагины ТС и рахбираться как что делает ТС, плюс надо разобраться в разработке плагинов для Eclipse, так как плагин для ТС, это по сути плагин для Eclipse. Тут можно начать например с прочтения статей про OSGi у сурового челябинского программиста, начиная с http://samolisov.blogspot.ru/2009/03/osgi.html

import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.aif.kernel.AIFComponentContext;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;

...

// если надо получить несколько выделенных
InterfaceAIFComponent[] c_targets = AIFUtility.getTargetComponents();

//если надо получить один (только первый) выделенный
InterfaceAIFComponent c_target = AIFUtility.getTargetComponent();

// ну и дальше проверяем тип выделенного и работаем с ним как с объектом этого типа
if (c_target instanceof TCComponentItem) {
    TCComponentItem item = (TCComponentItem)c_target;
    TCComponentItemRevision revision = item.getLatestItemRevision();

}

 

Попробовал сегодня и вот что получилось.

 

В этой строке

InterfaceAIFComponent c_target = AIFUtility.getTargetComponent();

почему то перечеркивает getTargetComponent();

 

А дальше код

if (c_target instanceof TCComponentItem) {
TCComponentItem item = (TCComponentItem)c_target;
TCComponentItemRevision revision = item.getLatestItemRevision();

}

не работает потому, что не выполняется условие.

 

Чего я добился это когда c_target в строковый тип делаю вот так

c_target.toString()

В этом случае я получаю строку равную строке в Менеджере структуры в колонке Заголовок строки структуры, то есть имя_айтема/номер_ревизии;1 - Состоит из...

 

Ниже скрин, чтобы понятнее было.

 

А получить имя item и номер ревизии в чистом виде так и не получилось. Может я что то не так делаю, подскажите господа.

 

post-47468-0-35509700-1471283281_thumb.jpg

 

 

Изменено пользователем Pavel1990
Ссылка на сообщение
Поделиться на других сайтах

Попробовал сегодня и вот что получилось.

 

В этой строке





InterfaceAIFComponent c_target = AIFUtility.getTargetComponent();

почему то перечеркивает getTargetComponent();

 

А дальше код





if (c_target instanceof TCComponentItem) {
TCComponentItem item = (TCComponentItem)c_target;
TCComponentItemRevision revision = item.getLatestItemRevision();

}

не работает потому, что не выполняется условие.

 

Чего я добился это когда c_target в строковый тип делаю вот так





c_target.toString()

В этом случае я получаю строку равную строке в Менеджере структуры в колонке Заголовок строки структуры, то есть имя_айтема/номер_ревизии;1 - Состоит из...

 

Ниже скрин, чтобы понятнее было.

 

А получить имя item и номер ревизии в чистом виде так и не получилось. Может я что то не так делаю, подскажите господа.

 

attachicon.gifeclipse.JPG

то что подчеркивает означает что эта функция deprecated и скоро не будет поддерживаться.

 

насчет не выполняется условие - оно у вас и не должно выполняться - я так понял вы выделяете в менеджере структуры строку? так это никакой не TCComponentItem !

 

это TCComponentBOMLine

 

дальше думаю понятно в чем ваша ошибка? и как из BOMLine получить айтем. можно и напрямую через свойство BOMLine item_id получить итд

Изменено пользователем lexx174
Ссылка на сообщение
Поделиться на других сайтах

то что подчеркивает означает что эта функция deprecated и скоро не будет поддерживаться.

 

насчет не выполняется условие - оно у вас и не должно выполняться - я так понял вы выделяете в менеджере структуры строку? так это никакой не TCComponentItem !

 

это TCComponentBOMLine

 

дальше думаю понятно в чем ваша ошибка? и как из BOMLine получить айтем. можно и напрямую через свойство BOMLine item_id получить итд

 

 

Сделал TCComponentBOMLine, но условие все  равно не выполняется.Либо что-то не так делаю...

Но то что я получил хотя бы через c_target.toString() уже радует.

Ссылка на сообщение
Поделиться на других сайтах

Сделал TCComponentBOMLine, но условие все  равно не выполняется.Либо что-то не так делаю...

Но то что я получил хотя бы через c_target.toString() уже радует.

вы немного запутали меня

 

то что вы выделяете и в toString() у вас показывает как "имя_айтема/номер ревизии ;1" это не айтем. а вы выделяете ревизию

 

Как вы хотите чтобы выполнялось условия c_target instanceof TCComponentItem если вместо айтема вы выделяете ревизию?

 

в таком случае проверяйте на instanceof TCComponentItemRevision

Ссылка на сообщение
Поделиться на других сайтах

 

Но то что я получил хотя бы через c_target.toString() уже радует.

Как вас может радовать простая строка? Вы же с ней ничего дальше сделать не сможете. Ни свойства взять прочитать, ни что то изменить.

Вам бы надо сначало проверять что именно выделено в указателе строки.

if (c_target instanceof TCComponentItem) {
TCComponentItem item = (TCComponentItem)c_target;
TCComponentItemRevision revision = item.getLatestItemRevision();

}else if (c_target instanceof TCComponentItemRevision) {
TCComponentItemRevision revision = (TCComponentItemRevision )c_target;

}else if (c_target instanceof TCComponentBOMLine) {
TCComponentItemRevision revision = c_target.getItemRevision();

}

примерно как то так

Ссылка на сообщение
Поделиться на других сайтах

почему то перечеркивает getTargetComponent();

Потому что это устаревший метод который уберут в 12 версии ТС, рекомендуют использовать службу выделения Eclipse, но там немного больше кода, по-этому я вам решил код с getTargetComponent() предложить, так как предположил что на 12 версию вы перейдете не скоро.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.



  • Сообщения

    • Danil Danilich
      Доброго времени суток, уважаемые знатоки, подскажите, пожалуйста, где или как настроить коррекцию на радиус ? Инструмент токарный, в стратегии ставлю галочки на Коррекцию РИ у чистового и чернового в итоге  в УП нет коррекции на черн. И есть на чист, если убираю галочки, то есть на черновом и нет на чистовом. Версия 2023, а вот 2014 все в порядке. Как прикреплять фото?  Благодарю за уделённое время. 
    • BSV1
    • Kasper
      Кто то может подсказать как просматривать файлы SolidWorks в ТС, может есть какой-то плагин?
    • Павлуха
      Опыт проектирования более 25 лет, а до сих пор бестолковый...
    • Павлуха
      Временная ось - это ось цилиндрической геометрии тела. Где есть цилиндр, там есть ось.
    • Kasper
      @Maik812 Может у вас есть ссылка или можете сюда архив залить на рабочую версию, какую бы версию я не ставил все равно не работает просмотр.
    • Kasper
      Сейчас стоит windows 10 и SW 2024  
    • maxx2000
      @Artas28 ключевая фраза "добавилась фаска" после такого в любой программе обработка летит к херам собачьим. Поэтому фаску не добавляй, а обрабатывай фаску по имеющейся кромке
    • Artas28
      Всем добрый вечер. Как вы работает в этой "Замечательной программе"? Была модель плиты, сделана обработка, В плите меняется диаметр отверстия, и добавляется фаска. Больше ничего не менялось. Обновляю плиту в спруте через их утилиту для SW.  Весь проект к хуям. Все контура со знаком вопроса, все отверстия со знаком вопроса. Ни одной живой траектории не осталось. И нет функций, автоматический обновить. что бы она автоматически сгенерировала (распознала) похожий контур как в NX или SC.  По сути это надо теперь всё по новой делать из за маленького изменения. (работы на 3 часа). Вы так же "наслаждаетесь" работой в этой "замечательной программе"?    А если проект, где 40+ инструмента и работы на несколько дней? Там как быть? 
    • maxx2000
      я не в курсе, что такое временные оси и как их можно использовать и что это влечёт. Может быть в SW это какие-то другие оси, не в их классическом понимании. Может это масляное масло. Обычно когда строишь цилиндр это вытягивание окружности или вращение эскиза вокруг оси, т.е. ось уже есть в элементе. Что он там настроил неизвестно 
×
×
  • Создать...