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

обход дерева на 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 пользователей

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




  • Сообщения

    • gudstartup
      приемлимо. температуру мотора посмотрите. если вентилятор нормально вращается и его скорость соответствует оригинальному а также контакт в разъеме нормальный а F все равно появляется то даже не знаю что у вас может быть так как привод у вас новый
    • Koels
      Хмм, я думал раз она вылазит даже в простое, то Z координата висит на тормозе и дело не в этом. Спасибо за мысль, щас узнаю. Вообще у нас рядом стоит точно такая же макина, точь в точь и там таким проблем нет. Много заказов и отсутствие специалистов сделало свое дело. :) @gudstartup, 58% нагрузка на координату
    • mrVladimir
      Что-то я немного засомневался. Если решим брать новое ЧПУ, то искать точно такое же необходимо по номеру сзади корпуса (пластикового пластмассового) - так? А если брать только плату (материнскую или как ее лучше назвать...), на которой установлена (запаена) микросхема 1 на моих фото выше, то искать плату необходимо по номеру, который указан на самой плате - так? В моем случае : ЧПУ : A02B-0321-B520. Код на плате : A20B-8201-0081/01A. Если, допустим, мы покупаем ЧПУ A02B-0321-B520 - будет ли это гарантией того, что в нем установлена плата A20B-8201-0081/01A. И можно ли будет его считать таким же. И с отдельно приобретаемой платой тоже самое - если номер на ней полностью совпадает с нашим, значит ли это, что она полностью идентична. P.S. : извиняюсь за , возможно, навязчивые вопросы. Просто не хотелось бы попасть впросак из-за своей некомпетентности. такой файл есть, но мне говорили, что после снятия архивов, его лучше вообще никогда нигде ни использовать. А на каком этапе он нам может понадобиться?. Если, как говорил Виктор, мы зальем архив SRAM на старый модуль (ROM-SRAM), установленный в новое ЧПУ, то и файл OPRMINF не нужен. Правильно же?
    • Slavdos
      Доброе. делюсь 1 внедренным китайцем. купили у ЛЛС MARVEL PRO 6000-3015.HGT , 2 шт , с автоматизацией. станки неплохие, интерфейс русские, достаточно дружелюбен. за автоматизацию зря переплатили, китай похоже в этом сильно уступает европе. из неожиданностей- резка воздухом дает неудаляемый грат, по сути необходимы зачистные станки.
    • Killerchik
      Я 4 комфорки на скоростной шпиндель поставил, в этом же качестве)))))
    • gudstartup
      я предлагал операторам чай кипятить чем больше и интенсивнее работают тем чаще чайку попить можно нельзя же чтобы тормозной кипятильник перегрелся
    • Viktor2004
      и этот человек смеялся когда я использовал кипятильник вместо тормозного резистора
    • gudstartup
      @mrVladimir если у вас нет копии oprminf обязательно сделайте
    • mrVladimir
      Ну во видите. Вы все в курсе. Спасибо всем за советы.
    • SAPRonOff
×
×
  • Создать...