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

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

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



  • Сообщения

    • Snake 60
      Скорее всего исправляли в конкретной сборке, для конкретных тел. Насколько я помню, надо в самом эскизе профиля заполнить свойство Description
    • Snake 60
      Делаете дырку в свае - вставляете в нее трубу и 2 человеко-силы крутят сваю ) Дёшево и сердито и не нужен никакой планетарный редуктор ))
    • gudstartup
      вы всегда ищите свой путь или будете делать то что вам советуют? с самого начала прежде чем приступать к экспериментам вам нужно было вынуть носитель и сделать образ. diskcopy делает копию гибкого диска на другой а вам надо сделать образ жесткого диска или карты памяти. делайте как советует @Viktor2004 иначе еще чего нибудь сломаете или вам станок не нужен и вы его приобрели для экспериментов ? вот а печатной машинке из прошлого нельзя а вот на синумерике можно - удивительные вещи в настоящем происходят!! на 100 % уверен что там не модуль а либо писимиси ай либо жд @mircomax81 хотите работать в дос почитайте помощь по командам 
    • PuKoLLleT
      Доброго дня всем. Поделитесь опытом,раньше такое не доводилось делать. На торце фланца нужно сделать  восемь отверстий ф17H7 на токарно-фрезерном станке с осью Y ,имеется ManualGuide.В моем понимании нужно просверлить,а затем торцевой фрезой расточить нужный диаметр.Получится такой фокус,или надо разверткой доводить нужный размер?  Стойка Fanuc 0i-Tf.
    • Snake 60
      Всё верно, я даже русификатор делал для него (ушло на это где-то около года). Хороший софт был, я всех знакомых на него подсадил в свое время :) У меня даже где-то образ на виртуалке лежит с SW2014+MechSoft, Жаль, что автодеск его поглотил, а не DS :( А по сути вопроса, проектировал двухступенчатый планетарный редуктор в свое время. Что было нужно: Справочник по планетаркам (автора не помню, если надо поищу), из софта MathCAD + GearTeq (софтина идет вместе с GearTrax, только рассчитывает и моделирует несколько зацеплений согласно выбранной схеме, в том числе планетарки) Ой и ошибаетесь. Звездочки - не равно зубчатые колеса в планетарке) Мы намучились с малой точностью изготовления на эл.эрозии, а Вы лазером ))) Был собран опытный образец редуктора с незакаленными деталями, чисто проверить геометрию, отладить сборку. Так потом начальство этот редуктор сказало испытать в бою, как я не противился)) Помер за пару дней интенсивных нагрузок ))) Материал, термообработка и точности изготовления решают )
    • Snake 60
      @Тихоход  Ещё один вариант - изучать программирование и писать свою программу/макрос. Вот пример конфигуратора двери: https://www.youtube.com/watch?v=wv4HryWQBSk
    • mircomax81
      Посредством Diskcopy можно сделать адекватную копию на флоппи диск?
    • Andrey_kzn
      Да, ведь советовали автору вытащить жёсткий диск и сделать образ. Неужели самому не интересно, как устроен этот старый промкомпьютер? Там может стоять как жёсткий диск, так и CF-карта, или же Disc-on-chip или Disc-on-module.  Как-то очень давно, на подобном промышленном оборудовании (большая печатная машина) я не смог перенести  ПО с родной CF - карты на другую, такого же размера но другой фирмы. Была также станочная оболочка под досом.  Образ я делал Нортон гостом, развернул его на другую CF-карту без проблем. Машина загрузилась нормально и работала ровно 2 дня, на неродной CF-карте,  потом зависла, и отказалась загружаться. Пришлось вызывать сервисника. От него мы узнали, что нельзя просто так взять и заменить карту  - носитель системного ПО, на другую. А полезли мы туда, так как руководство захотело печатать отчёты по работе машины. В станочном ПО такая функция была. Вот только принтер надо было купить у фирмы - производителя этой самой машины. В попытках заставить работать другой принтер мы редактировали файл  AUTOEXEС.BAT, на предмет загрузки драйвера принтера, ничего не получилось, зато перестали открываться некоторые страницы станочного ПО.  Образ у нас был давно снят, и мы развернули его на другую карту памяти. Родную карту я трогать не стал (как чувствовал, что нельзя ). Сервисник восстановил ПО с архивной дискеты на родную карту памяти, и всё заработало. Дискеты с архивами ПО шли вместе с документацией к машине.  Там были дискеты с Досом, станочной оболочкой, параметрами приводов, программой ПЛК. Он же и предупредил нас о предельно аккуратном обращении с родной картой памяти, и посоветовал немедленно сделать образы с архивных дискет, что мы сразу и проделали.. Вот такой сюрприз от машины эпохи Дос.
    • Борман
    • gudstartup
      а ведь все работало...
×
×
  • Создать...