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

Простой плагин на 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 пользователей

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




×
×
  • Создать...