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

Вывод списка инструмента в текст УП


undrakot

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

Всем доброго дня. Эта тема поднималась уже неоднократно, однако оптимального решения мне найти так и не удалось. Вопрос в следующем: как вывести через постпроцессор список всего используемого в программе инструмента в текст УП. Имеется купленный постпроцессор (к сожалению, зашифрованный), в котором список инструмента выглядит так (см. приложенный скрин). Как мне реализовать такое же в своем постпроцессоре? 

 

Есть идея собирать в начале каждой операции имя и параметры инструмента в список (массив), а затем дописывать его в начало файла. Но через метод языка TCL puts дописывает не всегда корректно (часто съедает начало файла УП), трудно соблюдать нумерацию кадров и список инструмента не всегда нужен в самом верху.

Так же была мысль с помощью NXOpen программирования написать dll, которая бы передавала постпроцессору список инструмента. Но это опять же необходимо будет подгружать внешний dll во время постпроцессирования, да и вообще это костыль, как мне кажется.

Еще в PB вроде есть функция PB_CMD_create_tool_list, но как ею пользоваться, я так и не разобрался. Если кто объяснит, буду благодарен. Спасибо.

post-40484-0-89739800-1380255516.jpg

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


Присоединяюсь. Постпроцессорами только недавно начал интересоваться. Никак не получается вызвать PB_CMD_create_tool_list. Может кто уже имеет опыт?

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

puts $ofile ";-----------" ; #  ;----------- TOOL LIST -----------
for { set nn 0 } { $nn < $mom_tool_count } {incr nn} {
  if {[hiset mom_tool_use($nn,0)] && [hiset mom_tool_use($nn,1)] && [hiset tool_data_name($nn)] } {
    set a [scan $mom_tool_use($nn,0) %d tn]
    #set tm [ expr round($mom_tool_use($nn,1)) ]
    set tm $mom_tool_use($nn,1)
    set str ";"
    append str "TOOL =[format "%s" $tn ] "
    append str "tm=[format "%.2f" $tm ]' "
    append str "=[format "%s D=%.2f " $tool_data_name($nn) $tool_data_diameter($nn) ] "
      if {[info exists tool_data_corner1_radius($nn)]} {
        if {![ EQ_is_zero $tool_data_corner1_radius($nn) ] } {
           append str "r=[format "%.2f" $tool_data_corner1_radius($nn)]"
        }
      }
      append str " "
       puts $ofile $str
   }
}
puts $ofile ";-----------" ; # ;--------- END TOOL LIST ---------

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

Где-то я этот текст уже видел.... 

 

И потом - в том виде, что приведен пример - работать не будет, зачем привел - непонятно.. Хотя бы ссылочку приводи на постпроцессор, откуда выдрал этот пример, мне будет интересно. 

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

 PB_CMD_create_tool_list вроде заработал, но выводит какую-то порнографию))

У меня получилось все очень просто:

global mom_date
global mom_tool_name
global mom_tool_diameter
global mom_tool_length
global mom_tool_corner1_radius
global mom_group_name

MOM_output_literal ";Data razrabotki: $mom_date"
MOM_output_literal ";Programma: $mom_group_name"
MOM_output_literal ";Instrument:...........$mom_tool_name"
MOM_output_literal ";   Diameter:.. $mom_tool_diameter"
MOM_output_literal ";   Radius:....$mom_tool_corner1_radius"
MOM_output_literal ";   Dlina:.............$mom_tool_length"
Изменено пользователем flip
Ссылка на сообщение
Поделиться на других сайтах

Где-то я этот текст уже видел.... 

 

И потом - в том виде, что приведен пример - работать не будет, зачем привел - непонятно.. Хотя бы ссылочку приводи на постпроцессор, откуда выдрал этот пример, мне будет интересно. 

 

Пост купленный, распространять по условиям договора не имею права. Да и, к тому же, он зашифрованный, иначе сам бы разобрался. Проблему со списком инструмента решил методом репроцессинга, кому интересно - пишите в ЛС, расскажу как.

Изменено пользователем undrakot
Ссылка на сообщение
Поделиться на других сайтах

по моему самый простой и надежный способ это собирать информация обо всем используемом инструмента в процессе постпроцессирования, а затем путем копирования текста выведенной управляющей программы из выведенного файла во вновь созданный с добавление списка инструмента туда куда нужно.

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

по моему самый простой и надежный способ это собирать информация обо всем используемом инструмента в процессе постпроцессирования, а затем путем копирования текста выведенной управляющей программы из выведенного файла во вновь созданный с добавление списка инструмента туда куда нужно.

Как я решил эту проблему

 

1) В событии начала программы инициируем массив, в который будем собирать необходимую информацию о применяемом инструменте, например 

 

 

global array_tool_name;
global tool_index_max;
 
set tool_index_max 24; # MAX KOL-VO INSTRUMENTOV V MAGAZINE
 
for {set i 1} {$i<=$tool_index_max} {incr i} {
set array_tool_name($i) ""
}

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

 

 

global array_tool_name;
global mom_tool_name;
global mom_tool_number;
 
set tool_str "\(T$mom_tool_number\ $mom_tool_name\)";
set tool_str [string toupper $tool_str];
set array_tool_name($mom_tool_number) $tool_str;
3) В событии конца программы добавляем команду, например
 
global array_tool_name;
global tool_index_max;
 
for {set tool_index 1} {$tool_index<=$tool_index_max} {incr tool_index} {
MOM_output_literal $array_tool_name($tool_index)
}
 
Выведенный список инструмента в конце УП добавляю в начало и не парюсь
Ссылка на сообщение
Поделиться на других сайтах

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

Изменено пользователем Dimanich
Ссылка на сообщение
Поделиться на других сайтах
  • 8 месяцев спустя...

перенести можно.только тогда выдаёт инструмент пооперационно

%

O1234 (0021103)

(UNIGRAPHICS NX)

(CONTROL: HAAS, FANUC)

(**********************)

(----MIN Z..-15.52------)

(----TOTAL TIME: 0:3---)

(**********************)

(=================================)

(                            TOOL LIST                      )

(=================================)

( NAME                  LENG.                   NUM.)

( FINISH-6              25.0                          10  )

( RISUK-6               25.0                           9  )

( FINISH-6              25.0                          10  )

( RISUK-6               25.0                           9  )

( DRILL-2.5             20.0                           2  )

( DRILL-3.6             20.0                           3  )

(=================================)

 это к сообщению 
TugoDum

В событии автоматической смены инструмента добавляем команду

global ptp_file_name mom_definition_file_name mom_output_file_full_name

global mom_output_file_directory mom_output_file_basename mom_output_file_suffix

global mom_warning_info

global mom_machine_time mom_group_name mom_operation_name mom_part_name

global mom_tool_count mom_tool_use

global mom_logname mom_ug_version mom_date mom_machine_name

global coord_z

global mom_machine_time

global mom_tool_name

global tool_data_diameter

global tool_data_name

global array_tool_name;

global mom_tool_name;

global mom_tool_number;

global mom_tool_length

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

set minutes [format %0.0f [expr $mom_machine_time - 60 * $hours]]

set tm1 [clock seconds]

set tm2 [clock format $tm1 -format "%M:%S"]

MOM_log_message "MOM Start = $tm2 "

 

set tmp_file_name "${ptp_file_name}_"

if {[file exists $tmp_file_name]} {

MOM_remove_file $tmp_file_name

}

MOM_close_output_file $ptp_file_name

file rename $ptp_file_name $tmp_file_name

 

set ifile [open $tmp_file_name r]

set ofile [open $ptp_file_name w]

 

set mom_tool_name [format "%1s" $mom_tool_name]

set mom_tool_length [format "%-9.1f" $mom_tool_length]

set mom_tool_number [format "%9d" $mom_tool_number]

set tool_str "\($mom_tool_name \ $mom_tool_length \ $mom_tool_number \ )";

set tool_str [string toupper $tool_str];

set array_tool_name($mom_tool_number) $tool_str;

#set array_tool_length($mom_tool_length) $tool_str;

#set array_tool_number($mom_tool_number) $tool_str;

puts $ofile "\( $mom_tool_name \ $mom_tool_length \ $mom_tool_number \ )";

while { [gets $ifile buf] > 0 } {

puts $ofile $buf

}

 

close $ifile

close $ofile

MOM_remove_file $tmp_file_name

 

set tm1 [clock seconds]

set tm2 [clock format $tm1 -format "%M:%S"]

MOM_log_message "MOM End = $tm2 "

 

 

MOM_open_output_file $ptp_file_name

 

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

Попробовал по примеру TugoDum, ничего не происходит. вообще никакого списка инструментов нету  :sad:

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

Попробовал по примеру TugoDum, ничего не происходит. вообще никакого списка инструментов нету  :sad:

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

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

я тоже пробовал по его примеру всё выводит и можно переадресовать это в начало программы.но с переадресовкой нужно несколько вещёй менять..например переписывать вступление программы

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

тут 47 страниц "соседней ветка", не могли бы вы тыкнуть меня в нужную?

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

 

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

тут 47 страниц "соседней ветка", не могли бы вы тыкнуть меня в нужную?

 

http://cccp3d.ru/topic/68335-faqunigraphicspost/?p=607950

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

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

 

# HEAD NC_PROGRAM
 
global mom_output_file_directory; 
global mom_output_file_full_name;
# MY VAR
global array_tool_name;
global tool_index_max;
global n_tool;
# ==============================================================================
set cnc_file_name $mom_output_file_full_name;
set tmp_name "temp.H";
set tmp_file_name "$mom_output_file_directory$tmp_name";
 
MOM_close_output_file $cnc_file_name;
 
set tmp_file [open $tmp_file_name w+ ];
set cnc_file [open $cnc_file_name r  ];
# ==============================================================================
# SPISOK INSTRUMENTA
if { $n_tool > 1 } {
   for { set i 1 } { $i<=$tool_index_max } { incr i } {
     if { $array_tool_name($i) != "" } {
        puts $tmp_file "$array_tool_name($i)";
     }; # if 1
   }; # for
}; # if 2
# ==============================================================================
# ZAPIS' OSTAL'NOY CHASTI UP
while { [gets $cnc_file block] > 0 } {
      puts $tmp_file "$block"
}; # while
 
close $cnc_file;
close $tmp_file;
 
file rename -force $tmp_file_name $cnc_file_name;
file delete -force $tmp_file_name;
# ==============================================================================
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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



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