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

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


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

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




  • Сообщения

    • Fedor
      В строительстве взяли курс на то, чтобы проектировщик умел бы и считать на прочность и чертить . Для чего программы пишутся если ими не пользоваться ?  Механику деформируемых тел в той или иной форме почти все инженеры учат... :) 
    • Sabadash
      Потестил разные варианты дуговой интерполяции, работает только в плоскости XY. Автосмена работает, коррекция длины тоже Единственное приходится смещать абсолютные координаты на высоту длины инструмента которым привязывалась система координат.    
    • roiman
      Вы серьёзно думаете, что в этой стране прочнисты нужны? Было по всей стране 3 выпускающих кафедры. В названии одной, моей родной, слово "прочность" теперь вообще не фигурирует. Оно в лучшие-то годы не нужно было. Как-то сидел, будучи аспирантом, 15 лет назад как консультант от кафедры на дне открытых дверей. Сижу рассказываю одному мальчику с мамой рядом, как у нас хорошо, и раз, мама выдаёт: "Ну, вы же понимаете, что ДПМ-щики работают кем угодно, но только не прочнистами? Я сама ДПМ заканчивала".   По теме. Попытки найти что-то на аутсорсе привели меня к факту, что специалисты как таковые не нужны. Нужны "колышки", чтобы дырки затыкать в производствах. Желательно, выполняющие десяток трудовых, смежных функций - конструктор-технолог-программист ЧПУ-подготовка производства-сертификация-физ.расчёты-работа  с подрядчиками-.... Или вообще просто, в наглую, "конструктор, чтобы наладить производство".   И, главное, чтобы рядом был. Неважно, что ищем 2-3-5 лет специалиста и производство стоит, рынок уходит.   Вот сейчас проблема, как я понимаю, с проектировщиками - КЖ, КМ и пр. С ними уже на всё согласны. 90% вакансий по удалёнке - для них. Чекайте - лет через 5-ть в производстве пластмассовых изделий будет аналогичный крах в специалистах. Десяток лет отдавали всё Китаю на подряды. Опыт проектирования остался не у многих, как к примеру у дедушки в соседней теме, а реального опыта вообще у предельно малого кол-ва людей. Открываю LinkedIn - там первые же ролики такого качества и сложности оснастки, что в текущих реалиях РФ вообще невозможно производить. Но предприятия "ломаются" как девочки. Нужно чтобы рядом был, сам переехал и пр. Хотя куда и что, а пресс-формы  - самая подходящая сфера для аутсорса. Китайский инженерам можно всю РФ на аутсорсе обслуживать. Местным - фиг.   Да, зачем далеко ходить. Ещё 10 лет назад мне моё родное, ныне обанкротившееся, предприятие, казалось просто отсталым болотом. Сейчас я вспоминаю его как фантастику. Те вещи, которые я делал ещё не так давно, теперь кажутся не просто невозможными, а просто НЕ НУЖНЫМИ.   Извините, накипело.
    • Nikomas
      Допилил таки пост на 3х осевой фрезерный Weida 850 со стойкой Sinumerik 808D. ;(WEIDA 850 postprocessor rev. 1.1 by Samokhin Aliaksei) ;T3 - TYPE:END MILL. DIAM:12.0 ID: G90 G17 G55 T3 M6 D1 G0 M3 S4155 X-45.405 Y-44.635 F735. M8 G0 X-45.405 Y-44.635 Z10 Z2 G1 Z-15.92 F12699 G3 X-45.656 Y-43.401 Z-16 I-1.615 J0.314 F735 ... G1 X49.785 Y1.447 G0 Z10 M5 M9 G0 SUPA Z0 G0 SUPA X-400 Y14 M30 %   Сверление - циклами @drill local numeric RTP RFP SDIS DP DPR FDEP FDPR DAM DTB DTS FRF MDEP VRT DTD DIS1 local integer VARI AXN ... if drill_type eq 0 ;G81 {nb, 'MCALL CYCLE81 (' RTP:'5.3(p)' ', ' RFP:'5.3(p)' ', ' SDIS:'5.3(p)' ', ' ' , ' DPR:'5.3(p)' ')'} endif ...  
    • Ninja
      И вот поэтому теперь, вместо этих галерей будут строить новые современные жилплощади по цене 760 тыс/мес в ипотеку! Прямо над заводами в центре Москвы! @Krusnik ЖК Бадаевский слыхал? ВооТ как надо! Жить в парящий домах на высоте 38 метров над землёй!     Внизу завод, да кокой завод! Пивоваренный завод!!! а на верху небожители, в самом центре! Лепота! И завод городу сохранили, нате вам Москвичи - идите работайте , и людям место для жизни - это те которые не работают     дополню: "Свой парк на 4 га – особая гордость проекта. Концепцией предусмотрено воссоздание настоящего русского леса. Там будут разбиты аллеи, клумбы, посажены красивые крупномеры, фруктовые деревья."   Вот как построят так мы и переедем, готовьтесь!  
    • maxx2000
    • Ninja
      @Krusnik ты москвич? Коренной? Похоже что нет! Понаехали, понимаешь... Москва такая большая, что местные и за всю жизнь не узнают что там и где...  Вот тебе навигатор, пользуйся. https://www.kp.ru/afisha/msk/obzory/moj-gorod/byvshie-zavody-i-fabriki-moskvy Потом отчёт сюда выкладывай ! Понял?  
    • Proalign
    • gudstartup
      значит до поворота не крутится если даже нет команды на ражим тогда это точно датчик зацепа вращ. инструмента или его цепь с релюшкой  если и в реф также тогда 100 проц. смотрите датчик
    • maxx2000
      принципиально как раз так же. NX строит развёртку поверхности, затем строит на ней текстуру, и сворачивает её обратно. И просто завёрнуто это в отдельный модуль. Единственное что NX делает, это по картинке поднимает рельеф без лишних построений. Делает он это точно также как и Рино.   Есть другое видео, с Горилой на фотоаппарате. При просмотре этих видео у меня всегда возникал вопрос, результат получается всегда сетка или в каком то случае твердотельная геометрия. 
×
×
  • Создать...