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

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

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




  • Сообщения

    • pescarbon
      Здравствуйте. Хочу сделать backup, чтоб на компе был. Настроил соединение через winpsin. обычные программы скинул, а если смотреть раздел Данные пусконаладки , то он пустой и если на него нажать, то все зависает и приходится перезагружать и так все время. Если опустится в меню до данных пусконаладки и поднять вверх к разделу программ , то и программы перестают виднеться и если нажать на Select , то тоже все зависает. В этом разделе пишет, что NC card: 0 байт свободно. Хотя в управляющих программах пишет Свободная память NC:181319 byte. то есть ничего не отображается во всех разделах Передачи данных(данные пусконаладки, приложения, машинные данные, start-up файлы......
    • Борман
      И в стали углерод и в спирте. Грызите на здоровье.
    • Bot
      Компания Hypertherm Associates, американский производитель систем промышленной резки и программного обеспечения, объявила о выпуске основного обновления ПО для раскроя ProNest® 2025 версии 16.0. Смотреть полностью
    • Fedor
      Разве не знали, что если сталь хорошенько нагревать то сначала она становится пластичной и ее куют, а если еще нагревать то и жидкой и ее можно лить ?   :)   Так же и с грунтами ... :)
    • ДОБРЯК
      @Orchestra2603 вот смотрите что получается.  Вы получили систему линейных однородных уравнений. Вы пишите, что "Выкидываем повторную строку". Вы её не выкидываете, а записываете уравнение Ф1(1) = b.  Вы вводите точку отсчета для определения перемещений. Вы закрепляете модель. Только точка отсчета будет равняться не 0, а точка отсчета будет равняться b.  А все остальное дело техники... :=) В любом случае чтобы решить СЛАУ нужно ввести точку отсчета. Для решения задачи в которой, например 10 или 100 или... степеней свободы вам придется сделать численную факторизацию и ввести точку отсчета.
    • _GOST_
      Открываете любую модель (деталь/сборка) => выбираете любую панель инструментов, на которой хотите разместить значок макроса => кликаете на панели ПКМ => Адаптация пользовательских команд. Дальнейшие действия на изображении во вложении.
    • Рома калужский
      я же отписался, все работает.  спасибо
    • Viktor2004
      вот я и хотел что бы при запуске приложения C-Exe оно у меня сразу определяло нажата кнопка или нет. Оказалось это невозможно
    • Борман
      По вашей логике в сталях "примерно" как в грунтах, а в грунтах "примерно" как в воде. Спасибо, познавательно.
    • maxx2000
      SW стал средой для разработки печатных плат? как минимум с 2018 солидворкс не является средой для разработки печатных плат, соответственно программу сверловки\фрезеровки ПП можно в нём изготовить только загрузив в него внешний файл созданный в другой программе. Обычно это Gerber формат  содержит информацию  о слоях меди, маски припоя, условных обозначений, данных сверления и т.д. Я бы рекомендовал тебе отказаться от этой связки, есть полно специализированных программ для проектирования ПП и полно программ делающих их мехобработку практически в 2 клика
×
×
  • Создать...