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

lookup_inst, interchange и pro/program


UrijJusa4ev

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

Добрый вечер.

Никак не могу разобраться самостоятельно. Может кто подскажет...

Есть параметрическая сборка. Ввожу параметры, по этим параметрам lookup_inst ищет подходящее исполнение в детали А. Если не находит, тогда ищет подходящее исполнение в детали Б. Если не находит, тогда в деталь Б экзэкьютит нужные параметры и получает нужную сгенерированную деталь, которую и вставляет.

Выглядит в уравнениях так

SOME_PART = lookup_inst("part_a.prt", 0, "PARAM1", PARAM1, …)

IF SOME_PART == "PART_A"

  SOME_PART = lookup_inst("part_b.prt", 0, "PARAM1", PARAM1, …)

ENDIF

 

В Pro/program выглядит примерно так:

 

INPUT

 PARAM1 NUMBER

...

END INPUT

 

IF SOME_PART == "PART_B"

  EXECUTE PART PART_B

    PARAM1 = PARAM1

    …

  END EXECUTE

ENDIF

 

...

 

ADD PART (SOME_PART)

 

Деталь А и деталь Б заменяется с помощью сборки interchange.

 

Всё работает хорошо, пока все детали в сессии. Но если почистить сессию, открыть сборку и ввести параметры, при которых переходит с детали А на деталь Б (или наоборот), тогда начинаются косяки. Видимо lookup_inst видит только то, что в сессии, но не видит всего того, что в рабочей папке.

Может можно как-то настроить, мол когда открываешь сборку, закидывай в сессию и деталь А и деталь Б??

 

Creo 3.0

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


В 02.03.2019 в 20:04, UrijJusa4ev сказал:

Может можно как-то настроить, мол когда открываешь сборку, закидывай в сессию и деталь А и деталь Б??

Вы не правильно пользуетесь.

Вы должны добавить в сборку обе детали, а погашать автоматичеки операторами If и endif.

Я бы наверно сделал так: 

SOME_PART1 = lookup_inst("part_a.prt", 0, "PARAM1", PARAM1, …)

IF SOME_PART1 == "PART_A"

  SOME_PART2 = lookup_inst("part_b.prt", 0, "PARAM1", PARAM1, …)

ENDIF

.....

IF SOME_PART1 неравно "PART_A"

ADD PART (SOME_PART1)

ENDIF

IF SOME_PART1 == "PART_A"

ADD PART (SOME_PART2)

ENDIF

 

Ну или типа того. 

Т.е. детали должны подгружаться.

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

Спасибо за ответ. 

По идее, подберет исполнение детали B только после второй регенерации.

 

 

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

В добавке исполнения тоже надо добавить:

IF SOME_PART2 == "PART_B" | SOME_PART1 == "PART_A" 

  EXECUTE PART PART_B

    PARAM1 = PARAM1

    …

  END EXECUTE

ENDIF

 

А то может подобрать первую деталь а вторая так и остаться PART_B (допустим до этого была), и будет клепать ненужные исполнения.

18 часов назад, UrijJusa4ev сказал:

По идее, подберет исполнение детали B только после второй регенерации.

Получилось хоть?

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

IF SOME_PART2 == "PART_B" & SOME_PART1 == "PART_A" 

  EXECUTE PART PART_B

    PARAM1 = PARAM1

    …

  END EXECUTE

ENDIF

 

Но наверное И, а не ИЛИ. Экзэкьютить нужно, если И первое И второе не нашел. В случае с или будет перестраивать генерик детали Б, даже если подобрал нужное исполнение Б

 

Работает не так, как хотелось бы 

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

 

А вот если сохранили с подавленной деталью А , то в чистой сессии на нее невозможно переключить, пока не подгрузишь деталь в сессию ручками. 

 

И Ваш и мой варианты работают хорошо, только если обе детали подгрузились в сессию.

 

В любом случае спасибо

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

Но наверное И, а не ИЛИ.

есссно.

 

3 часа назад, UrijJusa4ev сказал:

А вот если сохранили с подавленной деталью А , то в чистой сессии на нее невозможно переключить, пока не подгрузишь деталь в сессию ручками. 

Но почему, если она уже добавлена в дерево? 

А как это отображается, ошибка вылезает или что еще? Просто крео не может написать про "не найдена деталь", когда она в рабочей папке.

3 часа назад, UrijJusa4ev сказал:

Работает не так, как хотелось бы 

Надо наверно "обнулять" ...

Может так:

   ВАРИАНТ=1       -как-бы обнуляем условия

SOME_PART1 = lookup_inst("part_a.prt", 0, "PARAM1", PARAM1, …)

IF SOME_PART1 == "PART_A"

  ВАРИАНТ=2

  SOME_PART2 = lookup_inst("part_b.prt", 0, "PARAM1", PARAM1, …)

ENDIF

.....

IF ВАРИАНТ==1

ADD PART (SOME_PART1)

ENDIF

IF ВАРИАНТ==2

ADD PART (SOME_PART2)

ENDIF

 

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

Одна деталь всегда погашена, хоть и в дереве. В сессию не попадает при загрузке сборки.

1.JPG.07cc0d0d3fce150423379e1734818182.JPG

В случае если пытаемся переключится с Б на А и А не в сессии, пишет предупреждение внизу Invalid data type combination at right side of expression

SOME_PART1 = lookup_inst("part_a.prt", 0, "PARAM1", PARAM1, …) /*(не сработает, т.к. part_a.prt не найдет, SOME_PART1 останется с прежним значением, то есть SOME_PART1 = "PART_A")

IF SOME_PART1 == "PART_A"

  SOME_PART2 = lookup_inst("part_b.prt", 0, "PARAM1", PARAM1, …) /*(не найдет исполнения, в итоге SOME_PART2 = "PART_B")

ENDIF

А дальше будет экзэкьютить в деталь Б и строить по параметрам

 

Кстати, если зайти в relations, то на ОК уже нажать не получится)

2.thumb.JPG.86657e1d5531902ea67f27ea12797c4e.JPG

 

 

 

 

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

×
×
  • Создать...