1 004 сообщения в этой теме

@artem-nafanya

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

Поделиться сообщением


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


5 часов назад, lexincton сказал:

@artem-nafanya

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

Я понял. Книгу эту давно читаю. Если бы понимал что там написано про массивы, то нужен ли бы тут вас спрашивал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, artem-nafanya сказал:

Я понял. Книгу эту давно читаю. Если бы понимал что там написано про массивы, то нужен ли бы тут вас спрашивал.

А что конкретно не понятно?

 

Приведу примерный алгоритм для вас:

в первый список записываете значение не строковое, а численное = №инстр*100 + D

 

при чтении сортируем список вручную методом "пузырьков" или проще с помощью lsort (идем в книгу)

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

строку из 2-х найденных переменных думаю уж составите

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
48 минут назад, lexincton сказал:

А что конкретно не понятно?

Спасибо.

Просто за этими словами об алгоритме не возникает образ кода. Видать надо читать дальше. 

 

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

Поделиться сообщением


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

@artem-nafanya

запись
global list_tool

set row_tool [expr $mom_tool_number*100+$mom_tool_adjust_register]
if { [Isearch -inline -all $list_tool $row_tool ] < 0 } {
  lappend list_tool $row_tool
}


чтение
lsort -integer $list_tool
foreach number $list_tool {
    set t_num [expr int($number/100)]
    set d_num [expr $number-$t_num]

    set row_output [string format "bla bla %s - %s   " $t_num $d_num]
}
 

Работу не проверял, но примерно так должно выглядеть

Изменено пользователем lexincton
1 пользователю понравилось это

Поделиться сообщением


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

@lexincton

9 часов назад, lexincton сказал:
Показать содержимое  

@artem-nafanya

запись
global list_tool

set row_tool [expr $mom_tool_number*100+$mom_tool_adjust_register]
if { [Isearch -inline -all $list_tool $row_tool ] < 0 } {
  lappend list_tool $row_tool
}


чтение
lsort -integer $list_tool
foreach number $list_tool {
    set t_num [expr int($number/100)]
    set d_num [expr $number-$t_num]

    set row_output [string format "bla bla %s - %s   " $t_num $d_num]
}
 

Работу не проверял, но примерно так должно выглядеть

Hide  

Вероятно не нравится ему команда string в последней строчке.

Этот код в чтении работает без puts $ofile ?

RO2gUFbmwyg.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, artem-nafanya сказал:

@lexincton

Вероятно не нравится ему команда string в последней строчке.

Этот код в чтении работает без puts $ofile ?

RO2gUFbmwyg.jpg

опечатка есть, format без string надо писать, вместо set row_output поставить puts $ofile

1 пользователю понравилось это

Поделиться сообщением


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

@lexincton

24 минуты назад, lexincton сказал:

опечатка есть, format без string надо писать, вместо set row_output поставить puts $ofile

Теперь ошибка во время постпроцессирования.

Поделиться сообщением


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

@artem-nafanya

запись

global list_tool
if { ![info exists list_tool] } { set list_tool {} }
set row_tool [expr $mom_tool_number*100+$mom_tool_adjust_register]
set bsearch 0
foreach tool $list_tool {
    if { $tool == $row_tool } {
        set bsearch 1
        break
    }
}
if { !$bsearch } { lappend list_tool $row_tool }

 

чтение

global list_tool
foreach number [lsort -ascii $list_tool] {
    set t_num [expr int($number/100)]
    set d_num [expr $number-$t_num*100]
    puts $ofile [format "bla bla %s - %s   " $t_num $d_num]
}

1 пользователю понравилось это

Поделиться сообщением


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

Уважаемые гуру, подскажите направление, где "копать". Вопрос по трансформациям координат. Взависимости от кинематики станка, если к примеру взять 4 осевые станки, вывод координат отличается. Где собственно происходит весь этот расчет? Вопрос, понятно, очень обширен, что там масса процедур, но хотелось бы понять алгоритм. Можно ли в одном посте две кинематики реализовать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, Jobman21 сказал:

Уважаемые гуру, подскажите направление, где "копать". Вопрос по трансформациям координат. Взависимости от кинематики станка, если к примеру взять 4 осевые станки, вывод координат отличается. Где собственно происходит весь этот расчет?

Боюсь, здесь никто вас не будет посвящать в это)

 

6 часов назад, Jobman21 сказал:

Можно ли в одном посте две кинематики реализовать?

Хоть 10

Поделиться сообщением


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

Я же не прошу процедуры выложить, все на блюдечке приподнести. Просто разъяснить. Мда, неужто все это под грифом сектретно? 

Поделиться сообщением


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

Этот сайт мне знаком. Но если не здесь, где черпать эти секреты, может кто-нибудь посоветует. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
32 минуты назад, Jobman21 сказал:

Но если не здесь, где черпать эти секреты, может кто-нибудь посоветует. 

Секреты распределены ровным слоем по интернету. Для начала можете изучить в файле *.tcl постпроцессора все PB_CMD, где встречаются mom_angle, mom_out_angle и т.п.

Поделиться сообщением


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

@lexincton

22 часа назад, lexincton сказал:
Показать содержимое  

@artem-nafanya

запись

global list_tool
if { ![info exists list_tool] } { set list_tool {} }
set row_tool [expr $mom_tool_number*100+$mom_tool_adjust_register]
set bsearch 0
foreach tool $list_tool {
    if { $tool == $row_tool } {
        set bsearch 1
        break
    }
}
if { !$bsearch } { lappend list_tool $row_tool }

 

чтение

global list_tool
foreach number [lsort -ascii $list_tool] {
    set t_num [expr int($number/100)]
    set d_num [expr $number-$t_num*100]
    puts $ofile [format "bla bla %s - %s   " $t_num $d_num]
}

Hide  

Заработало.

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

В коде есть какой-то ключ, меняя который можно менять условие сортировки или для этого код переписывать надо?

Снимок.JPG

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
14 минуты назад, artem-nafanya сказал:

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

Можно создать сколько угодно массивов с одиннаковыми индексами и записывать в них что угодно

 

16 минут назад, artem-nafanya сказал:

В коде есть какой-то ключ, меняя который можно менять условие сортировки или для этого код переписывать надо?

lsort

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 11.01.2018 в 00:33, vicebear сказал:

Количество чистовых проходов: $mom_finish_passes.

Количество черновых проходов: $mom_rough_passes.

555.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
13 минуты назад, sapr71 сказал:

555.jpg

стр. 167

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
29 минут назад, lexincton сказал:

стр. 167

Не разбираюсь в tcl. Не нужно из меня делать специалиста. Просто скажи как получить значения этих переменных. Больше ничего не нужно. Пробовал их global объявить, не помогло. И еще вопрос, где взять все переменные, которые выдает nx с описанием?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, sapr71 сказал:

Пробовал их global объявить, не помогло.

Может их и не существует

5 минут назад, sapr71 сказал:

И еще вопрос, где взять все переменные, которые выдает nx с описанием?

Screenshot_5.png.2d8b8010fdb3b3afeecfbfe825ec5bc7.png

Но там не все

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 часов назад, sapr71 сказал:

Больше ничего не нужно. Пробовал их global объявить, не помогло.

Непонятно почему у вас ошибка возникает. У меня эти переменные читаются из любого места.

N0010 G40 G90 G71
N0020 ############## begin FINISH PASSES = 4 ###############
N0030 ############## begin ROUGH PASSES = 2 ###############
N0040 (*****   begin of operate  *****)
N0050 ############## oper FINISH PASSES = 4 ###############
N0060 ############## oper ROUGH PASSES = 2 ###############
N0070 M80
N0080 M82
N0090 M84
N0100 M90
N0110 M20
N0120 G01 X-2.895 Y10.6 U-1.051 V0.0 F0.0
N0130 (*****   prohod   begin *****)
N0140 ############## prohod FINISH PASSES = 4 ###############
N0150 ############## prohod ROUGH PASSES = 2 ###############
N0160 G41 X-1.395
N0170 X.105

Поделиться сообщением


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

@lexincton

Показать содержимое  

запись

 

global list_tool

set row_tool "; T$mom_tool_number\

D$mom_tool_adjust_register"

set bsearch 0
set last_index 0
for {set i 1} {$i<=99} {incr i} {
    
    if { [info exists list_tool($i)]  } { 

          if {  $list_tool($i) == $row_tool } {

              set bsearch 1
              break;    

         }
    }  else  {
        set last_index $i
    }
}

if { !$bsearch } { set list_tool($last_index) $row_tool

 

чтение 

 

for {set i 1} {$i<=99} {incr i} {    
    if { [info exists list_tool($i)]  } { 

      puts $ofile $tool_list($i)

     } else { break }
}

Hide  
Подскажите, каким образом в этот код можно вставить Mom_output_literal, чтобы только строка с  одной переменной, например, D$mom_tool_adjust_register, выводилась с номером кадра УП?
Изменено пользователем artem-nafanya

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
33 минуты назад, artem-nafanya сказал:

@lexincton

Подскажите, каким образом в этот код можно вставить Mom_output_literal, чтобы только строка с  одной переменной, например, D$mom_tool_adjust_register, выводилась с номером кадра УП?

MOM_output_literal "[format "D%s" $mom_tool_adjust_register] или в лоб MOM_output_literal "D$mom_tool_adjust_register"

Поделиться сообщением


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

@lexincton

1 час назад, lexincton сказал:

MOM_output_literal "[format "D%s" $mom_tool_adjust_register] или в лоб MOM_output_literal "D$mom_tool_adjust_register"

В лоб не выйдет, а если так: 

set row_tool  [MOM_output_literal "D$mom_tool_adjust_register"]

set bsearch 0
set last_index 0
 

то в УП выводит какой-то набор цифр:

Показать содержимое  

2216
2028
1845
1671
1500
1331
1152
794
460
268
82

Hide  

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, artem-nafanya сказал:

@lexincton

В лоб не выйдет, а если так: 

set row_tool  [MOM_output_literal "D$mom_tool_adjust_register"]

Это что? Что вообще хотите получить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, lexincton сказал:

Это что? Что вообще хотите получить?

N10 T1

D1

N20 T2

D1

...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, artem-nafanya сказал:

N10 T1

D1

N20 T2

D1

...

 

Возьмите последний вариант, в нем чтение поменяйте на

global list_tool

foreach number [lsort -ascii $list_tool] {
    set t_num [expr int($number/100)]
    set d_num [expr $number-$t_num*100]

    MOM_set_seq_on

    MOM_output_literal "T$t_num"

    MOM_set_seq_off

    MOM_output_literal "D$d_num"
}

Изменено пользователем lexincton
1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 часов назад, vicebear сказал:

Непонятно почему у вас ошибка возникает. У меня эти переменные читаются из любого места.


N0010 G40 G90 G71
N0020 ############## begin FINISH PASSES = 4 ###############
N0030 ############## begin ROUGH PASSES = 2 ###############
N0040 (*****   begin of operate  *****)
N0050 ############## oper FINISH PASSES = 4 ###############
N0060 ############## oper ROUGH PASSES = 2 ###############
N0070 M80
N0080 M82
N0090 M84
N0100 M90
N0110 M20
N0120 G01 X-2.895 Y10.6 U-1.051 V0.0 F0.0
N0130 (*****   prohod   begin *****)
N0140 ############## prohod FINISH PASSES = 4 ###############
N0150 ############## prohod ROUGH PASSES = 2 ###############
N0160 G41 X-1.395
N0170 X.105

 

 

 

Вот так прописываю в начале прохода.

 

 

222.jpg

 

после того как пытаюсь постпроцессировать выдает вот такую ошибку

 

 

111.jpg

 

 

Может где то еще что то нужно объявлять?

 

 

 

Как можно посмотреть какие вообще данные выдает nx в постпроцессор, допустим имена всех переменных и из значения.

Изменено пользователем sapr71
дополнил

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, vicebear сказал:

Непонятно почему у вас ошибка возникает. У меня эти переменные читаются из любого места.


N0010 G40 G90 G71
N0020 ############## begin FINISH PASSES = 4 ###############
N0030 ############## begin ROUGH PASSES = 2 ###############
N0040 (*****   begin of operate  *****)
N0050 ############## oper FINISH PASSES = 4 ###############
N0060 ############## oper ROUGH PASSES = 2 ###############
N0070 M80
N0080 M82
N0090 M84
N0100 M90
N0110 M20
N0120 G01 X-2.895 Y10.6 U-1.051 V0.0 F0.0
N0130 (*****   prohod   begin *****)
N0140 ############## prohod FINISH PASSES = 4 ###############
N0150 ############## prohod ROUGH PASSES = 2 ###############
N0160 G41 X-1.395
N0170 X.105

 

Разобрался, спасибо. Я не правильно объявлял переменную.

Поделиться сообщением


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

@lexincton

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
52 минуты назад, artem-nafanya сказал:

@lexincton

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

Если проверять в списке, что через lsearch, но у меня в предыдущем варианте не хотел искать, разбираться тоже не стал и написал через перебор списка циклом

Поделиться сообщением


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

Здравствуйте товарищи программисты. Возник вопрос как постпроцессору на токарный станок задать вывод точки безопасного подхода и отхода инструмента если используется один и тот же инструмент на всех операциях??? если я хочу поставить между 26 и 27 номером кадра. И можно ли сделать так, чтоб номера инструментов выводились если даже используются одни и те же.

В постах не очень понимаю, так что сильно не ругайте.

Точка подхода.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, 62Alex33 сказал:

Здравствуйте товарищи программисты. Возник вопрос как постпроцессору на токарный станок задать вывод точки безопасного подхода и отхода инструмента если используется один и тот же инструмент на всех операциях??? если я хочу поставить между 26 и 27 номером кадра. И можно ли сделать так, чтоб номера инструментов выводились если даже используются одни и те же.

В постах не очень понимаю, так что сильно не ругайте.

Предположу, что инструмент выводите адресом T, соотв-но перед выводом вставляете MOM_force once T, если делаете не программно, через интерфейс билдера можно в контестном меню адреса поставить принудительный вывод (в этом случае билдер за вас сам пропишет предыдущую команду)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
47 минут назад, lexincton сказал:

Если проверять в списке, что через lsearch, но у меня в предыдущем варианте не хотел искать, разбираться тоже не стал и написал через перебор списка циклом

Не совсем понял посыл. Какая там логика должна быть и примерный код.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, artem-nafanya сказал:

Не совсем понял посыл. Какая там логика должна быть и примерный код.

set bsearch 0
foreach tool $list_tool {
    if { $tool == $row_tool } {
        set bsearch 1
        break
    }
}
если bsearch == 0, значит элемент в списке не найден

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, lexincton сказал:

MOM_force once T

Подскажите где ее искать. Пошагово плиз. 

1 минуту назад, 62Alex33 сказал:

Подскажите где ее искать. Пошагово плиз. 

А принудительно это когда снимаешь галочку модальности на T и ставишь обязательный вывод???

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 минут назад, 62Alex33 сказал:

Подскажите где ее искать. Пошагово плиз. 

 

9 минут назад, 62Alex33 сказал:

А принудительно это когда снимаешь галочку модальности на T и ставишь обязательный вывод???

Не, вот где

Screenshot_1.png.847891c05d7d96f069eb44abd1555a44.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
54 минуты назад, lexincton сказал:

set bsearch 0
foreach tool $list_tool {
    if { $tool == $row_tool } {
        set bsearch 1
        break
    }
}
если bsearch == 0, значит элемент в списке не найден

Не пойму почему код сравнивает несколько наборов значений $tool и $row_tool?

Если мне надо найти одинаковые номера инструментов, то имеется только один набор значений состоящий из номеров инструментов, и потому цикл должен как бы искать одинаковые числа внутри самого себя, или я не правильно понял код?

Изменено пользователем artem-nafanya

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

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

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