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

обход дерева на java


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

имеется TCComponentItemRevision объект какой-то сборки. Как получить ссылку на его BOMViewRevision и далее на айтемы компонент?

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


имеется TCComponentItemRevision объект какой-то сборки. Как получить ссылку на его BOMViewRevision и далее на айтемы компонент?

getRelatedComponents("structure_revisions"). Получишь массив BOMViewRevisions.Дальше думаю разберешься
Ссылка на сообщение
Поделиться на других сайтах

getRelatedComponents("structure_revisions"). Получишь массив BOMViewRevisions.Дальше думаю разберешься

спасибо. Т.е. продолжать дальше спускаться по свойствам, ища их через getPropertyNames().

мне предложили еще другой вариант, судя по обилию функций в этих классах, сименс рекомендует идти этим путем,

но, похоже, тут больше памяти сжирается.

TCComponentBOMWindowType bowWinType = (TCComponentBOMWindowType )getSession().getTypeComponent("BOMWindow");

bomWin = bowWinType.create(null); // create bom window configured with the default revision rule

TCComponentBOMLine bl= bomWin.setWindowTopLine(_tcItem, itemRev, null, null);

// get children if any

if (bl.hasChildren()){

AIFComponentContext[] childContext = bl.getChildren();

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

TCComponentBOMLine child = (TCComponentBOMLine)childContext.getComponent();

TCComponentItem item = child.getItem();

}

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

спасибо. Т.е. продолжать дальше спускаться по свойствам, ища их через getPropertyNames().

мне предложили еще другой вариант, судя по обилию функций в этих классах, сименс рекомендует идти этим путем,

но, похоже, тут больше памяти сжирается.

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

TCComponentBOMWindowType bowWinType = (TCComponentBOMWindowType )getSession().getTypeComponent("BOMWindow");

bomWin = bowWinType.create(null); // create bom window configured with the default revision rule

TCComponentBOMLine bl= bomWin.setWindowTopLine(_tcItem, itemRev, null, null);

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

А как имея только TCComponentItem найти его сборку, и вытащить ее состав виде TCComponentBOMLine. Трудность в том, что компоненты BOMLine только в менеджере структуры, в других случаях (без загрузки менеджера структуры) они даже явно не приводятся к нужному типу.

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

А как имея только TCComponentItem найти его сборку, и вытащить ее состав виде TCComponentBOMLine. Трудность в том, что компоненты BOMLine только в менеджере структуры, в других случаях (без загрузки менеджера структуры) они даже явно не приводятся к нужному типу.

У TCComponent есть метод whereUsed.

О какой загрузке менеджера структуры речь? код приведенный выше работает

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

Удалось выдернуть этот bomline:

private ISelection m_selection;

...

Object data = ((IStructuredSelection)m_selection).getFirstElement();

AIFComponentContext Ir = ((AIFComponentContext)data).getComponent().getChildren()[((AIFComponentContext)data).getComponent().getChildren().length - 1];//ревизия

TCComponentItemRevision ic = (TCComponentItemRevision)Ir.getComponent();

TCComponentBOMWindowType bowWinType = (TCComponentBOMWindowType)ic.getSession().getTypeComponent("BOMWindow");

TCComponentBOMWindow bomWin = bowWinType.create(null);

TCComponentBOMLine bl = bomWin.setWindowTopLine(null, ic, null, null);

только как нормально ревизию получить (в переменную Ir->ic)?

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

Откуда берется m_selection? выбирается пользователем в портале? у объекта application есть функции getTargetComponents(), getSelectedComponents() результат которых прямо приводится к нужному типу.

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

Откуда берется m_selection? выбирается пользователем в портале? у объекта application есть функции getTargetComponents(), getSelectedComponents() результат которых прямо приводится к нужному типу.

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

Скорей всего ISelection - это и есть аналог InterfaceAIFComponent

да, (AIFComponentContext)data).getComponent() возвращает InterfaceAIFComponent, от которых я беру getChildren(). последний мне возвращает массив из AIFComponentContext:

1) TCComponentForm

2) TCComponentBOMView

3) TCComponentItemRevision - вот его как последний элемент массива я и беру, но обращаться к последнему элементу массива считаю не совсем корректно, есть ли способ напрямую получить ревизию из InterfaceAIFComponent?

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

да, (AIFComponentContext)data).getComponent() возвращает InterfaceAIFComponent, от которых я беру getChildren(). последний мне возвращает массив из AIFComponentContext:

1) TCComponentForm

2) TCComponentBOMView

3) TCComponentItemRevision - вот его как последний элемент массива я и беру, но обращаться к последнему элементу массива считаю не совсем корректно, есть ли способ напрямую получить ревизию из InterfaceAIFComponent?

а что трудного делать проверки в массиве выбранных объектов вида:

if(object instanceof TCComponentItemRevision)

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

А как имея только TCComponentItem найти его сборку, и вытащить ее состав виде TCComponentBOMLine

если я правильно поняла вопрос, то вот так наверное лучше бы:

TCComponent[] structureRev = null;

TCComponentItemRevision targetSbRev = null;

structureRev = targetSbRev.getRelatedComponents("structure_revisions");

.....

.....

среди всех разных типов составов находите нужный тип и как сказано было выше отправляете его в

TCComponentBOMLine bomTopLine = bw.setWindowTopLine( null, targetSbRev, null, bomViewRev );

......

ну и так далее

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • taarok
      Комрады, всех с майскими праздниками. Кто нибудь может поделиться постом для fanuc oi-mf Solidcam. Taarok.d@yandex.ru заранее благодарен, быстрых вам подач и хороших фрез))    
    • Tad
      Это предупреждение о необходимости очередного техобслуживания машины. После его выполнения надо проделать некоторые манипуляции, как описано в приложенном документе   2010 0i pc AL2004 .pdf
    • Fedor
      https://www.mathnet.ru/links/70adc00f76e7f355f5e14569f99dd8dc/tm1745.pdf#:~:text=Под полной обобщенной проблемой собственных,из собственных векторов относительно 5.   Хотите посложнее читайте классику по обобщенной проблеме ... :)
    • Jesse
      а что такое этот corioliss в Ansys? что делает эта опция?
    • Борман
      А ну вот как раз вспоминаю про гироскопический момент, как интеграл сил инерции, действующих на смещенное колесо. И вот тут как раз появляется зависимость от направления вращения. В одном случае этот момент будет выворачивать колесо наружу, а в другом пытаться вернуть колесо ближе к оси. Но это эффект следующего порядка, и prestress-модальник его не схватывает. А сиса как-то сама умеет это учитывать, отсюда будут и разные частоты. Много на эту тему почерпнул (для себя) из книги Жирицкого, на которую ссылался в теме по вашей ссылке. Эту тему я забросил в начале 2008 года и больше не касался ее.
    • rocket
      Добрый день, у нас 4 осевой станок Syntec 6MB с поворотной головой вокруг оси Y, покупали б/у и приехал еще с поворотной осью А подключенный но не видящий ось А. В итоге помогло поменять в параметрах в разделе/index 10 поменять на 2 и в index 24 где ось B поменять 4 на 0 а в index 25  поменять с 0 на 4 (чтобы он читал с 4 порта) если посмотреть как идет подключение, то от этого зависят цифры 
    • maxx2000
      Спасибо КЭП, но в ярлыке ничего прописывать не надо, достаточно создать новый ярлык. Вопрос был про вызов справки из приложения. Впрочем, перезагрузка ПК устранило это досадное недоразумение.
    • Maxmore
      Согласен полностью, через всё это пришлось пройти. От себя добавлю что у нас 400ый не PRO а обычный - его еще больше пришлось доводить до рабочего состояния, так как их производят разные заводы. с ITX508MY еще все более печально было - проблемы на пусконаладке, затем замена прокладок, затем пусконаладка уже с участием китайца...в общем да, помучаться пришлось. С большего оборудование рабочее, свои функции выполняет. Фануковские посты можно доработать до HNC без особых проблем.
    • Fedor
      Для любой размерности можно решать полином этой размерности. Такова сущность вопроса существования, а не конкретное явление вычисления. Дух, а не буква :)
    • anykeyto
      День добрый коллеги. Работает ли кто на этой стойке? Где берете информацию по программированию кроме мануала от Ками?  Интересует макропрограммирование, программирование цилиндрической интерполяции. Да и вообще, давайте делиться опытом. В свободном доступе практически нет никакой информации о работе станка и стойки этого чуда китайской инженерии.  Вопрос про G108, пользовался ли кто функцией CTOS/STOC?   
×
×
  • Создать...