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

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

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




  • Сообщения

    • malvi.dp
      Так в чем проблема создать кривую и протянуть профиль? Единственная трудность это кривую сделать из дуг и отрезков, а не сплайном. Если же не использовать инструментарий сварных конструкций, то можно и сплайн использовать в качестве направляющей.  
    • Alexey0336
      Добрый день. Как то фигурировал тут вопрос с точкой в названии файла. У меня проблема, не могу захватить модель, пишет, что с этим символом нельзя. Обойти никак нельзя получается?
    • malvi.dp
      У вас там скорее всего скрыты размеры. Перетяните их дальше от штриховки, чтоб не пересекали.
    • Snake 60
      @Бестолковый С названием топика не ошиблись? Человек спрашивает: ' VBA ' 1. Open a document in SOLIDWORKS. ' 2. Run the macro below to set inch units with '     a fractional base of 16 and no rounding. Dim swApp As SldWorks.SldWorks Dim Part As SldWorks.ModelDoc2 Option Explicit Sub main()    Set swApp = Application.SldWorks    Set Part = swApp.ActiveDoc    Part.SetUnits swINCHES, swFRACTION, 16, 0, False End Sub   Код взят отсюда: https://help.solidworks.com/2019/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.imodeldoc2~setunits.html Вот еще описание всех методов: https://help.solidworks.com/2021/English/api/swconst/DP_Units.htm Ну и на вкусное, статья от Артема (см. через ВПН) https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=https://www.codestack.net/solidworks-api/options/document/set-units/&ved=2ahUKEwjgpL-apN6GAxU7HxAIHYO0D2IQFnoECBAQAQ&usg=AOvVaw15xq49gocoVQ5BzEA31qGf
    • Shvg
      IModelDocExtension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitSystem, swUserPreferenceOption_e.swDetailingNoOptionSpecified, swUnitSystem_e.<Value>), где swUnitSystem_e.<Value> перечисление swUnitSystem_CGS           1 = Centimeter, gram, second  swUnitSystem_Custom        4 = Lets you set length units, density units, and force  swUnitSystem_IPS           3 = Inch, pound, second  swUnitSystem_MKS           2 = Meter, kilogram, second  swUnitSystem_MMGS          5 = Millimeter, gram, second   
    • Ветерок
      Вопрос про "включение RGK". Если в модели какие-то функции сделаны с использованием RGK, эта модель будет работоспособной на другом компе, где RGK "не включен"? И вообще не понятно, получается система использует два разных ядра одновременно? Или включая RGK, автоматически выключается Прасолид? А обратно переключиться можно? Если можно итак, и так, и туда, и обратно, тогда не понятно зачем вообще это включение-выключение.
    • TVM
      Так на скорую руку строились. Ясно что такое воспроизвести в живую затруднительно. 
    • Борман
    • Shura762
      Уважаемый @mamomot  вы ошибаетесь на счет  они (топсистемы) уважают пользователей T-FLEX PLM, и им была приведена презентация нового продукта, рассказаны пути развития этого продукта и как часть всего этого интересного 18 версия када. Лично внешний вид мне понравился, осталось узнать про "плюшки" облегчающие работу конструктора.
    • mamomot
      Нужно уважать пользователей. Понимаю, что сейчас идет "охота" на госкорпорации. Но из уважения к другим пользователям, купившим ранее версии Тифлекс, можно было бы дать хоть какой-то обзор нового: Металлоконструкции, Детали Машин, другие модули...  
×
×
  • Создать...