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

Имя файла УП как имя программы


RVD1972

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

Подскажите новичку, пожалуйста, как сделать так, что б постпроцессор выводил тексты УП в файлы с названиями как "имя программы". По умолчанию он всё выводит в тот файл, что указан в диалоговом окне. Редактировать это для каждой программы очень неудобно. Хочу, что б было как в мастеркаме. Один раз указать имя программы в операциях - и он выводит программу на эти операции именно в этот файл.

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


UnPinned posts

@RVD1972Хотите что бы пост каждую операцию выводил в отдельный файл, с названием как у выводимой операции? Так? 

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

Почти так. Только не каждую операцию, а каждую группу операций с одинаковыми "имя программы" в отдельный файл.

А ещё лучше - одну ветку в дереве программ назвать "уст_1", другую ветку обозвать "уст_2" - и что б само выводилась в файлы "уст_1.нц" и "уст_2.нц".

Как-то так хочу.

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

В start of path делаете поверку на изменение mom_group_name. Если изменилось то создаёте новый файл с таким именем и вывод идёт уже в него через mom_open_output_file. Вкратце я так себе представляю. 

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

Спасибо. Сделал через mom_open_output_file. Всё заработало. Теперь ищу способ вывести окно "Сохранить Как".

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

Вроде нашёл способ вызова tk скрипта через pb_cmd_ugwish_win64.tcl . Только что-то я делаю не так...

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

@RVD1972 А зачем вызов tk? 

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

Хочу, что бы постпроцессор  перед тем, как начать запись в файл выдавал окно "save as". Привык работать как в Мастеркаме. Я прочитал только о двух способах вызвать это окно. Через Tk или с помощью NXopen.

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

@RVD1972 Обратите внимание на функцию PAUSE, ее реализацию в постах, файл mom_pause.tcl и команду tk_getSaveFile. Может помочь.

Изменено пользователем mr_Voden
Ссылка на сообщение
Поделиться на других сайтах
13 hours ago, mr_Voden said:

@RVD1972 Обратите внимание на функцию PAUSE, ее реализацию в постах, файл mom_pause.tcl и команду tk_getSaveFile. Может помочь.

Спасибо, как раз вчера нашёл файл mom_pause_win64.tcl. Сам образец работает, осталось отредактировать.

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

Вроде сделал всё как задумывал, осталось самая малость.  Почему-то получается два одинаковых файла. Один под нужным мне именем, а другой под тем, который указан в диалоговом окне постпроцессора (и который мне не нужен). Команда MOM_open_output_file не гасит предыдущий поток вывода. Хотя в хелпе сказано, что должно переправлять (This extension allows you to redirect output to other output files).

Пробовал отключать - удалять - переопределяять  $ptp_file_name - тогда вместе с файлом-"паразитом" прекращается вывод текста программы в окно информации.

   global mom_output_file_basename
    global ptp_file_name
    global current_program_name
    global mom_parent_group_name
    global mom_group_name
    global mom_oper_program
    global mom_output_file_suffix
    global mom_part_name
    global mom_prog_number
    global mom_output_file_full_name


    if [info exists mom_oper_program] {
        set current_program_name $mom_oper_program
    } else {
       set current_program_name "T"
    }

    


    #Путь к файлу с Tk скриптом
    set cam_aux_dir [MOM_ask_env_var UGII_CAM_AUXILIARY_DIR]
    set part_dir $mom_part_name
    regsub -all {\\} $cam_aux_dir {/}  cam_aux_dir
    regsub -all { }  $cam_aux_dir {\ } cam_aux_dir

    #Путь к файлу, где хранится результат работы Tk скрипта
	#По другому вернуть значение не получается
    set temp_dir [MOM_ask_env_var TEMP]
    regsub -all {\\} $temp_dir {/}  temp_dir
    regsub -all { }  $temp_dir {\ } temp_dir
    set tk_return_value_file "$temp_dir/tk_return_value.txt"

	#Информация, передаваемая в Tk скрипт для SaveAs окна
    regsub -all {\\} $part_dir {/}  part_dir
    regsub -all { }  $part_dir {\ } part_dir
    set part_dir [string range $part_dir 0 [string last "/" $part_dir]]


    if [file exists "$tk_return_value_file"] {
        file delete "$tk_return_value_file"
    }
	#Вызов скрипта
    set fid_output_file_name [open "|${cam_aux_dir}ugwish ${cam_aux_dir}mom_save_as_win64.tcl $tk_return_value_file $current_program_name $mom_output_file_suffix $part_dir"]
    close $fid_output_file_name


    #Считывание результата работы скрипта
    if [file exists "$tk_return_value_file"] {
        set fid2 [open $tk_return_value_file r]
        set my_output_full_file_name [gets $fid2]
        close $fid2
        if {[string length $my_output_full_file_name] < 1} {
            MOM_abort "Canceled by User"
        }
    } else {
        MOM_abort "Cannot open file $tk_return_value_file"
    }
     
    #перенаправление вывода                                                      
    regsub -all {/} $my_output_full_file_name {\\}  my_output_full_file_name
    if [file exists "$my_output_full_file_name"] {
        file delete "$my_output_full_file_name"
    }

    #MOM_close_output_file $ptp_file_name
    #MOM_remove_file $ptp_file_name
    #set ptp_file_name $my_output_file_name
                                                          
                                                          
                                                         
    MOM_open_output_file $my_output_full_file_name

 

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

А может есть где-то в настройках, что бы не в окне информации программу смотреть, а запускать внешний редактор? Или всё левой пяткой через правое ухо?

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

@RVD1972 У меня получился tk mom_savefile.tcl:

wm withdraw .
update
set initfile ""
if { [llength $argv] == 1 } {
  set initfile [lindex $argv 0]
}
set types {
	{ {All Files} * }
	{ {Text Files} {.txt} }
	{ {NC Files} {.nc} }
}
global filename
set filename [tk_getOpenFile -filetypes $types -initialfile $initfile]
puts $filename
wm withdraw .; destroy .

И его вызов:

#=============================================================
proc SAVE_FILE { } {
#=============================================================

   global env

   if { [info exists env(PB_SUPPRESS_UGPOST_DEBUG)]  &&  $env(PB_SUPPRESS_UGPOST_DEBUG) == 1 } {
  return
   }


   global gPB

   if { [info exists gPB(PB_disable_MOM_pause)]  &&  $gPB(PB_disable_MOM_pause) == 1 } {
  return
   }

   global tcl_platform

   set cam_aux_dir  [MOM_ask_env_var UGII_CAM_AUXILIARY_DIR]
   
   global mom_sys_master_post mom_event_handler_file_name
   set mom_sys_master_post   "[file rootname $mom_event_handler_file_name]"
   set ext_file "[file dirname ${mom_sys_master_post}]/mom_savefile.tcl"
 
   if { [string match "*windows*" $tcl_platform(platform)] } {
      set ug_wish "ugwish.exe"
   } else {
      set ug_wish ugwish
   }

	global mom_output_file_full_name
	set path_to_file_b "$mom_output_file_full_name"

   if { [file exists ${cam_aux_dir}$ug_wish]  &&  [file exists $ext_file] } {
	  global path_to_file
	  set path_to_file ""
      set command_string [concat \"${cam_aux_dir}$ug_wish\" \"$ext_file\" \"$path_to_file_b\" ]		
      set path_to_file [EXEC $command_string] 

   } else {

      CATCH_WARNING "SAVEFILE not executed -- \"$ug_wish\" or \"mom_savefile.tcl\" not found"
   }
}

Передача пути идет в переменную path_to_file и сам файл tk может лежать где угодно. У меня лежит в папке с постом. Эта часть работает.

По какой-то причине MOM_open_output_file меня пока не слушает, хотя путь отформатирован. Пока не понял почему.

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

Паразитный дублирующий файл удалось убрать вместе с выводом в информационное окно. Для запуска внешнего редактора в самом конце "Program End Sequence" добавил блок

global my_output_full_file_name
MOM_close_output_file $my_output_full_file_name
exec C:/Program\ Files/Notepad++/notepad++.exe  $my_output_full_file_name &

Тк файл mom_save_as_win64.tcl лежит в  UGII_CAM_AUXILIARY_DIR директории

wm withdraw .
update
global output_file_name
set current_program_name ""
set output_file_suffix ""
set return_value_file_name ""
set part_dir ""


if { [llength $argv] == 4 } {
  set return_value_file_name [lindex $argv 0]
  set current_program_name [lindex $argv 1]
  set output_file_suffix   [lindex $argv 2]
  set part_dir   [lindex $argv 3]
}

set types {
    {{NC Files}        {.nc}        }
    {{Text Files}       {.txt}        }
    {{TCL Scripts}      {.tcl}        }
    {{C Source Files}   {.c}      TEXT}    
    {{PRT Files}        {.prt}        GIFF}
    {{All Files}        *             }
}

   set fid [open "$return_value_file_name" w]
   set output_file_name [tk_getSaveFile -defaultextension $output_file_suffix -initialdir $part_dir -filetypes $types -initialfile $current_program_name]
    puts $fid $output_file_name

   close $fid




wm withdraw .; destroy .

Возврат пути через системную переменную выглядит элегантно. Нужно будет переделать.

А так вроде всё работает...

 

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

Я вычитал, что mom_pause подвешивает NX на 64-битных машинах. Поэтому для них  сделали вариат mom_pause_win64, с вызовом "open" вместо "exec".А с "open" вернуть значение через "puts" не получится, как в вашем примере. Ну или я не знаю как это сделать.

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

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

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

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

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

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

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

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

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

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

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




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