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

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

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




  • Сообщения

    • kkk
      А зачем в свойствах модели записывать тип Уравнение, если испокон веков работал тип Текст?  У меня свойства модели выглядят так (и все работает и отображается в чертеже). В целом я не критикую, просто хочу понять, может я пропусти что-то из новинок и нужно подтянуть знания. Либо автор чего-то перемудрил, что нередко случается.   
    • nicomed
      По этому поводу ничего не могу сказать. У меня 2021 везде, и, других версий пока и не предвидится. И, вроде, работает без вылетов.   Это есть, и как корректно решить пока не знаю. У себя пока пробую варианты, но кучу промежуточных версий не хочу выкладывать...
    • RokiSIA
      Да у вас все по другому, и ручки выбора нет. Мануала точно нет желательно на родном или английском без перевода , а то были прецеденты когда не переводили нужное. Попробуйте ручку в положение ZRN и одновременно нажмите две клавиши Feeldhold и вращение РГ или просто ручку в ZRN и вращение РГ только перезагружать не забывайте
    • Рома калужский
      сначала хотел написать, что пробовал, т.к. на самом деле пробовал. а сейчас думаю, дай еще попробую и все заработало... видать в прошлый раз, после поимки ошибки, он заглючил (а такое бывает) G98 работает и со строками и с в G83 спасибо мил человек за поддержку))
    • sippovich
      Спасибо, сейчас попробую,что предложили товарищи,а потом если не выйдет будем через ладдер думать.
    • Александр1979
      Если у вас нет инструкции по занулению револьверной головы, то выкладывайте ладдер (программу PMC) с ЧПУ FANUC. По нему можно попробовать разобраться.
    • ДОБРЯК
      А разве определитель этой матрицы    Матрица жесткости упакованная  1.560000E+04 -1.560000E+04 -1.560000E+04  1.560000E+04   не равен нулю?:=)   если вычесть w2*[М], то матрица на выходе не будет вырождена.   
    • Kelny
      Ни как, ведь производство их не собирает и не устанавливает, а лишь упаковщики собирают и кладут в общую упаковку. В сборочном чертеже только то что устанавливается, например, одна пятка, если она вообще устанавливается, а остальное в комплектах без позиций. А вот как эти пятки устанавливать и использовать в сопроводительной документации на изделие: паспорт или руководство по эксплуатации.   Возможно стоит всё таки предусмотреть крепление этих пяток или ящик прикрученный к раме, что бы не потерялись при эксплутатации, но это вам там виднее, что нужно заказчику. По сборочному чертежу надо собрать изделие (всё что устанавливается на изделие), а все пятки и другой крепёж для крепления, которые не устанавливаются, записать в комплекты.  
    • Fedor
      Новое слово в алгебре - а вот старое  https://ru.wikipedia.org/wiki/Вырожденная_матрица  :) 
    • RokiSIA
      Да именно это она и говорит. У вас самый простой случай(если есть мануал) .Голову надо зажать правильно при помощи соленоида и в мануале к станку мелким мелким шрифтом в самом темном углу и на китайском написана комбинация клавиш для обнуления. У нас на разных станках по разному. Например: механически зажать голову, переключатель поставить в положение ZRN, переключатель номера инструмента поставить в 8 или 12 позицию нажать одновременно кнопку вращения РГ и кнопку Feeld Hold  затем переключатель в первую позицию и нажать кнопку вращения РГ и кнопку Feeld Hold затем кнопку стоп и перезагрузить станок. Второй вариант механически зажать голову, переключатель поставить в положение ZRN, переключатель номера инструмента поставить в 1 позицию нажать одновременно кнопку вращения РГ и кнопку Feeld Hold удерживать 6 секунд затем кнопку стоп и перезагрузить станок. Фото всей панели ручек не вижу или их нет
×
×
  • Создать...