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

Подъем от TCComponentDataset до TCComponentItemRevision


Progress

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

Стоя на ревизии item'а, опускаюсь до нужного Dataset'а (код внизу). Это проблем не вызывает. Но как быть, если стоя на Dataset'е необходимо найти ревизию item'а?

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
						for (TCComponentTcFile tc_file : tc_files) {
							tc_file.getFile(sPath);
						}
					}
				}
			}
		}
		break;
	}
}

 

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


От управляющей программы "подняться" до ревизии айтема... Эх, если выясните - напишите, что ли. Тоже интересно :smile:

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

А зачем там куда-то подниматься? есть св-во item_revision - получайте значение и ловите ревизию.

Это не для случая с root_activity,а просто для датасета под ревизией

Изменено пользователем lexx174
Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, NGM сказал:

От управляющей программы "подняться" до ревизии айтема... Эх, если выясните - напишите, что ли. Тоже интересно :smile:

Скорей всего только через метод WhereReferenced, т.к MENCProgram  это что-то вроде обычной папки

Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, lexx174 сказал:

Скорей всего только через метод WhereReferenced, т.к MENCProgram  это что-то вроде обычной папки

Я внутритимцентровской программистской терминологией владею на твердую 2-, но если речь идет об анализе влияния "где ссылается" - то да, оно :)

Ссылка на сообщение
Поделиться на других сайтах
Только что, NGM сказал:

Я внутритимцентровской программистской терминологией владею на твердую 2-, но если речь идет об анализе влияния "где ссылается" - то да, оно :)

я вам ответил на программном языке - есть такой непосредственно метод одноименный. Т.к объект MENCProgram это по сути папка-контейнер то по сему прямых методов через свойства/отношения добраться обратно нет. Так что можно попробовать через WhereReferenced

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

Спасибо за подсказки! Вот что получилось в итоге:

if (comp.getTypeComponent().toString().contains("MENCProgram")) {
	try {
		String itemRevId = "error", itemId = "error";
		AIFComponentContext[] compUsed = comp.whereReferenced(); //где используется компонент MENCProgram
		for (AIFComponentContext compU : compUsed) {
			InterfaceAIFComponent compI = compU.getComponent();
			TCComponent compTC = (TCComponent)compI; //преобразование в TCComponent compTC
			AIFComponentContext[] compTCUsed = compTC.whereReferenced(); //где используется компонент TCComponent compTC
			for (AIFComponentContext compTCU : compTCUsed) {
				InterfaceAIFComponent compTCI = compTCU.getComponent();
				TCComponent compTC2 = (TCComponent)compTCI; //преобразование в TCComponent compTC2
				TCComponentItemRevision itemRev = (TCComponentItemRevision)compTC2; //преобразование в TCComponentItemRevision itemRev
				itemRevId = itemRev.getProperty("item_revision_id"); //получение item_revision_id
				TCComponentItem item = itemRev.getItem(); //получение самого item
				itemId = item.getProperty("item_id"); //получение item_id
				//получены item_id и item_revision_id
			}
		}
		/*...*/
	} catch (TCException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

Будут идеи как улучшить, выслушаю с радостью.

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

Почему вы начинаете с MENCProgram а не с Dataset? Условие же было с Dataset.

И не помешают проверки какие объекты возвращает WhereReferenced

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

Почему вы начинаете с MENCProgram а не с Dataset? Условие же было с Dataset.

Было принято решение что так будет удобнее пользователю. Потому реализация претерпела небольшие изменения.

 

PS. надеюсь окончательное)

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Ветерок
      "увеличение оптимизации". Оптимизацию невозможно ни увеличить, ни уменьшить.
    • gudstartup
      @boomeeeer может от страны зависит
    • david1920
      нет время нет заниматься да и информации новой нет Это я на других станках делал
    • gudstartup
      @david1920 имеется ввиду платы на системах с сертификацией опций фалом oprminf старые в расчет не принимаются вы свой 18i восстановили?
    • gudstartup
      очень даже спрашивают как обязательную информацию для проверки вашей компании налоговый идентификатор должен быть указан. на myfanuc не спрашивают а вот на портале к сожалению просто так не зарегаться. 
    • david1920
      На 0I-TC mate менял плату управления приводами На 18i-TB менял для диагностики платы процессоров (один был от Spinner другой простой) процы были одинаковые Всё работает
    • brigval
      Браком 1.04В версии 1.04Добавлено: Автоуменьшение высоты шрифта многострочного наименования в ОН чертежа.Добавлено: Переименование поверхностей, баз, размеров в порядке их следования на чертеже.Добавлено: Переименование изображений по ГОСТ: сначала виды, затем разрезы, сечения, выносные элементы.Добавлено: Выравнивание неассоциативных видов.Добавлено: Ручной ввод шага и угла наклона штриховки.Добавлено: Перемещаются в макроэлемент компоненты, исключаемые из спецификации.Добавлено: Выбор количества значащих цифр в значении площади поверхности детали для вставки в ТТ.Добавлено: Возможность не авторазмещать ТТ перед конвертацией чертежа в PDF.Добавлено: Добавлены кнопки «Выделить все включенные в расчет» и Выделить все исключенные из расчета».Добавлено: Версия КОМПАС-3D Home показывается в программе со словом Home.Добавлено: Улучшен алгоритм считывания и вставки ТТ чертежа.Добавлено: При конвертации чертежа в PDF удаляется старый файл с таким же обозначением в начале имени, как обозначение в начале имени нового файла.Добавлено: Улучшено считывание номеров позиций из 3D-модели сборки.Исправлено: Иногда скрытые и потом показанные объекты чертежа отображались не серым цветом.Исправлено: Иногда после ручного заполнения графы «Масса» ОН чертежа в окне программы масса могла отображаться не правильно.Исправлено: В некоторых случаях из ОН чертежа могла не считываться литера.Исправлено: В некоторых окнах программы неправильно показывался заголовок окна программы.Исправлено: Другие замеченные мелкие ошибки и неточности кода.Скачать
    • boomeeeer
      Не помню чтобы у меня такое спрашивали при регистрации.
    • Snake 60
      @eljer0n  Откройте макрос SaveDRW.swp редактором VBA Найдите вот эти строки: Поменяйте выделенную цифру на нужную вам 3 или 4 - это количество символов которое останется от имени конфигурации. PS При сохранении в PDF тоже ругается на неправильное название чертежа, т.к. тоже обрезает название конфигурации до двух знаков, там тоже надо править при желании...
    • eljer0n
      @malvi.dp в общем порядок следующий (на каждое исполнение свой чертеж и позиция в спецификации):   Для исполнения с 2мя знаками. 1. Есть деталь с именем формата ХХ-01.01-01 (последнее -01 это исполнение) 2. В Мпроп детали назначается исполнение из конфигурации (как у вас на картинке). Отображается корректно 3. Создается чертеж по модели, исполнение в основной надписи чертежа детали отображается корректно. 4. Сохраняется через SaveDRW с корректным именем. 5. В спецификации сборки все отображается корректно.     Для исполнения с 3мя знаками. 1. Есть деталь с именем формата ХХ-01.01-011 (последнее -011 это исполнение) 2. В Мпроп детали назначается исполнение из конфигурации. Отображается корректно 3. Создается чертеж по модели, исполнение в основной надписи чертежа детали отображается корректно. 4. Сохраняется через SaveDRW с некорректным именем, а именно - с обрезанным до двух знаков исполнением (-01). 5. В спецификации сборки шифр отображается (внезапно! может какой глюк был: у солида или у меня ) корректно, как и у вас на рисунке.     Выходит, загвоздка все-таки только в сохранялке чертежа.
×
×
  • Создать...