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

Получение Dataset у TCComponentItem по его TCComponentItemRevision


Progress

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

Здравствуйте!

 

Бьюсь над такой проблемой: Стою на Item и мне нужно перейти к его последней ревизии и получить оттуда Dataset'ы.

 

Вот я нахожу выделенный Item и его ревизию. После перехожу на AIFComponentContext который содержит несколько MENCProgram по отношению Контент. Они в свою очередь ссылаются на Dataset.

Только не получается с MENCProgram перейти к Dataset (тип UGCAMPTP).

InterfaceAIFComponent c_target = AIFUtility.getTargetComponent(); //получаю выбранный Item
TCComponentItem item = (TCComponentItem)c_target;
try {
	TCComponentItemRevision itemRev = item.getLatestItemRevision(); //его последняя ревизия
	AIFComponentContext[] itemRevChild = itemRev.getChildren();
            
	for (AIFComponentContext itrch : itemRevChild) {
	if (itrch.getContext().toString().contains("root_activity"))
	{
		InterfaceAIFComponent activity = itrch.getComponent();
		AIFComponentContext[] activityChild = activity.getChildren();
		for (AIFComponentContext ach : activityChild) {
			InterfaceAIFComponent achPr = ach.getComponent(); //здесь стою на MENCProgram
		}
	}
}

Может кто сможет подсказать или идею подкинуть.

 

После того как я получу Dataset'ы нужно будет выгрузить файлы по "Именованным ссылкам" в файловую систему.

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


Пока получается что-то такое... В месте где комментировал код, я нахожусь на объекте содержащем "Именованную ссылку". Вот только вытащить файлы пока не выходит.

InterfaceAIFComponent c_target = AIFUtility.getTargetComponent();
TCComponentItem item = (TCComponentItem)c_target;
try {
    TCComponentItemRevision itemRev = item.getLatestItemRevision();
    AIFComponentContext[] itemRevChild = itemRev.getChildren();
    File[] exportedFiles = null;
    for (AIFComponentContext itrch : itemRevChild) {
        if (itrch.getContext().toString().contains("root_activity")) {
            InterfaceAIFComponent activity = itrch.getComponent();
            TCComponent activityCom = (TCComponent)activity;
            TCComponent[] activityComps = activityCom.getRelatedComponents();
            for (TCComponent activityComp : activityComps){
                if (activityComp.getTypeComponent().toString().contains("MENCProgram")){
                    TCComponent[] achPrComps = activityComp.getRelatedComponents();
                    for (TCComponent achPrComp : achPrComps){
                        if (achPrComp.getTypeComponent().toString().contains("UGCAMPTP")){
                            //здесь нужно скачать файл привязанный именованной ссылкой к TCComponent achPrComp
                        }
                    }
                }
            }
        }
    }
}
catch (TCException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

 

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

TCComponentDataset cam_dataset = .....; //Ваш UGCAMPTP dataset
                                    
TCComponentTcFile tc_files[] = cam_dataset.getTcFiles();

 

for(....)

{

     String original_file_name = tc_files[n].getTCProperty("original_file_name").getStringValue();
                                              
     File f = tc_files[n].getFile(temp_dir,original_file_name);

}
 

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

Спасибо за подсказку!

Вот готовый вариант, вдруг кому понадобится:

InterfaceAIFComponent c_target = AIFUtility.getTargetComponent(); //выделенный таргет
TCComponentItem item = (TCComponentItem)c_target; //item
try {
    TCComponentItemRevision itemRev = item.getLatestItemRevision(); //последняя ревизия итема
    AIFComponentContext[] itemRevChild = itemRev.getChildren();
    for (AIFComponentContext itrch : itemRevChild) {
        if (itrch.getContext().toString().contains("root_activity")) { //если дочерний объект в нужном отношении
            InterfaceAIFComponent activity = itrch.getComponent();
            TCComponent activityCom = (TCComponent)activity;
            TCComponent[] activityComps = activityCom.getRelatedComponents(); //все объекты в отношениях с TCComponent activityCom
            for (TCComponent activityComp : activityComps){
                if (activityComp.getTypeComponent().toString().contains("MENCProgram")) { //если объект нужного типа
                    TCComponent[] achPrComps = activityComp.getRelatedComponents();	 //все объекты в отношениях с TCComponent activityComp					
                    for (TCComponent achPrComp : achPrComps) {								
                        if (achPrComp.getTypeComponent().toString().contains("UGCAMPTP")) { //если объект нужного типа
                            TCComponentDataset cam_dataset = (TCComponentDataset)achPrComp;
                            TCComponentTcFile tc_files[] = cam_dataset.getTcFiles(); //получаем файлы TCComponentDataset cam_dataset
                            int n = 0;
                            for (TCComponentTcFile tc_file : tc_files) {                                      
                                File f = tc_files[n].getFile(sPath); //sPath - переменная String
                                n = n + 1;
                            }
                        }
                    }
                }
            }
            break;
        }
    }			
} catch (TCException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

 

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • SAPRonOff
      Пример со шлицами, а-ля видео про шлицы от Дейва:    и видео построения бобышки без эскиза, бобышка может быть одноконтурной или многоконтурной, выбирать можно плоские грани или двойной кривизны, в принципе ограничения, в основном, в фантазии пользователя:       
    • Viktor2004
      Вот тут я полтора года назад 4 ось на Рободрилл подключал. Все опции там уже стояли https://cccp3d.ru/topic/148311-robodrill/  
    • BASH_HD
      По китайцам нашел еще 3 обьявления на 1688.   Искал по ошибке сертификата 5523  .   на картинке прям нарисован рободрилл и тект "открываем 4, 5 ось "  остается вопрос с трудностями перевода.  ну и риск, что китаец возьмет деньги скажем через крипту  и пришлет какую-то хрень которая закирпичит станок.   Спокойней было бы, чтобы обозначился наш местный профессионал бывший официал FANUC, у которого уже налажен контакт с проверенным китайцем. пусть это и будет чуть дороже.   Кстати я с нашим сервисом Фанук уже общался несколько лет назад. и успешно активировал ось на другом рободрилле.   Связался с тем сотрудником, контакты сохранились. Возможно он даже есть на этом форуме.  Пока не предложил ничего, посмотрим....        про ладдер там проблем быть не должно.  все открыто и доступно к редактированию .   уже проследил какое ладдеру нужно кип реле для 5 оси и включил его.      
    • Killerchik
      Ну да, в прошлом)))) Директ драйв-это всё таки топ сегмент. Ну а про энкодер на столе я и написал. В общем, всё выяснили, надеюсь автор найдёт нужного человечка. Ооооо, понты сами себя не нарежут.
    • Viktor2004
      Вот год назад покупали китайские станки определенного типа. Там на открывание дверцы ATC стоял пневмоцилиндр. Дешево и сердито. Сейчас те же самые станки идут с сервомотором на открывание-закрывание дверцы. И при каждом включении станка надо эту дверцу обнулять. Зачем стали так делать китайцы, которые экономят на каждой гайке, понять не могу
    • gudstartup
      поэтому сейчас редукторы в прошлом и ставят dd моторы а уж если редуктор то с доп. датчиком на валу плашайбь
    • Viktor2004
      я просто с названием таким не сталкивался. "Индексная ось" вот индексный патрон, название официальное
    • Killerchik
      По-идее, особо ничем. Но механически и по моментным характеристикам она может быть неспособна работать в процессе резания - например, четвёртая ось на базе червячного редуктора с диким люфтом и движком с мизерным моментом. Разжались-повернулись потихоньку по энкодеру стола-зажались.
    • gudstartup
      i это интерлок и это вовсе не значит что ось не может двигаться просто оа как правило после индексации становится на тормоз и отключается но это не мешает вам индексировать например оси a и с одновременно введение 5 оси в рободрилл может быть сопряжено с которыми трудостями например ось подключается через сервисное приложение с паролем и пока вы не выполните процедуру ось ни в чпу  ни в ладдере не активируется. полноценная она  а называется так потому что оси поворотного стола как правило поворачивают плоскость обработки и фиксируются .
    • hvr63
      Ставить не пробовал. http://3d.evtifeev.com/3dmodel/739/ustanovka-plagina-threadmodeler-dlya-autodesk-inventor-2021-2022-2023-2024/
×
×
  • Создать...