Jump to content

Передача переменной из подсистемы в подсистему


Recommended Posts

Mr_Gray

Как можно передать переменную, определенную в одной подсистеме, в другую, не объявляя ее глобальной? Возможно такое?

Суть задачи: в подпрограмме в подсистеме 1 определяется значение переменной, которое затем нужно выполнить в подсистеме 2.

Link to post
Share on other sites


UnPinned posts
Mr_Gray

Видимо, не совсем то. По умолчанию у нее значение 0, т.е. все переменные должны быть видимы во вложенных подпрограммах.

Ситуация несколько другая: есть цикл, в котором одним из параметров задается величина перемещения, цикл естественно вызывается в подсистеме 1. Внутри цикла необходимо активировать подсистему 2 и в ней выполнить это перемещение. Верикут говорит, что переменная не определена, т.к. она определена в подсистеме 1.

Link to post
Share on other sites
mr_Voden

@Mr_Gray Мне, вроде бы, удалось воспроизвести вашу проблему. Да, дело не в этом. Скорее всего без "глобализации" переменной не обойтись.

Возможно смогу какой-то костыль придумать, но надо конкретный проект смотреть.

Например, если переключение в другую подсистему идет по команде, то можно в тот же момент считывать значения переменных в заданном диапазоне имен и после переключения подсистемы объявлять их в новой.

Link to post
Share on other sites
Mr_Gray

Вот так выглядит цикл:

PROC BSEN_PARA(Real STRINGER_EDGE_DISTANCE, Real DRILL_APPROACH, Real EDGE_OFFSET)
    CGTECH_MACRO "SetSubsystemID" "Drill_Head"
    G0 Z=DRILL_APPROACH
    CGTECH_MACRO "RestoreSetSubsystemID"
    Y=IC(50*cos($AA_IW[3])) Z=IC(50*sin($AA_IW[3]))
M17

Link to post
Share on other sites
mr_Voden

@Mr_Gray Получилось два макроса)

 

Скрытый текст

PROC BSEN_PARA(Real STRINGER_EDGE_DISTANCE, Real DRILL_APPROACH, Real EDGE_OFFSET)

    ;в текущей подсистеме получаем имена переменных и их значения для переноса в другую подсистему. сделал только для переменных REAL, пока что.

    CGTECH_MACRO "mrVoden_TransLocalVarBetweenSubsystems_PRT1" "DRILL_APPROACH" 0
    CGTECH_MACRO "mrVoden_TransLocalVarBetweenSubsystems_PRT1" "EDGE_OFFSET" 0
    CGTECH_MACRO "mrVoden_TransLocalVarBetweenSubsystems_PRT1" "STRINGER_EDGE_DISTANCE" 0

    ;сменили подсистему

    CGTECH_MACRO "ChangeSubsystemID" "Drill_Head" 1

    ;создали локальные копии переменных в новой подсистеме. при значении 1 вектор с переменными сбрасывается.

    ;если переменная  в новой подсистеме уже существует, то ее значение будет обновлено.

    CGTECH_MACRO "mrVoden_TransLocalVarBetweenSubsystems_PRT2" "" 1

    G0 Z=DRILL_APPROACH

    ;сменили подсистему обратно

    CGTECH_MACRO "ChangeSubsystemID" "1" 1

M17

Для запуска может потребоваться vcredist последней версии

 

mrVoden_ext.dll

Link to post
Share on other sites
Mr_Gray

Спасибо, заработало! Так и делал, но почему-то с первого раза он отказался грузить ее. После перезагрузки все заработало.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.




  • Сообщения

    • Viktor2004
      Да, спасибо. Но ничего не поменялось. Параметры в соответствии с таблицей установились, но поведение движков не поменялось. Думаю привод неисправен
    • Cefius
      Вставил такой код после блока -Отключение сообщений и графики- :  FOREACH tp IN folder ('Toolpath') { ACTIVATE TOOLPATH $tp.Name EDIT TOOLPATH LEADS RAISEFORM EDIT TOOLPATH START TYPE POINT_SAFE EDIT TOOLPATH END TYPE POINT_SAFE PROCESS TPLEADS LEADS ACCEPT } но переходы от одного элемента массива к другому все равно ниже заготовки, это не помогло. И еще макрос у меня останавливается на первом же IF. думаю из за того что изначально папок с именем "1" в проекте нет. Пустые NC файлы создаются чтобы вставить в них траектории массива (это первый пункт желаемых улучшений). Сейчас после завершения макроса это делает инженер вручную, перетаскиванием. Как это автоматизировать не знаю.
    • Maik812
      В самой детали так и прописываешь в полях Раздел- покупные изделия.. Какой САПР? Сами детали в каком? там и прописываешь. Рабоатет в Компасе и в Солиде Ну чтоб выбрать и массово заполнить не проблема у меня :) Прописываешь прям раздел ="Покупные" в Компас в один один тоже самое но плагин Komas3d.wdx
    • Maik812
      Работает вроде с 2017, там суть данные по детали в деталь записываются , вот их и выводи. а ВСЕ ЧТО ПО СВЯЗКИ ТС ЭТО УЖЕ ПО РАБОТЕ С САМИМИ ФАЙЛАМИ И ТД.
    • Александр1979
      Нужно устанавливать тип двигателя 501
    • Мария1111
      Спасибо, разобралась) 
    • Viktor2004
      да. Купили два двигателя. Один греется сильнее, второй слабее. На одном энкодер не работает, оба после перемещения градусов на 20 начинают сходить с ума и дергаться в разные стороны. Вот я не понимаю, то ли привод неисправен, то ли движки, то ли я с параметрами что-то напутал Все это покупалось черт знает где, б/у-шное Для проверки переставляю исправный энкодер на оба движка
    • Ветерок
      Если вы задали всё в одном месте, то оно и будет в одном месте. Наверное, так: В Уравнениях создаете глобальную переменную. Присваиваете ей нужное значение (длина или площадь, или габарит). Для каждой величины своя переменная. Потом создаете новое Свойство и для него указываете из списка нужную переменную. Для каждой переменой своё Свойство. После этого в столбце таблицы можно выбрать нужное Свойство.
    • AlexKaz
      На 3 лярда баксов можно на Луне поселение основать, а тут софт написать не могут...
    • Александр1979
      Посмотрите в руководстве B-65412EN-02 https://www.scribd.com/document/343182233/B-65412EN-02   Загрузить руководство можно через сайт https://scribd.vpdfs.com/ Это происходит даже если двигатель без нагрузки работает?
×
×
  • Create New...