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

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

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



  • Реклама

  • Сообщения

    • serg.
      Продам фрезы seco osawa mitsubishi. По цене 150-180р/мм. Естественно всё новое. Диаметр 12 - 1800р.  диаметр 10 - 1500. диаметр 8 - 1300. диаметр 7 - 1200. диаметр 6 - 1000. диаметр 5 - 900. диаметр 4 - 700. диаметр 3 - 550. диаметр 2, 2.5 - 350.  Каждого вида примерно по 20 шт.   
    • DISELWERON
      Здравствуйте, уважаемые форумчане! Из моих постов в этой теме вы конечно же поймете, что у меня наболело. Даже может пригорело. И все же хотелось бы спросить: что же для Вас продажи и стоит ли им уделять хоть какое-то внимание? И еще хотелось бы спросить, согласны ли вы с высказыванием ниже и если нет то пожалуйста объясните четко свою позицию с примерами из жизни. «Так как целью коммерческого предприятия является привлечение и удержание покупателей, у него могут быть две и только две функции: маркетинг и инновации. 
      Маркетинг и инновации обеспечивают результаты, все остальное - это расходы».
      @Питер Фердинанд Друкер
    • dalexa
      Интернет-магазин dalexa ру предлагает большой ассортимент инженерного оборудования для систем отопления и водоснабжения. У нас можно купить и заказать газовые настенные котлы Buderus, De Dietrich NANEO, Protherm, SIME, Vaillant, Rinnai, Baxi и Kentatsu, напольные котлы, электрические и твердотопливные котлы, автоматику для котлов, газовые и дизельные горелки Elco, Bentone для котлов, инсинераторов, крематоров, для уничтожения различных отходов методом сжигания, водонагреватели накопительные, косвенные бойлеры, расширительные баки для системы отопления и горячего водоснабжения. Бойлеры Buderus, De Dietrich, NIBE, Reflex, Lapesa, Hajdu от европейских производителей. Комплектующие и автоматику для котлов, отопительного оборудования. Бесплатную профессиональную консультацию в области инженерных систем, заказать подбор котла согласно вашим требованиям, получить несколько вариантов решения системы отопления и водоснабжения для вашего дома. Оборудование сертифицировано, имеет официальную гарантию производителя, качество проверено продолжительной эксплуатацией в российских условиях.
      http://dalexa.ru пн-пт 09:00-18:00, сб 10:00-18:00, вс - выходной 84999940954
      89253895316
    • k_v
      в солиде для этого прийдется рисовать профиль на каждой кривой. но для простого полукруга в последних версиях солида можно выбрать в вырезе по траектории вырез круговым сечением и указать диаметр. так что если траектория на поверхности тела то в теле останется полукруглая канавка
    • lobzik
      так и называть 12 и 8 разными моторами - это тоже непонятно. У Мерса 4,5 и 6 цилиндровые моторы идентичные. Там даже поршня одинаковые.  Но нам Михаил счас расскажет, что это совершенно разные моторы!
    • Хова
      проблему решил.    /del.
    • Солнцеворот
      Сто лет назад играл с Деформом, сейчас ничего уже не помню. Но мне кажется, что правильно было бы зафиксировать одну кромку листа, вторую натянуть, после чего задать перемещение валкам. Логично же задавать граничные условия так?
    • filipp356
      Да
          Я тоже пошел в этом направлении, но количество канавок довольно большое и они врезаются друг в друга под разным углом — хотелось бы как-то упростить задачу. Обратите внимание, что глубина канавки зависит от её ширины, оптом всё прорезать не получается.

      Вот если бы стенки выреза можно было задать кривой, было бы всё здорово.    
    • k_v
      я так понял первый вырез получен просто выдавливанием контура с уклоном. если нужна форма стенок отличная от простого уклона то рисуйте и вытягивайте в соответствующем направлении. если нужен просто полукруг можно выдавить канавку квадратного сечения и использовать полное скругление стенок
    • ILL
      По поводу сертификации была такая тема