UG programming uses workshop document to output the solution of tool list information

Use the (shopdoc_tool_list_text.TCL) file in the (X:Program FilesSiemensNX1926MACHresourceshop_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

Related Posts