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

Помогите разобраться в скрипте =)


FCLM

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

Люди добрые, помогите разобраться в скрипте, буду благодарен любому комменту, совершенно не с кем поговорить на эту тему =(((

   global mom_cycle_spindle_axis mom_sys_work_plane_change
   global traverse_axis1 traverse_axis2 mom_motion_event mom_machine_mode
   global mom_pos mom_prev_pos mom_from_pos mom_last_pos mom_sys_home_pos
   global mom_sys_tool_change_pos
   global spindle_first rapid_spindle_inhibit rapid_traverse_inhibit

   if { ![info exists mom_from_pos($mom_cycle_spindle_axis)] &&\
         [info exists mom_sys_home_pos($mom_cycle_spindle_axis)] } {

      set mom_from_pos(0) $mom_sys_home_pos(0)
      set mom_from_pos(1) $mom_sys_home_pos(1)
      set mom_from_pos(2) $mom_sys_home_pos(2)

   } elseif { ![info exists mom_sys_home_pos($mom_cycle_spindle_axis)] &&\
               [info exists mom_from_pos($mom_cycle_spindle_axis)] } {

      set mom_sys_home_pos(0) $mom_from_pos(0)
      set mom_sys_home_pos(1) $mom_from_pos(1)
      set mom_sys_home_pos(2) $mom_from_pos(2)

   } elseif { ![info exists mom_sys_home_pos($mom_cycle_spindle_axis)] &&\
              ![info exists mom_from_pos($mom_cycle_spindle_axis)] } {

      set mom_from_pos(0) 0.0 ; set mom_sys_home_pos(0) 0.0
      set mom_from_pos(1) 0.0 ; set mom_sys_home_pos(1) 0.0
      set mom_from_pos(2) 0.0 ; set mom_sys_home_pos(2) 0.0
   }

Что имменно непонятно:
1. вот этот фрагмент:
 { ![info exists mom_from_pos($mom_cycle_spindle_axis)] &&\  [info exists mom_sys_home_pos($mom_cycle_spindle_axis)] } 
 На сколько я понял порядок чтения примерно следующий: если условие [info exists mom_from_pos($mom_cycle_spindle_axis)] не выполняется а условие [info exists mom_sys_home_pos($mom_cycle_spindle_axis)] } выполняется то тогда мы присваиваем значения переменным. А если первое условие выполняется вместе со вторым то тогда мы пропускаем присвоение переменных. Или другими словами 
если оба условия после обработки первого оператором ! (лог отрицание) равны нулю или единице то тогда мы выполняем присвоение значений переменным а если они не равны между собой то мы идём к elseif.  

 

2. Не понятен формат записи [info exists mom_from_pos($mom_cycle_spindle_axis)], вроде бы как после оператора info exists должен следовать аргумент в данном случае mom_from_pos а тут дополнительно ещё один аргумент запилили причём без пробела и в 
скобках в итоге мы имеем [info exists mom_sys_home_pos($mom_cycle_spindle_axis)].

 

3. При присваивании значений переменным также странный формат записи например выше объявляется переменная mom_from_pos, при присваивании ей значения она уже превращается в mom_from_pos(0), а значение ей присваивается из переменной mom_sys_home_pos(0) 
которая выше объявлялась как mom_sys_home_pos.

 

4. Знак \ после оператора && означает простой перенос строки после объявления оператора?

 

5. В описании указано: info exists varName Возвращает 1, если переменная varName существует в текущем контексте как локальная или как глобальная переменная. В противном случае возвращает 0. Что понимается под понятием текущий контекст? Не он ли указан в скобках и тогда строка [info exists mom_from_pos($mom_cycle_spindle_axis)] расшифровывается как если значение переменной mom_from_pos равняется значению переменной mom_cycle_spindle_axis то тогда в квадратных скобках мы имеем "1" в противном случае "0"? Но в описании переменных они как то с друг дружкой не очень вяжутся mom_cycle_spindle_axis - это вроде как рабочая плоскость, а mom_from_pos это координаты исходной точки?

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


Всё встаёт на свои места, если понять, что mom_from_pos - массив, а mom_from_pos(0) значение по X

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

Скачай komodo и протестируй, это будет лучше всего. 

{ ![info exists mom_from_pos($mom_cycle_spindle_axis)] &&\  [info exists mom_sys_home_pos($mom_cycle_spindle_axis)] }

![info exists mom_from_pos($mom_cycle_spindle_axis)]

info exists mom_from_pos($mom_cycle_spindle_axis) - функция возвращает true если элемент массива mom_from_pos($mom_cycle_spindle_axis) - существует 

 [info exists mom_sys_home_pos($mom_cycle_spindle_axis)] - аналогично 

Ссылка на сообщение
Поделиться на других сайтах
  • 2 месяца спустя...
В 12.11.2019 в 22:39, denis3122 сказал:

Скачай komodo и протестируй, это будет лучше всего. 

{ ![info exists mom_from_pos($mom_cycle_spindle_axis)] &&\  [info exists mom_sys_home_pos($mom_cycle_spindle_axis)] }

![info exists mom_from_pos($mom_cycle_spindle_axis)]

info exists mom_from_pos($mom_cycle_spindle_axis) - функция возвращает true если элемент массива mom_from_pos($mom_cycle_spindle_axis) - существует 

 [info exists mom_sys_home_pos($mom_cycle_spindle_axis)] - аналогично 

Спасибо за разъяснения! 

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

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

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

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

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

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

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

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

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

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

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




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