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

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 пользователей

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




  • Сообщения

    • nicomed
      А в чем, простите, глубинный смыл сего деяния ? Кто мешает удерживая CTRL выделить нужные поверхности, и сразу задать требуемую зависимость ?
    • Ветерок
      "Правильно сделал". Вопрос прямой: сколько стоит обучение для частного лица? Если такое вообще практикуется.
    • MaximKl
      не самая оптимальная технология - концевыми фрезами.  Если просто резать, как отписано выше(из готового погонажа) - дисковая пила. Фрезеровать ребра - долго, в основном - из-за того, что звенят при обработке, больших режимов не дашь.
    • SAPRonOff
      вот так и рождаются слухи =) кадр из учебного класса, и похоже Решетнёв решил не создавать веток на этом форуме а-ля "Моё знакомство с T-Flex", а просто заказал обучающие курсы по CAD По крайне мере так пишут в статье:  
    • Valedol
      ПРивет Всем, подскажите, пожалуйста, макрос для создания в сборке сопряжения расстояния между плоскостями. К примеру, я выбрал проскости и нажал кнопку высопления макроса и выставилось расстояние между ними которое задано в макросе.
    • Kelny
      Так понял, что нельзя, но непонятно чем стандартная паленька не устраивает, если вы решили плотно использовать слои, то она всё равно должна быть всегда на виду.   С УДИВЛЕНИЕМ ОБНАРУЖИЛ, что написанное ниже не работает в последних версиях, а может и раньше не работало (откинули слои вместе с автокадом, хотя есть адепты, которые до сих пор используют слои в Solidworks) и этот фокус прокатывал только с толщиной линии. И ещё одна странность, слой можно выбрать только в избранных инструментах при их активации: линии, овалы, но при этом выбор ни на что не влияет и используются настройки выбранные в соответствующей панели, но настройка слоя появляется на остальных элементах после вставки элемента эскиза. Так же выбор толщины линии приводит к выходу из активного инструмента рисования эскизов. Что-то перемудрили разработчики.   !в последних версиях не работает! С другой стороны, если вам данная настройка нужна лишь для избранных элементов, то при добавлении этих элементов перед вставкой надо выбрать нужный слой в настройках инструмента, при таком изменнии последующие элементы будут строится в стандартном для вас слое (слой выбранный перед активацией инструментов рисования), а не в выбранном для элемента (выбирается после вызова инструмента рисования). То есть не придётся менять слои туда-сюда, а выбирать слой только для нужного элемента при работе непосредственно с интсрументом.    
    • Ветерок
      Бери выше - лунный модуль приземления :)
    • Onizuka
      Скорее всего нет поддержки C++17. Лучше, конечно, не менять настройки проекта. В самом toolkit есть функции для работы с файлами (разбор пути, список файлов из папки...)
    • Fedor
      https://www.mk.ru/incident/2024/04/22/rossiyan-ispugali-vsplyvayushhie-na-ozere-groby.html   
    • bri
      Добрый день. Хотел бы поднять тему резки радиаторов на фрезерном станке.  Ввиду того что фрезеруем мы их не один год, какие-то свои методы уже выработались. Но интересно послушать советы со стороны. Вводные: материал - алюминиевые сплавы. ширина паза 3-12 мм (чаще всего 4мм) глубина от 5 до 15 диаметров. Станки обычные чпу с bt40 sk40. Интересует любая информация: геометрия фрез, количество зубьев, глубина проходов, может какие-то методы в последовательности. Дисковые фрезы используем редко ввиду габаритов деталей.
×
×
  • Создать...