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

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


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

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

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

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


UnPinned posts

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

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

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

@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

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

@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

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

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

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

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

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

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

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

  Разрешено не более 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 писать, тоже не смог реализовать перехват нажатия кнопок во время загрузки ЧПУ. Там тоже фиксируется момент нажатия, а если она уже нажата во время загрузки, инструментами СИ это перехватить не получится
×
×
  • Создать...