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

как добавить форму на существующие детали и сборки


Aleximus

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

Всем привет!

Возник такой вопрос, нужно написать plugin на JAVA который будет искать все детали и сборки и для

каждой ревизии создавать форму и прикреплять нужное отношение. Plugin будет запускаться из приложения <Мой

Teamcenter>. Plugin должен быть добавлен в пункт главного меню <Инструменты>

с названием <Добавить форму Подпись>

У меня пока очень мало опыта в этом плане, и у меня есть пара вопросов о реализации:

1. Как отследить какая ревизия выбрана?

2. Как проводить с ней нужные манипуляции, например вставка формы?

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


Всем привет!

Возник такой вопрос, нужно написать plugin на JAVA который будет искать все детали и сборки и для

каждой ревизии создавать форму и прикреплять нужное отношение. Plugin будет запускаться из приложения <Мой

Teamcenter>. Plugin должен быть добавлен в пункт главного меню <Инструменты>

с названием <Добавить форму Подпись>

У меня пока очень мало опыта в этом плане, и у меня есть пара вопросов о реализации:

1. Как отследить какая ревизия выбрана?

2. Как проводить с ней нужные манипуляции, например вставка формы?

InterfaceAIFComponent[] comps = application.getTargetComponents();

if(comps.length==1 && comps[0] instanceof TCComponentItemRevision)

{

	TCComponentFormType formType =  (TCComponentFormType ) session.getTypeComponent("Form");

	TCComponentForm form =   formType.create( ... ); 

	form.save();

	form.unlock();

	TCComponentItemRevision rev = (TCComponentItemRevision)comps[0];

	rev.add("IMAN_reference",form);



}
примерно так,на вскидку.параметры функций есть в явадоке.application и session думаю знаете как предварительно получить.
Ссылка на сообщение
Поделиться на других сайтах

InterfaceAIFComponent[] comps = application.getTargetComponents();

if(comps.length==1 && comps[0] instanceof TCComponentItemRevision)

{

	TCComponentFormType formType =  (TCComponentFormType ) session.getTypeComponent("Form");

	TCComponentForm form =   formType.create( ... ); 

	form.save();

	form.unlock();

	TCComponentItemRevision rev = (TCComponentItemRevision)comps[0];

	rev.add("IMAN_reference",form);



}
примерно так,на вскидку.параметры функций есть в явадоке.application и session думаю знаете как предварительно получить.

Спасибо, да примерно так и получилось, вот полный код, кому интересно

public class SampleHandler extends AbstractHandler {

	/**

	 * The constructor.

	 */

	

	public SampleHandler() {}

	

	public Object execute(ExecutionEvent event) throws ExecutionException {

		SearchAndCreateForm formClass = new SearchAndCreateForm(event.getCommand().getId());

		formClass.schedule();

		return null;

	}



	private class SearchAndCreateForm extends Job{

		private String id;

		public SearchAndCreateForm(String id) {

			super(id);

	

			this.id = id;

		}

		

		private AbstractAIFUIApplication application = (AbstractAIFUIApplication) AIFUtility.getActiveDesktop().getCurrentApplication();

		private TCSession session = (TCSession) application.getSession();

		

		@Override

		protected IStatus run(IProgressMonitor arg0) {

			try{

	

				InterfaceAIFComponent[] targetArray = application.getTargetComponents();

				

				TCComponent[] attachments = Translator.convertToTCComponents(targetArray);

	

				if (attachments != null) {

					for (int i = 0; i < attachments.length; i++) {

						TCComponent imanComponent = attachments[i];

						if(imanComponent instanceof TCComponentBOMLine) {

							imanComponent = ((TCComponentBOMLine)imanComponent).getItemRevision();

							

							TCComponentFormType formType =  (TCComponentFormType ) session.getTypeComponent("Form");

							DateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy");

							TCComponentForm form = formtype.create("Подписи", formatter.format(new Date()), "Tvz5_SignForm");

							form.save();

							form.unlock();

							

							imanComponent.add("Tvz5_SignRelation",form);

							

						}

					}

				}

			}catch(Exception exception){

				System.out.println("Error - " + exception.getMessage());

				return Status.CANCEL_STATUS;

			}

			

			return Status.OK_STATUS;

		}

	}		

}
Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...

Всем привет!

Возник такой вопрос, нужно написать plugin на JAVA который будет искать все детали и сборки и для

каждой ревизии создавать форму и прикреплять нужное отношение. Plugin будет запускаться из приложения <Мой

Teamcenter>. Plugin должен быть добавлен в пункт главного меню <Инструменты>

с названием <Добавить форму Подпись>

Проблему вы уже решили, но я хотел бы уточнить, с какой целью делали создание такой формы через меню? Ведь форма по сути отображает информацию, полученную в процессе согласования? Тогда можно было создавать форму через хэндлер EPM-create-form непосредственно из бизнес-процесса. С другой стороны, эта форма является неотъемлемой частью любой ревизии в системе. Тогда через Business Modeler можно настроить, чтобы при создании ревизии она создавалась автоматически.

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

Проблему вы уже решили, но я хотел бы уточнить, с какой целью делали создание такой формы через меню? Ведь форма по сути отображает информацию, полученную в процессе согласования? Тогда можно было создавать форму через хэндлер EPM-create-form непосредственно из бизнес-процесса. С другой стороны, эта форма является неотъемлемой частью любой ревизии в системе. Тогда через Business Modeler можно настроить, чтобы при создании ревизии она создавалась автоматически.

А почему нельзя эти данные добавить на саму форму ревизии? Можно, например, сделать на форме 2 вкладки, чтобы отделить данные.
Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...

А почему нельзя эти данные добавить на саму форму ревизии? Можно, например, сделать на форме 2 вкладки, чтобы отделить данные.

Как правило, на разные формы разносят данные, к которым необходимо организовать различный уровень доступа. Система не позволяет запретить доступ конкретных пользователей к конкретным полям штатными средствами. Например, данные архивного учета правит только архив. Выносим на форму и по типу формы ограничиваем доступ.

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Шайтан
      Просто скачал, построил сетку не меняя ничего, запустил расчет. Ошибок не выдает.
    • lem_on
      Да, обработка вразбежку, стандартный прием и на точении тоже. 
    • ДОБРЯК
      Вы что-то доказываете, рассказываете, пишите много слов и букв, а в итоге говорите, что деталей не знаю. :=) Это что-то из серии мазохизма. :=) Вас раздражает, а вы продолжаете разговор, и в итоге виноват я.  Ладно бы доказывали когда знаете детали что доказываете. Написали кучу сообщений, а в итоге сказали, что не знаю деталей о чем сам написал кучу сообщений. :=)   Просто великолепно.
    • hlibhlib
      Так решили?  https://disk.yandex.ru/d/ZDWZv8p_B7l6nw
    • nicomed
      Я не программист, тем более не системщик. Могу только гипотетически предполагать что разные версии NET Framework в системе... я писал под 4.7.2. Переписывать с отловом ошибок , если честно лень. Тут вообще глаза на лоб лезут. Из не стандартных Майкрософтовских библиотек использовались только библиотеки от Солид-а. Что там может хотеть автозагрузки не представляю. Обычное WPF приложение. Исходники в доступе. С похожим сталкивался к каком аспекте: Когда у себя тестировал скрытие кромок, то для того, что бы сделать все кромки опять видимыми, то переходил в режим видимости кромок в Солиде ( ) и нажимал кнопку "Сбросить все". Визуально все кромки делались видимые. Потом после использования  макроса все кромки, что до этого скрывались и проявились после нажатия кнопки - скрывались вновь.   При тестах на 2-х машинах Вин10 СВ21 - пока проблем не было.
    • maxx2000
      выдавить на экструдере и пилой шик-шик, как колбасу, а не заниматься суходрочкой. если это корпуса с интегрированным оребрением, вложиться в литье люминя под давлением.
    • Говорящий Огурец
      Во, вспомнил, где я картинки видел! :) Инструкция по эксплуатации Sandvik Coromant. Обработка титана. Техническое руководство.pdf Начиная с 91-й страницы.   Чисто интуитивно применял нечто подобное на алюминии и технических пластиках при фрезеровке ребер/стенок
    • Kelny
      Так же меню Инструменты-Параметры...-Настройки пользователя-Эскиз-Взаимосвязи/привязки
    • advocut
      @hlibhlib https://dropmefiles.com/oTuAs  Вот такая была ещё (эту разрешили). Непонятно, как вообще сказать каму, откуда заходить (надо или снаружи, или в заранее просверленные отверстия и чтобы не на бобышки), тем более тут ещё и узкое место есть, т.е. вообще два захода надо.
    • AlexKaz
      Будет только МКЭ или и аналитика + натурный эксперимент?
×
×
  • Создать...