Use the (shopdoc_tool_list_text.TCL) file in the (X:\Program Files\Siemens\NX1926\MACH\resource\shop_doc) directory to output the tool list.
.The output effect has not been changed!
Make some simple changes to make the tool list more beautiful (maybe I have some misunderstandings about aesthetics!!!)
Upload the changed (shopdoc_tool_list_text.TCL) file by the way, and replace it with “back up the original file”.
Attachment download: shopdoc_tool_list_text.tcl
Code:
############################################################################### # # S H O P D O C _ T O O L _ L I S T _ T E X T . T C L # ############################################################################### # # # Copyright(c) 1999/2000/2001/2002/2003/2004/2005/2006 UGS PLM Solutions # # Copyright(c) 2007 ~ 2018, SIEMENS PLM Software # # # ############################################################################### # # DESCRIPTION: # # This Tcl script produces a tools' list in text form from a selected object # on any view of the ONT. # ############################################################################### #@<DEL>@ TEXT ENCLOSED WITHIN DELETE MARKERS WILL BE REMOVED UPON RELEASE. # { #============================================================================== # Revisions: #-------- # NX1847 #-------- # Jun-22-2018 gsl - Added utility commands (INFO, EXEC & PAUSE) to facilitate debug # - Added MOM_QUERY_FAIL to avoid annoying warnings # - Added use of Tool_List to avoid duplicate tools being output # - Cleaned up unused codes ############################################################################### # } set __Debug_Shopdoc 0 # TEXT ENCLOSED WITHIN DELETE MARKERS WILL BE REMOVED UPON RELEASE. @<DEL>@ # #------------------------------------------------------------------------------ # Here you should define any global variables that will be used in any one # of the event handler. #------------------------------------------------------------------------------ set mom_source_directory [MOM_ask_env_var UGII_CAM_SHOP_DOC_DIR] source "$mom_source_directory/shopdoc_header.tcl" set setup_header 0 set Tool_List(MILL) [list] set Tool_List(DRILL) [list] set Tool_List(LATHE) [list] set Tool_List(OTHER) [list] array set Tool_Mill_array [list] array set Tool_Drill_array [list] array set Tool_Lathe_array [list]
###The following is the milling cutter information and format
set Mill_var_list [list mom_tool_number mom_tool_name mom_tool_diameter\
Mom_tool_corner1_radius mom_tool_flute_length mom_tool_length_adjust_register mom_tool_length_adjust_register]
set Mill_format_list [list “%-3s” “%-10s” “%-6.3f” “%-8.3f” “” %-5.0f” %-6d” “%-7d” ]
set Mill_title_list “\”Tool number\” \”Tool name\” \”Tool diameter\” \”Tool bottom fillet\” \”Tool edge length\” \”Tool length compensation\” \”Tool radius compensation\””
set Mill_title_format “format \”¦ %-3s¦ %-6s ¦ %-4s ¦ %-6s ¦ %-4s ¦ %-6s\ ¦ %-6s ¦\””
set Mill_index 0
###The following is the drill bit information and format
set Drill_var_list [list mom_tool_number mom_tool_name mom_tool_diameter\
Mom_tool_point_angle mom_tool_flute_length mom_tool_length_adjust_register]
set Drill_format_list [list “%-3s” “%-10s” “%-6.3f” “%-9.3f” %-5.0f” %-5.0f” %-6d ¦”]
set Drill_title_list “\”Tool No.\” \”Tool Name\” \”Tool Diameter\” \”Drill Bottom Angle\” \”Blade Length\” \”Tool Length Compensation\””
set Drill_title_format “format \” ¦ %-3s ¦ %-6s ¦ %-4s ¦ %-6s ¦ %-4s ¦ %-6s ¦\””
set Drill_index 0 ###The following is the information and format of the turning tool set Lathe_var_list [list mom_tool_name mom_tool_description mom_tool_nose_radius\ tool_orient mom_tool_length_adjust_register] set Lathe_format_list [list " %-13s" "%-10s" "%-12.3f" "%-12.3f" "%-12.3f" "%-10d"] set Lathe_title_list "\"Tool name\" \"Tool type\" \"Tool diameter\" \"Tool bottom fillet\" \"Blade length\" \"Tool number (H)\"" set Lathe_title_format "format \"%-20s %-30s %-10s %-15s %-10s\"" set Lathe_index 0 #============================================================================= proc INFO { args } { #============================================================================= if { [info exists ::__Debug_Shopdoc] && $::__Debug_Shopdoc } { MOM_output_to_listing_device [join $args] } } #============================================================================= proc EXEC { command_string {__wait 1} } { #============================================================================= # This command can be used in place of the intrinsic Tcl "exec" command # of which some problems have been reported under Win64 O/S and multi-core # processors environment. # # # Input: # command_string -- command string # __wait -- optional flag # 1 (default) = Caller will wait until execution is complete. # 0 (specified) = Caller will not wait. # # Return: # Results of execution # global tcl_platform if { $__wait } { if { [string match "windows" $tcl_platform(platform)] } { global env mom_logname # Create a temporary file to collect output set result_file "$env(TEMP)/${mom_logname}__EXEC_[clock clicks].out" # Clean up existing file regsub -all {\\} $result_file {/} result_file if { [file exists "$result_file"] } { file delete -force "$result_file" } set cmd [concat exec $command_string > \"$result_file\"] regsub -all {\\} $cmd {\\\\} cmd eval $cmd # Return results & clean up temporary file if { [file exists "$result_file"] } { set fid [open "$result_file" r] set result [read $fid] close $fid file delete -force "$result_file" return $result } } else { set cmd [concat exec $command_string] return [eval $cmd] } } else { if { [string match "windows" $tcl_platform(platform)] } { set cmd [concat exec $command_string &] regsub -all {\\} $cmd {\\\\} cmd return [eval $cmd] } else { return [exec $command_string &] } } } #============================================================================= proc PAUSE { args } { #============================================================================= # Revisions: #----------- # 05-19-10 gsl - Use EXEC command # 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] if { [string match "*windows*" $tcl_platform(platform)] } { set ug_wish "ugwish.exe" } else { set ug_wish ugwish } if { [file exists ${cam_aux_dir}$ug_wish] && [file exists ${cam_aux_dir}mom_pause.tcl] } { set title "" set msg "" if { [llength $args] == 1 } { set msg [lindex $args 0] } if { [llength $args] > 1 } { set title [lindex $args 0] set msg [lindex $args 1] } set command_string [concat \"${cam_aux_dir}$ug_wish\" \"${cam_aux_dir}mom_pause.tcl\" \"$title\" \"$msg\"] set res [EXEC $command_string] switch [string trim $res] { no { set gPB(PB_disable_MOM_pause) 1 } cancel { set gPB(PB_disable_MOM_pause) 1 uplevel #0 { if { [llength [info commands "MOM_abort_program"]] } { MOM_abort_program "*** User Abort Post Processing *** " } else { MOM_abort "*** User Abort Post Processing *** " } } } default { return } } } else { MOM_output_to_listing_device "PAUSE not executed -- \"$ug_wish\" or \"mom_pause.tcl\" not found" } } #============================================================================= proc MOM_QUERY_FAIL { } { #============================================================================= # This handler is triggered when an object does not satisfy the query (QRY) condition. # It allows some variables to be unset. # # Jun-22-2018 gsl - Added this handler to prevent unnecessary warnings. # } #============================================================================= proc MOM_Start_Part_Documentation {} { #============================================================================= global mom_output_file_directory mom_output_file_basename global mom_sys_output_file_suffix set mom_sys_output_file_suffix "txt" MOM_close_output_file ${mom_output_file_directory}${mom_output_file_basename}.${mom_sys_output_file_suffix} file delete -force ${mom_output_file_directory}${mom_output_file_basename}.${mom_sys_output_file_suffix} } #============================================================================= proc MOM_End_Part_Documentation {} { #============================================================================= global Tool_Mill_array global Tool_Drill_array global Tool_Lathe_array global Mill_title_list global Drill_title_list global Lathe_title_list global Mill_title_format global Drill_title_format global Lathe_title_format global Mill_index global Drill_index global Lathe_index ####Output milling cutter format if { [array size Tool_Mill_array] > 0 } { MOM_output_literal " " MOM_output_literal "The following is a list of milling cutters:" MOM_output_literal "------------------------------------------------------------------------------------" set output_str $Mill_title_format append output_str " " append output_str $Mill_title_list MOM_output_literal [eval $output_str] MOM_output_literal "------------------------------------------------------------------------------------" for { set i 0 } { $i < $Mill_index } { incr i } { MOM_output_literal $Tool_Mill_array($i) #MOM_output_literal " " } MOM_output_literal "------------------------------------------------------------------------------------" } if { [array size Tool_Drill_array] > 0 } { MOM_output_literal " " MOM_output_literal "The following is a list of drill bits:" MOM_output_literal "----------------------------------------------------------------------" set output_str $Drill_title_format append output_str " " append output_str $Drill_title_list MOM_output_literal [eval $output_str] MOM_output_literal "----------------------------------------------------------------------" for { set i 0 } { $i < $Drill_index } { incr i } { MOM_output_literal $Tool_Drill_array($i) } MOM_output_literal "----------------------------------------------------------------------" } if { [array size Tool_Lathe_array] > 0 } { MOM_output_literal " " MOM_output_literal "The following is a list of turning tools:" MOM_output_literal "-----------------------------------------------------------------------------------" set output_str $Lathe_title_format append output_str " " append output_str $Lathe_title_list MOM_output_literal [eval $output_str] MOM_output_literal "-----------------------------------------------------------------------------------" for { set i 0 } { $i < $Lathe_index } { incr i } { MOM_output_literal $Tool_Lathe_array($i) MOM_output_literal " " } MOM_output_literal "-----------------------------------------------------------------------------------" } } #=============================================================================== proc MOM_SETUP_HDR {} { #=============================================================================== global setup_header # Calls the setup header if { $setup_header == 0} \ { Setup_Header_text MOM_output_literal " " MOM_output_literal " List of tools" set setup_header 1 } } #============================================================================= proc MOM_SETUP_BODY {} { #============================================================================= } #============================================================================= proc MOM_SETUP_FTR {} { #============================================================================= } #============================================================================= proc MOM_MEMBERS_HDR {} { #============================================================================= } #============================================================================= proc MOM_MEMBERS_FTR { } { #============================================================================= } #=============================================================================== proc MOM_TOOL_BODY {} { #=============================================================================== global mom_tool_name global mom_tool_type global mom_template_subtype global mom_tool_diameter global mom_tool_nose_radius global mom_tool_length_adjust_register global mom_tool_orientation global mom_tool_corner1_radius global mom_tool_point_angle global mom_tool_flute_length global mom_drive_point_diameter global mom_tool_ug_type global mom_tool_description global Tool_Mill_array global Tool_Drill_array global Tool_Lathe_array global mom_tool_number global Mill_var_list global Mill_format_list global Mill_index global Drill_var_list global Drill_format_list global Drill_index global Lathe_var_list global Lathe_format_list global Lathe_index MapToolType tool_type #<Jun-22-2018 gsl> Skip tools already listed if { [lsearch $::Tool_List($tool_type) $::mom_tool_name] < 0 } { lappend ::Tool_List($tool_type) $::mom_tool_name } else { return } switch $tool_type \ { "MILL" { # user defined tool. mom_tool_diameter is mom_drive_point_diameter if { $mom_tool_ug_type == 15 } { if { [info exists mom_drive_point_diameter] } { set mom_tool_diameter $mom_drive_point_diameter } } DOC_get_format_str Mill_var_list Mill_format_list output_str set Tool_Mill_array($Mill_index) [eval $output_str] incr Mill_index } "DRILL" { set pi [expr 2 * asin(1.0)] set mom_tool_point_angle [expr [expr 180 / $pi] * \ $mom_tool_point_angle] DOC_get_format_str Drill_var_list Drill_format_list output_str set Tool_Drill_array($Drill_index) [eval $output_str] incr Drill_index } "LATHE" { set mom_tool_orientation [expr [expr 180 / 3.14] * \ $mom_tool_orientation] DOC_get_format_str Lathe_var_list Lathe_format_list output_str set Tool_Lathe_array($Lathe_index) [eval $output_str] incr Lathe_index } } } #============================================================================== proc DOC_Start_Part_Documentation {} { #============================================================================== # Calls the shopdocs header Open_Files ShopDoc_Header_text } #============================================================================== proc DOC_parse_excel_html_template_file {} { #============================================================================== } #============================================================================== proc DOC_prepare_folder {} { #============================================================================== } #============================================================================== proc DOC_get_format_str { VAR_LIST FORMAT_LIST OUTPUT_STR } { #============================================================================== upvar $VAR_LIST var_list upvar $FORMAT_LIST format_list upvar $OUTPUT_STR output_str set output_str "" # Check the length of var_list and format_list if { [llength $var_list] != [llength $format_list] } { return } set start_str "format \"" set end_str "" set index 0 foreach var $var_list { global $var set fmt_str [lindex $format_list $index] if { [info exists $var] } { # there may be {"} in the value(such as second) append end_str " \"" set tmp_value [set $var] regsub -all "\"" $tmp_value "\\\"" tmp_value append end_str $tmp_value append end_str "\"" append start_str "$fmt_str " } else { append end_str " \"--\"" if [string match "*s" $fmt_str] { append start_str "$fmt_str " } else { set dot_index [string first "." $fmt_str] if { $dot_index != -1 } { set fmt_str [string range $fmt_str 0 [expr $dot_index -1]] } else { set len [string length $fmt_str] set fmt_str [string range $fmt_str 0 [expr $len - 2]] } append start_str "$fmt_str" "s " } } incr index } append output_str "$start_str" "\"" "$end_str" }
Please keep the source and address of this article for reprinting:UG programming uses workshop document to output the solution of tool list information
Reprint Statement: If there are no special instructions, all articles on this site are original. Please indicate the source for reprinting.:Cnc Machine Wiki,Thanks!^^