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

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

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




  • Сообщения

    • egor-40
      Попробуй включить G98(минутная подача). подача будет G01 F100. или F300. 
    • Maik812
      с какой версии сам модуль.
    • Павлуха
      Отстали от жизни? В солиде уже давно кам-модуль вшит.
    • Ветерок
      В Солиде не получится. Солид - это КАД - в нем строится геометрия. И только. Потому в каком-нибудь КАМ строятся траектории, задаются скорости, направления и прочее. И только потом всё это преобразуется в Ж-коды при помощи постпроцессора именно под конкретную стойку. Нужны все три составляющие - КАД-КАМ-постпроцессор.
    • bubl leg
      Всем доброго, друзья!   Вопрос такой: по причине того, что собираю свой ЧПУ станочек настольный с довольно простыми для ЧПУ задачами (супержесткой рамы и прочего - не сильно обязательно) - рисование маркером печатных плат и сверловка их же - требуется какой то более менее подробный гайд на русском языке, по подготовке G-CODE в Solidworks. На youtube я нашел кучу конечно...Смотрю...Но, хоть и понимаю англицкий неплохо, всё равно не так "на лету", как хотелось бы.   Из этого вопрос: может ли кто то порекомендовать имеющийся тут, на форуме или ещё где то - русскоязычный более менее подробный гайд или видео - по моей задаче? Именно в Solidworks (не во FreeCAD и прочем).   Заранее спасибо!   P.S. Как собрать электронику для станка, как прошить - это всё не важно, это всё знаю. Интересует именно подготовка G-CODE в среде Solidworks,с примерами и (желательно) последующей отправкой на ЧПУ.
    • grayve
      Нет этого пункта в меню((( Вопрос решен. Нужно нажать кнопку Применить представление структуры изделия...
    • BSV1
      С наступающим!  
    • grayve
      Народ, Добрый вечер! Подскажите, у меня в сборке несколько сотен кирпичей. Печь собираю. Многие из них стандартные изделия, но поскольку в библиотеке таких кирпичей нет мне пришлось их делать в виде деталей. Соответственно сейчас в спецификации они попали в сборочные единицы. Знаю, что можно по одной детали через окно структуры поменять Раздел... Но несколько сотен раз очень не хочется. Помогите решить проблему? T-Flex 17
    • grayve
      Нужно разорвать проекционную связь с проекцией и переходить на другую страницу.
    • Viktor2004
      наверное для этого и сделали переменную #8501 но она только для MDI клавиш. Цифр и букв там нет. Я когда пробовал на C-Executor писать, тоже не смог реализовать перехват нажатия кнопок во время загрузки ЧПУ. Там тоже фиксируется момент нажатия, а если она уже нажата во время загрузки, инструментами СИ это перехватить не получится
×
×
  • Создать...