Jump to content

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


undrakot

Recommended Posts

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

 

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

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

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

post-40484-0-89739800-1380255516.jpg

Link to post
Share on other sites


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

Link to post
Share on other sites

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 ---------

Link to post
Share on other sites

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

 

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

Link to post
Share on other sites

 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"
Edited by flip
Link to post
Share on other sites

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

 

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

 

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

Edited by undrakot
Link to post
Share on other sites

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

Link to post
Share on other sites

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

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

 

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)
}
 
Выведенный список инструмента в конце УП добавляю в начало и не парюсь
  • Нравится 1
Link to post
Share on other sites

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

Edited by Dimanich
Link to post
Share on other sites
  • 8 months later...

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

%

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

 

 
Link to post
Share on other sites

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

Link to post
Share on other sites
в соседней ветка есть несколько постов с рабочим кодом вывод списка инструмент, скачайте посмотрите, задавай те вопросы по существу
 

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

Link to post
Share on other sites

 

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

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

 

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

  • Нравится 1
Link to post
Share on other sites

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

 

# 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;
# ==============================================================================
  • Нравится 1
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.



  • Сообщения

    • ivanK
      A-4012-0518-0L     (Fanuc B Inspection+) такой есть
    • maxx2000
      @Maker79 если принять заложенную в ПМ концепцию программирования обработки и программировать по 3D модели, то всё встанет на свои места. Мне ПМ чужд, не зашёл от слова совсем, ни как, ни под каким соусом. Всё прекрасно гуглится, всё есть, всё работает. Блокируй 5 ось и обрабатывай по 3D модели в 4 осях  
    • Maker79
      Близости с арткамом вижу очень мало. Арткам для дизайнерских вещей очень хороша. И работа с векторами имеется простая и точная,. Нет нужды открывать специальный софт для векторов.  А вот всё что я видел в процессе обучения  PM это примеры на технических изделиях с точными и гибкими вычислениями, что мне очень понравилось. И оно так и есть, но только наполовину получается. По вектору резать может но вот чтобы резать смещаясь от этой линии куда то  надо схему такаую вот знать секретную... через три перегона из программы в программу ))
    • may1on
      Добрый день , не понимаю как запустить барфидер в УП и зациклить станок . Барфидер DH 65L S2 , станок токарный с цанговым патроном , стойка 808D. Программа на барфидер есть , но как ее запустить во время обработки не понимаю .        Куда и что вписать в программу что бы заработало     
    • maxx2000
      Тыкали на наиболее идеологически близкое к Арткам.  В целом решение рабочее, но требует определённых навыков. Например навык самообучения, навык чтения справки.   А он и не испытывает, просто это так задумано, что в твоём случае он работает только в связке с ПШ. В нормальной CAM есть свой CAD модуль который позволяет строить эти все дополнительные элементы или получать их из геометрии детали. Не изучай Катю, продолжай работать в связке ПШ+ПМ, тем более решение есть и тебе его на блюдечке выложили. Волшебной кнопки к сожалению нет ни в одной системе. 
    • Maker79
      И всё равно непонятно мне, почему "по шаблону" получается сделать траекторию которая следует по поверхности цилиндра, но только гравировку по линии. А что мешает сделать еще несколько проходов внутрь и получить выборку вместо гравировки? И почему гравировку эту не получается сместить ни влево ни вправо? Ну не верится мне что PM с его широким применением исптывает трудности для такой задачи. 
    • Кот-Васька
      Здравствуйте. Может у кого есть руководство(мануал) к станкам токарным и фрезерным BLIN? Если есть поделитесь пожалуйста.
    • Maker79
      Я не занимаюсь точным машиностроением. Зачем мне изучать CATIA чтобы делать скалки? Вообще на все мои 3 осевые задачи хватает и арткама.  Нужна была программа для 4 оси. И все мне тыкали пальцем на PM+PS. Теперь мне что изучить ещё чтобы мне по векторам резать на 4 оси  ?? ))
    • dslawa1
      Доброго времени суток. Не подскажите как в постпроцессоре настроить чтоб метчик в цикле G84 нарезал за несколько проходов резьбу ?
    • Jesse
      с этими фамилиями не знаком.. по идее в нефте/газе та же самая шкала MSK должна использоваться. у нас иногда говорят, что если бак IV категории, то это как раз по обычным промышленным нормам. Если I категории, то это самые жесткие требования по сейсмике в атомке - МРЗ. Иногда требуют ещё проверять на падение самолёта, ударную волну.  
×
×
  • Create New...