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

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


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

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




  • Сообщения

    • Shura762
      Что происходит? кто может дать ответ. Открываем книгу Нарышкин Подшипники, смотрим упорные там указан ГОСТ 6874-75, ищем в сети , тоже есть а вот на оф сайте стандарта его нет, В ТФ тоже есть модели по этому госту, Сейчас действует гост 7872-89. Что не так с ГОСТ 6874, типа ой мы ошиблись и забыли?
    • Ганс В
      Доброе времени суток знатоки NX12CAM У меня такой вопрос. Мне нужен немного увеличить стрелку при построения размеров,  на фоне когда ставиться размер размер стрелки мелкий.  И посоветуйте пожалуйста ведоуроки по NX12  Спасибо заранее 
    • Bot
      Оригинал: Roopinder Tara. Watch this space: Here come manufacturable generative designs Такие кронштейны демонстрируют облегчение конструкции с помощью топологии. У этого кронштейна острые края и гладкие поверхности, это означает, что деталь еще можно подвергнуть машинной обработке, чтобы сделать ее максимально легкой Мы уже знакомы с Майклом Богомольным — мы встречались с ним на его предыдущем предприятии ParaMatters, которое было продано Carbon, компании по производству 3D-принтеров, в августе 2022 года. После этого он собрал свою команду ParaMatters (шестеро из них имеют докторскую степень) и получил инвестиции в размере 2,5 млн долларов для запуска InfinitForm. Эта компания вполне может создать первое генеративное программное обеспечение, которое проектирует подходящие для использования и производства детали. Крупные поставщики САПР могут заявить, что их программное обеспечение для генеративного проектирования имеет возможности для создания [...] View the full article
    • lux59
      построить дугами барашку я пробовал, не то слегка, он в списке выдаст количество сегментов, да норм сделаю покажу, что вышло, правда пришлось делать сборкой не единой деталью, в общем я понял как это работает, Спасибо за помощь!
    • lem_on
      Ага, особенно некоторых бестолочей со своим пониманием реальности.  По типу, я скачал программу, я так вижу, я пишу книгу. 
    • malvi.dp
      Так в чем проблема создать кривую и протянуть профиль? Единственная трудность это кривую сделать из дуг и отрезков, а не сплайном. Если же не использовать инструментарий сварных конструкций, то можно и сплайн использовать в качестве направляющей.  
    • Alexey0336
      Добрый день. Как то фигурировал тут вопрос с точкой в названии файла. У меня проблема, не могу захватить модель, пишет, что с этим символом нельзя. Обойти никак нельзя получается?
    • malvi.dp
      У вас там скорее всего скрыты размеры. Перетяните их дальше от штриховки, чтоб не пересекали.
    • Snake 60
      @Бестолковый С названием топика не ошиблись? Человек спрашивает: ' VBA ' 1. Open a document in SOLIDWORKS. ' 2. Run the macro below to set inch units with '     a fractional base of 16 and no rounding. Dim swApp As SldWorks.SldWorks Dim Part As SldWorks.ModelDoc2 Option Explicit Sub main()    Set swApp = Application.SldWorks    Set Part = swApp.ActiveDoc    Part.SetUnits swINCHES, swFRACTION, 16, 0, False End Sub   Код взят отсюда: https://help.solidworks.com/2019/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.imodeldoc2~setunits.html Вот еще описание всех методов: https://help.solidworks.com/2021/English/api/swconst/DP_Units.htm Ну и на вкусное, статья от Артема (см. через ВПН) https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=https://www.codestack.net/solidworks-api/options/document/set-units/&ved=2ahUKEwjgpL-apN6GAxU7HxAIHYO0D2IQFnoECBAQAQ&usg=AOvVaw15xq49gocoVQ5BzEA31qGf
    • Shvg
      IModelDocExtension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitSystem, swUserPreferenceOption_e.swDetailingNoOptionSpecified, swUnitSystem_e.<Value>), где swUnitSystem_e.<Value> перечисление swUnitSystem_CGS           1 = Centimeter, gram, second  swUnitSystem_Custom        4 = Lets you set length units, density units, and force  swUnitSystem_IPS           3 = Inch, pound, second  swUnitSystem_MKS           2 = Meter, kilogram, second  swUnitSystem_MMGS          5 = Millimeter, gram, second   
×
×
  • Создать...