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

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

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




  • Сообщения

    • anykeyto
      День добрый коллеги. Работает ли кто на этой стойке? Где берете информацию по программированию кроме мануала от Ками?  Интересует макропрограммирование, программирование цилиндрической интерполяции. Да и вообще, давайте делиться опытом. В свободном доступе практически нет никакой информации о работе станка и стойки этого чуда китайской инженерии. 
    • __Andrey__
      Доброго всем времени суток. Начал сборку станка для симуляции. Загрузил модель станка DMU50 в папку. В генераторе станков сделал настройки осей. Постпроцессор на sinumerik создал из шаблона. Скопировал папку cse_driver со станка с похожей кинематикой (sim06_mill_5ax). В файлы .dat внесены данные. При запуске симуляции по машинному коду ругается, что не найден файл PMAC. После закрытия окна с ошибкой продолжает работу и доходит до смены инструмента и там выскакивает ошибка. . Прошу помощи с этой проблемой. Файл to_ini генерируется в папку cse_driver.
    • anykeyto
      Устроился в начале года в контору где стоит IronMAC IMU-5X 400 Pro. Стойка HNC8-848di. Контора отправила на обучение, на курс 5-осной обработки на этой стойке, в цто Ками в Москве. В целом все доступно и понятно. Это когда было само обучение. Но в работе самой стойки есть куча вопросов. По факту на стойка не настроена. Не знаю, может наладчик который запускал станок попался ленивый, может в другом была причина. Но первый месяц-полтора занимался только настройкой системы (что знал, что пришло в процессе изучения параметров, ладдера, и прочее).   Сам станок интересный и понятный. Но русская локализация хромая, как и мануал от ками. Там голимый перевод то ли с английского, толи с китайского.... но вместо фрезы "нож" и так далее.  Основа тут G код, в целом почти фанук, но есть отличия. Есть группа циклов для фрезеровки сверления, резьбы и расточки, под них есть прям шаблон, в котором только переменные задаешь, но криво реализован синтаксис, который поправить можно уже непосредственно в коде.
    • Ветерок
      В ярлыке прописать путь к русскому файлу: "C:\PTC\Creo 8.0.4.0\creo_help_pma\russian\index.html"
    • Guhl
      Номера 2000 и выше - это вроде как не ошибка а сообщение оператору Открывайте инструкцию на станок с описанием сообщений или смотрите в ладдере в чпу или скачайте ладдер и смотрите в Fladder3
    • ДОБРЯК
      В МКЭ это классический modal-prestress анализ. Из МКЭ вы получаете только матрицу масс и матрицу жесткости. На этом МКЭ заканчивается. Дальше решайте как хотите. Вот Федор решает квадратное уравнение и получает первые собственные частоты.:=) Вопрос только в том какие силы нужно задать, чтобы получить начальные напряжения и как эти силы зависят от частоты вращения. Дальше матрица начальных напряжений суммируется с матрицей жесткости. Естественно данное суммирование меняет жесткость конструкции. Поэтому и говорят про преднапряженный модальный анализ. Основной вопрос какие силы нужно приложить в зависимости от частоты вращения, прежде чем делать статический анализ.  Но вы этот вопрос не освещает. Это ваше право не подумайте, что у меня есть какие то претензии.
    • Fedorly
      Вашему вниманию предоставляется программа, которая позволяет пакетно обработать DXF файлы разверток и получать Длину реза, Количество врезок, габариты развертки, миниатюру.  Полученные данный  легко сохраняются в PDF, Excel, txt и другие форматы. Дальше, полученные данные, могут быть применены в расчете себестоимости детали Скачать  
    • maxx2000
      такой дурной вопрос. Как сделать чтобы офлайн справка вызывалась на русском? перезаписать файлы английской справки русской или можно где-то, что-то подправить?
    • ДОБРЯК
      @Jesse может быть эта тема вам поможет понять почему частоты не меняются... https://cccp3d.ru/topic/83522-%D0%B4%D0%B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0-%D0%BA%D1%8D%D0%BC%D0%B1%D0%B5%D0%BB%D0%BB%D0%B0-%D0%B4%D0%BB%D1%8F-%D0%B2%D0%B0%D0%BB%D0%B0-%D1%81-%D0%BA%D0%BE%D0%BB%D0%B5%D1%81%D0%BE%D0%BC/?ysclid=lvrjkzdpez476841118
    • Артур8991
×
×
  • Создать...