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

FAQ/Unigraphics/POST


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

@5axisCNCФункции для вывода инфы в начало файла через перезапись.

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

#=============================================================
proc PB_CMD_INIT_OUTPUT { } {
#=============================================================
#добавить в start of program

#в постпроцессоре, если нужно что-то вывести в начало файла пишем следующее:
#global DATA DATA_count
#set DATA($DATA_count) "какая-то инфа"
#incr DATA_count

    global DATA DATA_count
    set DATA_count 0
    
}


#=============================================================
proc PB_CMD_OUTPUT { } {
#=============================================================
#добавить в самый конец end of program

    global DATA DATA_count

    #закрываем вывод в файл
    global ptp_file_name
    MOM_close_output_file $ptp_file_name

    #читаем файл в буфер
    set read [open $ptp_file_name r]

    set buf_count 0
    set buf($buf_count) ""

    while { [gets $read line]>=0 } {
        set buf($buf_count) $line
        incr buf_count
    }
    close $read

    #открываем файл на перезапись с вайпом данных
    set write [open $ptp_file_name w]

    #выводим необходимую инфу в начало файла
    for {set i 0} {$i < $DATA_count} {incr i} {
       puts $write "$DATA($i)"
    }

    #выводим инфу из буфера
    for {set i 0} {$i < $buf_count} {incr i} {
        puts $write "$buf($i)"
    }

    #закрываем вывод
    close $write
    
    MOM_open_output_file $ptp_file_name
}

 

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


Подскажите ребята. 

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

 

set a [expr 9 * 2.1]

$a (результат 18.9 , а надо 18)

 

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

Точно! Если создаете как "команда пользователя" последнюю скобку не копируйте он сам ее закрывает

image.png

6 минут назад, an-kval сказал:

$a (результат 18.9 , а надо 18)

set hours [format %2.0f [expr $mom_machine_time/60]]

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

Подскажите ребята. 

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

 

set a [expr 9 * 2.1]

$a (результат 18.9 , а надо 18)

 

Сам же отвечу себе

set a [expr int(9 * 2.1)]

$a (результат 18)

 

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

 

set hours [format %2.0f [expr $mom_machine_time/60]]

тут как раз округляется результат.

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

Не согласен.

http://tclstudy.narod.ru/tcl/lesson19.html

В последней команде format %10.2f выводит аргумент на ширине 10 символов, два из которых отводятся для дробной части.

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

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

@an-kval [expr floor(9*2.1)] ?

Вместо floor  int поставил и работает. Может и floor работает.

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

Не согласен.

http://tclstudy.narod.ru/tcl/lesson19.html

В последней команде format %10.2f выводит аргумент на ширине 10 символов, два из которых отводятся для дробной части.

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

попробуй пример и увидишь, что идет округление результата.

Ссылка на сообщение
Поделиться на других сайтах
16.06.2023 в 22:43, mr_Voden сказал:

Функции для вывода инфы в начало файла через перезапись

Я так понял переменная DATA должна быть выведена в начало файла

Присваиваю ей тупо значение(set DATA "test0") вывода в файле не вижу. 

У кого нибудь получилось? Или нужно как то по другому?

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

время же элементарно пересчитать в нормальный формат!

и будет выводиться сек мин и часы в нормальном формате а не 00:30:89 (89 секунд!) как в $mom_machine_time

 

наподобе остальное думаю не составит труда дописать самим

 

set hours [expr int ([expr $mom_machine_time /60])]; #Целочисленные часы
set minutes [expr int ([expr $mom_machine_time-$hours*60])]; #Целочисленные минуты

 

image.png

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

время же элементарно пересчитать в нормальный формат!

Да это, в многих роликах про постбилдер расписывается и рассказывается детально.

Там еще есть варик как не выводить часы если они равны 0 и тогда выводятся только минуты.

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

Как кстати у вас выводится машинное вначале программы?

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

@5axisCNC

Читайте что написано...функцию по ициализации киньте куда написано. Далее в посте где получаете инфу, которую нужно вывести в начале, пишите:

16.06.2023 в 23:43, mr_Voden сказал:

global DATA DATA_count
set DATA($DATA_count) "какая-то инфа"
incr DATA_count

И потом она будет выведена в начале уп.

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

Да это, в многих роликах про постбилдер расписывается и рассказывается детально.

Там еще есть варик как не выводить часы если они равны 0 и тогда выводятся только минуты.

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

Как кстати у вас выводится машинное вначале программы?

у меня реализовано через сбор программы в буфер, сделал буквально неделю назад, тк надо было параметры 3d коррекции вывести в начало операции

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

время же элементарно пересчитать в нормальный формат!

и будет выводиться сек мин и часы в нормальном формате а не 00:30:89 (89 секунд!) как в $mom_machine_time

 

наподобе остальное думаю не составит труда дописать самим

 

set hours [expr int ([expr $mom_machine_time /60])]; #Целочисленные часы
set minutes [expr int ([expr $mom_machine_time-$hours*60])]; #Целочисленные минуты

 

image.png

Обалденный шрифт в скриншоте :-)

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

Подскажите ребята mom_переменную лимита  Z оси, т.е. минимальная Z в УП.

 

mom_sys_zaxis_min_limit , total_z_min найденные в событиях других постпроцессоров чёто не работают у меня. 

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

Выдернул код из поста. Перерабатываю.

 

    switch $mom_output_unit {
        IN {
            set cycle_feed [expr $feed*10]
        }
        MM {
            set cycle_feed $feed
        }
    }

 

Я не пойму почему если размеры подачи заданы в бюймах мы умножаем подачу на 10, а не на 25,4мм? 

Предполагаю что этот кусок кода должен приводить подачу к мм.в минуту в случае нарезания например дюймовой какой то резьбы. Но почему множетель 10?

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

Видимо какая то особенность HEIDENHAIN.

До конца не понял зачем это все, но понял что мне этот кусок кода нафик не нужен походу. 

 

Из мануала HEIDENHAIN:

В программах в миллиметрах подачу F вводят в мм/мин, в
программах в дюймах, исходя из оптимальных показателей
разрешения - в 1/10 дюйма/мин. В качестве альтернативы
можно при помощи соответствующей программной клавиши
задать скорость подачи в миллиметрах на оборот (мм/об) FU
или в миллиметрах на зуб (мм/зуб) 

Ссылка на сообщение
Поделиться на других сайтах
proc MOM_drill_move { } {
#=============================================================
   global cycle_init_flag


   ABORT_EVENT_CHECK

   PB_CMD_A_CYCLE

   MOM_force Once M
  # MOM_do_template cycle_drill
   MOM_do_template TNC_cycle_drill
   set cycle_init_flag FALSE
}

 

Ручками поправил в файле строки. Одну закоментировал, другую ниже добавил. 

Но если открыть файл в билдерое и сохарнить постпроцессор то событие (процедура) proc MOM_drill_move перезаписывается в тот вид что идет по умолчанию.

 

Как сделать так чтобы постбилдер не переписывал исправленные мною действия при наступлении события proc MOM_drill_move?

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

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

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

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

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

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

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

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

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

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

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




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