Initial commit
This commit is contained in:
44
feeds_speeds/ascii/cut_methods.dat
Normal file
44
feeds_speeds/ascii/cut_methods.dat
Normal file
@@ -0,0 +1,44 @@
|
||||
# CUT_METHODS.DAT
|
||||
##########################################################################
|
||||
#
|
||||
# PURPOSE:
|
||||
#
|
||||
# This is the database file used for defining "Cut Method" in
|
||||
# Machining method. The library reference is used for Feeds and
|
||||
# Speeds Specifications.
|
||||
#
|
||||
# REVISIONS:
|
||||
# Sl.No. Date Name Reason
|
||||
# 01 06/15/99 Subhash Initial
|
||||
# 02 07/31/99 Subhash Include Format statement
|
||||
# 03 10/29/99 Murthy Changes to data and file description
|
||||
# 04 29-jun-2004 Mark Rief Add 3 HSM
|
||||
# 05 11-Oct-2005 rlm Update for HSM data
|
||||
# 06 18-Apr-2019 Reinier Capelle Change text for OPD0_00011
|
||||
#
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
##
|
||||
## The following key words for Attribute ids are defined
|
||||
##
|
||||
## LIBREF cutmthd_libref - Unique record identifier (Library Reference)
|
||||
## MODE machine_mode - Machine mode - MILL
|
||||
## - DRILL
|
||||
## - LATHE
|
||||
## NAME name - Name of Cutting Method
|
||||
## (appears on the label in method view)
|
||||
#########################################################################
|
||||
# --------+-------------------------------+---------------------
|
||||
FORMAT LIBRF MODE NAME DESCRIPTION
|
||||
#---------+--------------------------------+--------------------
|
||||
DATA|OPD0_00001|LATHE|TURN, POINT|0
|
||||
#DATA|OPD0_00002|DRILL|BORING|0
|
||||
#DATA|OPD0_00003|LATHE|TURN, CUTOFF|0
|
||||
#DATA|OPD0_00006|MILL|FACE MILLING|0
|
||||
#DATA|OPD0_00007|MILL|END MILLING|0
|
||||
#DATA|OPD0_00008|MILL|SLOTTING|0
|
||||
#DATA|OPD0_00010|MILL|SIDE/SLOT MILL|0
|
||||
DATA|OPD0_00011|DRILL|DRILLING|With limited Catalogue Machining Data
|
||||
DATA|OPD0_00021|MILL|HSM ROUGH MILLING|HSM - With Proven Machining Data
|
||||
DATA|OPD0_00022|MILL|HSM SEMI FINISH MILLING|HSM - With Proven Machining Data
|
||||
DATA|OPD0_00023|MILL|HSM FINISH MILLING|HSM - With Proven Machining Data
|
||||
64
feeds_speeds/ascii/cut_methods.def
Normal file
64
feeds_speeds/ascii/cut_methods.def
Normal file
@@ -0,0 +1,64 @@
|
||||
# *CUT_METHODS.DEF
|
||||
##########################################################################
|
||||
#
|
||||
# PURPOSE:
|
||||
#
|
||||
# This is definition file for defining "Cut Method" in
|
||||
# Machining method from a database.
|
||||
#
|
||||
# REVISIONS:
|
||||
#
|
||||
# 00 23Mar99 Murthy R Mandaleeka Initial Version
|
||||
# 01 26JUL99 Subhash Changed order of attributes
|
||||
# presented
|
||||
# 02 29OCT99 Murthy R Mandaleeka Changed RSET names
|
||||
# 03 15Jan2003 rlm Add alias for Description and
|
||||
# add it to the RSET
|
||||
##########################################################################
|
||||
DB_PREFIX "DB("
|
||||
DB_SUFFIX ")"
|
||||
ESS_PREFIX "ESS("
|
||||
ESS_SUFFIX ")"
|
||||
|
||||
DB_ALIAS libref
|
||||
{
|
||||
DB_ID LIBRF
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "libref"
|
||||
RSET_NAME "Library Reference"
|
||||
}
|
||||
|
||||
DB_ALIAS mode
|
||||
{
|
||||
DB_ID MODE
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "mode"
|
||||
RSET_NAME "Mode"
|
||||
}
|
||||
|
||||
DB_ALIAS name
|
||||
{
|
||||
DB_ID NAME
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "name"
|
||||
RSET_NAME "Name"
|
||||
}
|
||||
|
||||
DB_ALIAS description
|
||||
{
|
||||
DB_ID DESCRIPTION
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "description"
|
||||
RSET_NAME "Description"
|
||||
}
|
||||
|
||||
LIBREF libref
|
||||
|
||||
CLASS CUT_METHOD
|
||||
{
|
||||
TYPE CUT_METHOD
|
||||
QUERY "[1] == [1]"
|
||||
DIALOG libref mode name
|
||||
RSET libref mode name description
|
||||
UI_NAME "Cutting Method"
|
||||
}
|
||||
485
feeds_speeds/ascii/cut_methods.tcl
Normal file
485
feeds_speeds/ascii/cut_methods.tcl
Normal file
@@ -0,0 +1,485 @@
|
||||
# *CUT_METHODS.TCL
|
||||
###############################################################################
|
||||
# cut_methods.tcl - DBC Event Handler for Cut Methods database stored
|
||||
# as ascii file
|
||||
###############################################################################
|
||||
# REVISIONS
|
||||
# Date Who Reason
|
||||
# 03/24/99 Murthy Mandaleeka Initial
|
||||
# 05/19/99 Murthy Mandaleeka New Environment Variable
|
||||
# 07/21/99 Subhash Included dbc_general_ascii.tcl file
|
||||
# 07/21/99 Subhash Used general functions for
|
||||
# opening and reading dat files.
|
||||
# 08/06/99 Subhash Removed some unwanted comments
|
||||
# 08/20/99 Subhash Added procedure
|
||||
# ASC_file_execute_query_check_attr
|
||||
# to search for the records with the
|
||||
# same mode as the operation.
|
||||
# This procedure is a modification of
|
||||
# ASC_file_execute_query
|
||||
# 11/11/2003 rlm Add ASC_output_header
|
||||
# 01/30/2004 rlm Move ASC_write to dbc_ascii_general
|
||||
# 02/12/2004 rlm Add last revision information
|
||||
# 06/28/2011 Peter Mao 6556892 Add DBC_ask_library_values
|
||||
# 08/10/2020 Yusheng Chen 9847704 Initialize file_unit in DBC_retrieve
|
||||
# 08/12/2023 Xi Wang Add ASC_translate_att_alias in DBC_translate_att_alias to fix query
|
||||
##############################################################################
|
||||
#
|
||||
# The format of each line in the text file is:
|
||||
#
|
||||
# cut_method_index - Integer
|
||||
# machine_mode - String
|
||||
# cut_method - String
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
#---------------------------------------------
|
||||
# Non DBC Global Variables
|
||||
#---------------------------------------------
|
||||
#MOM_set_debug_mode ON
|
||||
#set dbFileName "[MOM_ask_env_var UGII_CAM_LIBRARY_FEEDS_SPEEDS_DATA_DIR]cut_methods.dat"
|
||||
set DEBUG 0
|
||||
set fPointer ""
|
||||
|
||||
#---------------------------------------------
|
||||
# Global variables set by DBC for Input/Output
|
||||
#---------------------------------------------
|
||||
set dbc_lhs_exp ""
|
||||
set dbc_rhs_exp ""
|
||||
set dbc_relop ""
|
||||
set dbc_query ""
|
||||
set dbc_subqry1 ""
|
||||
set dbc_subqry2 ""
|
||||
set dbc_boolop ""
|
||||
set dbc_class_name ""
|
||||
set dbc_attr_count 0
|
||||
set dbc_attr_id ""
|
||||
set dbc_query_count 0
|
||||
set dbc_cutmthd_libref ""
|
||||
set dbc_var_list ""
|
||||
set dbc_machine_mode "MILL"
|
||||
set asc_debug 0
|
||||
|
||||
|
||||
#---------------------------------------------
|
||||
proc ASC_t_create_filename {env_var_name filename} \
|
||||
{
|
||||
#
|
||||
# Creates a complete filename by evaluating an environment variable
|
||||
# for the directory information
|
||||
#
|
||||
set env_var [MOM_ask_env_var $env_var_name]
|
||||
if { $env_var == "" } \
|
||||
{
|
||||
set message "Can't read environment variable $env_var_name"
|
||||
MOM_abort "\n $message"
|
||||
}
|
||||
|
||||
set fname ""
|
||||
set fname [append fname $env_var $filename]
|
||||
|
||||
return $fname
|
||||
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc MOM__boot {} {
|
||||
#---------------------------------------------
|
||||
|
||||
# source some general procedures
|
||||
|
||||
#
|
||||
# dbc_ascii_general.tcl
|
||||
#
|
||||
set filename \
|
||||
[ASC_t_create_filename "UGII_UG_LIBRARY_DIR" "dbc_ascii_general.tcl"]
|
||||
|
||||
|
||||
if { [catch {source $filename}] == "1" } \
|
||||
{
|
||||
set message "Can't load .tcl file: $filename"
|
||||
MOM_abort "\n $message"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
proc MOM__halt {} \
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
#------------------------------------------------------------
|
||||
proc DBC_init_db { } \
|
||||
{
|
||||
global DEBUG
|
||||
global dataBase
|
||||
global lastRowNumber
|
||||
global dbFileName
|
||||
global fPointer
|
||||
global asc_file_name
|
||||
|
||||
set asc_part_units ""
|
||||
|
||||
set data_unit 0
|
||||
set mode 0
|
||||
|
||||
|
||||
#
|
||||
# Set the filename for ASCII Data File
|
||||
#
|
||||
ASC_set_data_file_name
|
||||
|
||||
#
|
||||
# And load the file into memory
|
||||
#
|
||||
# ASC_load_data_file $asc_file_name $data_unit $mode
|
||||
# Since we are now reading the records one by one, no need to load
|
||||
# the data file. ( Changed on 20-Aug-99 )
|
||||
|
||||
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc ASC_set_data_file_name {} {
|
||||
#---------------------------------------------
|
||||
global dbc_part_units
|
||||
global asc_file_name
|
||||
global asc_part_units
|
||||
|
||||
MOM_ask_part_units ;# writes to dbc_part_units
|
||||
|
||||
set env_var UGII_CAM_LIBRARY_FEEDS_SPEEDS_DATA_DIR
|
||||
set asc_file_name [ASC_t_create_filename "$env_var" "cut_methods.dat"]
|
||||
set asc_part_units $dbc_part_units
|
||||
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc DBC_translate_att_alias {} {
|
||||
#---------------------------------------------
|
||||
global DEBUG
|
||||
global dbc_alias
|
||||
global dbc_id
|
||||
|
||||
# The input dbc_id is the column in the RSET
|
||||
# set dbc_id "\$dataBase($dbc_id)"
|
||||
ASC_translate_att_alias
|
||||
}
|
||||
|
||||
#------------------------------------------------------------
|
||||
proc DBC_create_criterion { } {
|
||||
#------------------------------------------------------------
|
||||
global DEBUG
|
||||
global dbc_lhs_exp
|
||||
global dbc_rhs_exp
|
||||
global dbc_relop
|
||||
global dbc_query
|
||||
|
||||
# set dbc_query "\[$dbc_lhs_exp\] $dbc_relop \[$dbc_rhs_exp\]"
|
||||
|
||||
ASC_create_criterion
|
||||
|
||||
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_create_query { } {
|
||||
#------------------------------------------------------------------------
|
||||
global DEBUG
|
||||
global dbc_query
|
||||
global dbc_subqry1
|
||||
global dbc_subqry2
|
||||
global dbc_boolop
|
||||
set dbc_query "$dbc_subqry1 $dbc_boolop $dbc_subqry2"
|
||||
|
||||
ASC_create_query
|
||||
|
||||
}
|
||||
#---------------------------------------------
|
||||
proc ASC_file_execute_query_check_attr { file_name file_unit } \
|
||||
{
|
||||
#
|
||||
# Executes query on cut_methods file. This procedure is derived from
|
||||
# ASC_file_execute_query.It is slightly modified so that an attribute
|
||||
# of the record can be checked for some value and then populated to Rset
|
||||
#
|
||||
# Input filename - name of the database file, in this case cut_methods.dat
|
||||
#
|
||||
# file_unit - Unit of the records, in this case none
|
||||
#
|
||||
# Returns 0 -> Succesful Loading
|
||||
# 1 -> File open error
|
||||
#
|
||||
global asc_debug
|
||||
|
||||
global dbc_class_name
|
||||
global dbc_query
|
||||
global dbc_query_count
|
||||
global dbc_attr_count
|
||||
global dbc_attr_aliases
|
||||
global dbc_attr_id
|
||||
|
||||
global asc_database
|
||||
global asc_database_count
|
||||
global dbc_machine_mode
|
||||
|
||||
global asc_next_line
|
||||
if { $asc_debug == "1" } {
|
||||
puts "ASC_file_execute_query"
|
||||
puts "dbc_class_name = $dbc_class_name"
|
||||
puts "dbc_query = $dbc_query"
|
||||
}
|
||||
|
||||
# The following procedure writes to the variables
|
||||
# dbc_attr_count, dbc_attr_aliases
|
||||
|
||||
DBC_load_rset_data
|
||||
|
||||
#
|
||||
# Open the file
|
||||
#
|
||||
set ret_code [catch {open $file_name "r"} fp]
|
||||
if { $ret_code } \
|
||||
{
|
||||
return 1
|
||||
}
|
||||
|
||||
|
||||
ASC_init_database
|
||||
#
|
||||
# Loop over all the DATA records
|
||||
#
|
||||
# The db_row variable has to be initialized (see also ASC_translate_att_alias)
|
||||
|
||||
set db_row 0
|
||||
set rset_row 0
|
||||
|
||||
|
||||
set asc_next_line ""
|
||||
while {[ASC_read_next_db_object $fp $file_name $file_unit $db_row] >= 0} \
|
||||
{
|
||||
|
||||
set local_dbc_machine_mode [ASC_ask_att_val MODE $db_row "" 0 flag]
|
||||
|
||||
if {[string compare $dbc_machine_mode $local_dbc_machine_mode] == 0 ||
|
||||
[string compare $dbc_machine_mode "ALL"] == 0 } \
|
||||
{
|
||||
|
||||
set dum [catch {expr $dbc_query} ret]
|
||||
if { $ret == "1" } \
|
||||
{
|
||||
ASCi_write_to_rset fp $dbc_attr_count dbc_attr_aliases \
|
||||
$rset_row $db_row
|
||||
incr rset_row
|
||||
incr dbc_query_count
|
||||
}
|
||||
|
||||
catch {unset asc_database}
|
||||
set asc_database_count 0
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if { $asc_debug == "1" } {
|
||||
puts "End of ASC_file_execute_query "
|
||||
puts "Count: $dbc_query_count"
|
||||
}
|
||||
|
||||
close $fp
|
||||
|
||||
return 0
|
||||
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_execute_query { } {
|
||||
#------------------------------------------------------------------------
|
||||
global asc_units
|
||||
global file_unit
|
||||
global asc_file_name
|
||||
|
||||
set file_unit $asc_units(unknown)
|
||||
ASC_file_execute_query_check_attr $asc_file_name $file_unit
|
||||
|
||||
}
|
||||
#---------------------------------------------------------------------
|
||||
proc DBC_retrieve { } {
|
||||
#---------------------------------------------------------------------
|
||||
global DEBUG
|
||||
global dbc_libref
|
||||
global dbc_retrieve_var_list
|
||||
global dataBase
|
||||
|
||||
global dbc_machine_mode
|
||||
global dbc_name
|
||||
global dbc_description
|
||||
global dbFileName
|
||||
global fPointer
|
||||
global asc_debug
|
||||
global asc_database_count
|
||||
global asc_file_name
|
||||
global file_unit
|
||||
|
||||
# intialize file_unit
|
||||
if { ![info exists file_unit] } {
|
||||
global dbc_part_units
|
||||
global asc_units
|
||||
|
||||
MOM_ask_part_units ;# writes to dbc_part_units
|
||||
|
||||
if { $dbc_part_units == "metric" } {
|
||||
set file_unit $asc_units(mm)
|
||||
} else {
|
||||
set file_unit $asc_units(inch)
|
||||
}
|
||||
}
|
||||
|
||||
if { $asc_debug == "1" } \
|
||||
{
|
||||
puts " =========================================="
|
||||
puts " procedure DBC_retrieve for cut methods"
|
||||
puts " libref -> $dbc_libref"
|
||||
}
|
||||
|
||||
#
|
||||
# Look for the desired libref
|
||||
#
|
||||
|
||||
set found 2
|
||||
|
||||
set found [ASC_file_find_object_by_att $asc_file_name $file_unit \
|
||||
LIBRF $dbc_libref db_row]
|
||||
|
||||
if { $found == 2 } \
|
||||
{
|
||||
set message "Error retrieving Cut Method from external library."
|
||||
set message "$message \n Cut Method with the library reference $dbc_libref"
|
||||
set message "$message \n does not exist in the"
|
||||
set message "$message \n ASCII Data File: $asc_file_name"
|
||||
MOM_abort "\n $message"
|
||||
}
|
||||
|
||||
if { $found == 1 } \
|
||||
{
|
||||
set message "Error retrieving Cut Method from external library."
|
||||
set message "$message \n ASCII Data File: $asc_file_name"
|
||||
set message "$message \n does not exist."
|
||||
MOM_abort "\n $message"
|
||||
}
|
||||
|
||||
#
|
||||
# Get the Machining Mode
|
||||
#
|
||||
set dbc_machine_mode [ASC_ask_att_val MODE $db_row "" 0 flag]
|
||||
|
||||
#
|
||||
# Get the Cut Method Name
|
||||
#
|
||||
set dbc_name [ASC_ask_att_val NAME $db_row "" 0 flag]
|
||||
|
||||
}
|
||||
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_write { } {
|
||||
#------------------------------------------------------------------------
|
||||
global asc_database_name
|
||||
|
||||
set asc_database_name "cut_methods.dat"
|
||||
ASC_write
|
||||
}
|
||||
|
||||
#---------------------------------------------------------------------
|
||||
proc ASC_output_header { fileid } {
|
||||
#---------------------------------------------------------------------
|
||||
global dbc_attr_count
|
||||
global dbc_attr_aliases
|
||||
global dbc_attr_id
|
||||
global dbc_logname
|
||||
|
||||
|
||||
set daytime [clock seconds]
|
||||
set out_daytime [clock format $daytime -format "%a %b %d %Y %I:%M %p"]
|
||||
|
||||
set headerMessage "# CUT_METHODS.DAT
|
||||
##########################################################################
|
||||
#
|
||||
# PURPOSE:
|
||||
#
|
||||
# This is the database file used for defining Cut Method in
|
||||
# Machining method. The library reference is used for Feeds and
|
||||
# Speeds Specifications.
|
||||
#
|
||||
#
|
||||
# REVISED:
|
||||
# $dbc_logname $out_daytime
|
||||
#
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
##
|
||||
## The following key words for Attribute ids are defined
|
||||
##
|
||||
## LIBREF cutmthd_libref - Unique record identifier (Library Reference)
|
||||
## MODE machine_mode - Machine mode - MILL
|
||||
## - DRILL
|
||||
## - LATHE
|
||||
## NAME name - Name of Cutting Method
|
||||
## (appears on the label in method view)
|
||||
#########################################################################
|
||||
# --------+-------------------------------+---------------------"
|
||||
|
||||
|
||||
puts $fileid "$headerMessage"
|
||||
|
||||
# load the database structure
|
||||
DBC_load_rset_data
|
||||
|
||||
|
||||
# output FORMAT line
|
||||
set format_line "FORMAT"
|
||||
for {set i 0} {$i < $dbc_attr_count} {incr i} \
|
||||
{
|
||||
DBC_ask_attr_id $dbc_attr_aliases($i)
|
||||
set format_line "$format_line $dbc_attr_id"
|
||||
}
|
||||
puts $fileid $format_line
|
||||
puts $fileid "#--------------------------------------------------------------------------------"
|
||||
}
|
||||
|
||||
proc DBC_ask_library_values {} \
|
||||
{
|
||||
global dbc_libref
|
||||
global dbc_db_ids_count
|
||||
global dbc_db_ids
|
||||
global dbc_event_error
|
||||
global asc_file_name
|
||||
global asc_units
|
||||
global dbc_return_status
|
||||
global dbc_db_ids_value
|
||||
|
||||
# Do not change this string
|
||||
set NO_MATCH "No matching record found for $dbc_libref in $asc_file_name"
|
||||
|
||||
set dbc_return_status 0
|
||||
#
|
||||
# Look for the desired libref from the file directly
|
||||
#
|
||||
set found [ASC_file_find_object_by_att $asc_file_name $asc_units(unknown) \
|
||||
LIBRF $dbc_libref db_row]
|
||||
|
||||
#
|
||||
# and set the desired values
|
||||
#
|
||||
if {$found == 1 || $found == 2} {
|
||||
set dbc_event_error $NO_MATCH
|
||||
set dbc_return_status 1
|
||||
} else {
|
||||
for { set inx 0 } { $inx < $dbc_db_ids_count } { incr inx } \
|
||||
{
|
||||
set dbc_db_ids_value($dbc_db_ids($inx)) \
|
||||
[ASC_ask_att_val $dbc_db_ids($inx) $db_row "" "" flag]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
2333
feeds_speeds/ascii/feeds_speeds.dat
Normal file
2333
feeds_speeds/ascii/feeds_speeds.dat
Normal file
File diff suppressed because it is too large
Load Diff
122
feeds_speeds/ascii/feeds_speeds.def
Normal file
122
feeds_speeds/ascii/feeds_speeds.def
Normal file
@@ -0,0 +1,122 @@
|
||||
# *FEEDS_SPEEDS.DEF
|
||||
###############################################################################
|
||||
# Definitions File for Speeds/Feeds Database implemented in an ASCII text file
|
||||
###############################################################################
|
||||
# REVISIONS:
|
||||
#
|
||||
# 00 23Mar99 Murthy R Mandaleeka Initial Version
|
||||
# 01 26JUL99 Subhash Changed order of attributes
|
||||
# presented
|
||||
# 02 29Oct99 Murthy R Mandaleeka Removed options
|
||||
# 03 17Feb2004 rlm Add aliases for all fields
|
||||
##########################################################################
|
||||
DB_PREFIX "db("
|
||||
DB_SUFFIX ")"
|
||||
ESS_PREFIX "ess("
|
||||
ESS_SUFFIX ")"
|
||||
|
||||
################################################################################
|
||||
# The list of DB_ALIAS
|
||||
#
|
||||
# DB_ALIAS <alias>
|
||||
# {
|
||||
# DB_ID < identifier of parameter in a UG part file >
|
||||
# DB_ID_TYPE < Type of the identifier >
|
||||
# d _ double
|
||||
# i _ integer
|
||||
# s _ string
|
||||
# }
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
|
||||
DB_ALIAS libref
|
||||
{
|
||||
DB_ID LIBRF
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Speeds/Feeds Key"
|
||||
}
|
||||
|
||||
DB_ALIAS optype
|
||||
{
|
||||
DB_ID OPERTYPE
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Operation type "
|
||||
RSET_NAME "Cut Method"
|
||||
}
|
||||
|
||||
|
||||
DB_ALIAS ptmtl
|
||||
{
|
||||
DB_ID PARTMAT
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Material Name"
|
||||
RSET_NAME "Part Material"
|
||||
}
|
||||
|
||||
DB_ALIAS tlmtl
|
||||
{
|
||||
DB_ID TOOLMAT
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Tool Material"
|
||||
RSET_NAME "Tool Material"
|
||||
}
|
||||
|
||||
DB_ALIAS depthinch
|
||||
{
|
||||
DB_ID DPT_CUT_IN
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Depth"
|
||||
RSET_NAME "Depth - Inch"
|
||||
}
|
||||
|
||||
DB_ALIAS depthmm
|
||||
{
|
||||
DB_ID DPT_CUT_MM
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Depth"
|
||||
RSET_NAME "Depth - mm"
|
||||
}
|
||||
|
||||
DB_ALIAS speedinch
|
||||
{
|
||||
DB_ID SURF_SPEED_FPM
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Speed"
|
||||
RSET_NAME "Speed - Inch"
|
||||
}
|
||||
|
||||
DB_ALIAS speedmm
|
||||
{
|
||||
DB_ID SURF_SPEED_MPM
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Speed"
|
||||
RSET_NAME "Speed - mm"
|
||||
}
|
||||
|
||||
DB_ALIAS feedinch
|
||||
{
|
||||
DB_ID FEED_IPT
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "feed"
|
||||
RSET_NAME "Feed - Inch"
|
||||
}
|
||||
|
||||
DB_ALIAS feedmm
|
||||
{
|
||||
DB_ID FEED_MMPT
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "feed"
|
||||
RSET_NAME "Feed - mm"
|
||||
}
|
||||
|
||||
LIBREF optype
|
||||
|
||||
CLASS FEEDS_SPEEDS
|
||||
{
|
||||
TYPE FEEDS_SPEEDS
|
||||
QUERY "[1] == [%]"
|
||||
DIALOG libref optype ptmtl tlmtl depthinch speedinch feedinch
|
||||
RSET libref optype ptmtl tlmtl depthinch depthmm speedinch speedmm feedinch feedmm
|
||||
UI_NAME "CAM Speeds and Feeds Library"
|
||||
}
|
||||
489
feeds_speeds/ascii/feeds_speeds.tcl
Normal file
489
feeds_speeds/ascii/feeds_speeds.tcl
Normal file
@@ -0,0 +1,489 @@
|
||||
# *FEEDS_SPEEDS.TCL
|
||||
###############################################################################
|
||||
# feeds_speeds.tcl - DBC Event Handler for database stored as ascii file
|
||||
###############################################################################
|
||||
# Revisions
|
||||
# Date Who Reason
|
||||
# 03/24/99 Murthy Mandaleeka Initial
|
||||
# 05/19/99 Murthy Mandaleeka New Environment Variable
|
||||
# 07/21/99 Subhash Included dbc_general_ascii.tcl file
|
||||
# 07/21/99 Subhash Used general functions for
|
||||
# opening and reading dat files.
|
||||
# 08/06/99 Subhash Changed some functions to improve performance
|
||||
# 08/19/99 Subhash Changed the logic so that feed and speed value
|
||||
# is picked from a range depending on depth of cut
|
||||
# 09/01/99 Gopal Srinath In the retrieve proc removed call to
|
||||
# MOM_abort.
|
||||
# 01/15/02 Murthy Mandaleeka Relate more feed types as percentages of Cut feed.
|
||||
# 06/06/02 Murthy Mandaleeka Update depth of cut for Cavity Milling Operations
|
||||
# 17Feb2004 rlm Add support for execute_query
|
||||
# 24May2004 Murthy Mandaleeka Fix StepOver Feedrate Percent problem.
|
||||
# 06Dec2004 rlm 1369488 Add DBC_execute_query_for_count
|
||||
# 16Dec2004 rlm 2044460 Add more Cut Depth variables
|
||||
# 26Oct2018 Shorbojeet Das PR8340732: Add customization support for double precision control.
|
||||
################################################################################
|
||||
#
|
||||
# The format of each line in the text file is:
|
||||
#
|
||||
# libref optype ptmtl tlmtl speed feed
|
||||
#
|
||||
# libref is a string
|
||||
# optype is "Milling" "Turning" "Drilling"
|
||||
# ptmtl is code number for now
|
||||
# tlmtl is "HSS" "Carbide" "CBN"
|
||||
# depth is a double
|
||||
# speed is a double
|
||||
# feed is a double
|
||||
#
|
||||
# The DB_ID of a DB_ALIAS is its field number in the line (0-based)
|
||||
###############################################################################
|
||||
#MOM_set_debug_mode ON
|
||||
#---------------------------------------------
|
||||
# Non DBC Global Variables
|
||||
#---------------------------------------------
|
||||
#set dbFileName "[MOM_ask_env_var UGII_CAM_LIBRARY_FEEDS_SPEEDS_DATA_DIR]feeds_speeds.dat" ; # The ASCII Database File
|
||||
set DEBUG 1
|
||||
set fPointer ""
|
||||
|
||||
#---------------------------------------------
|
||||
# Global variables set by DBC for Input/Output
|
||||
#---------------------------------------------
|
||||
set dbc_lhs_exp ""
|
||||
set dbc_rhs_exp ""
|
||||
set dbc_relop ""
|
||||
set dbc_query ""
|
||||
set dbc_subqry1 ""
|
||||
set dbc_subqry2 ""
|
||||
set dbc_boolop ""
|
||||
set dbc_class_name ""
|
||||
set dbc_attr_count 0
|
||||
set dbc_attr_id ""
|
||||
set dbc_query_count 0
|
||||
set dbc_libref ""
|
||||
set dbc_var_list ""
|
||||
set dbc_tool_diameter ""
|
||||
set dbc_tool_height ""
|
||||
set dbc_part_units "english" ; # ( english : 0 , metric : 1)
|
||||
set dbc_cutmthd_libref ""
|
||||
set dbc_part_material_libref ""
|
||||
set dbc_tool_material_libref ""
|
||||
|
||||
# Default double precision value format.
|
||||
set double_precision_format "g"
|
||||
|
||||
#
|
||||
# Express feedrates for the following feed types
|
||||
# as percentages of Cut feedrate.
|
||||
# A value of 0 indicates no relation to Cut feedrate.
|
||||
#
|
||||
set dbc_engage_percent 90
|
||||
set dbc_first_cut_percent 60
|
||||
set dbc_approach_percent 0
|
||||
set dbc_step_over_percent 0
|
||||
set dbc_retract_percent 0
|
||||
set dbc_departure_percent 0
|
||||
set dbc_return_percent 0
|
||||
set asc_debug 0
|
||||
|
||||
proc ASC_t_create_filename {env_var_name filename} \
|
||||
{
|
||||
#
|
||||
# Creates a complete filename by evaluating an environment variable
|
||||
# for the directory information
|
||||
#
|
||||
set env_var [MOM_ask_env_var $env_var_name]
|
||||
|
||||
if { $env_var == "" } \
|
||||
{
|
||||
set message "Can't read environment variable $env_var_name"
|
||||
MOM_abort "\n $message"
|
||||
}
|
||||
|
||||
set fname ""
|
||||
set fname [append fname $env_var $filename]
|
||||
|
||||
return $fname
|
||||
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc MOM__boot {} {
|
||||
#---------------------------------------------
|
||||
|
||||
# source some general procedures
|
||||
|
||||
#
|
||||
# dbc_ascii_general.tcl
|
||||
#
|
||||
set filename \
|
||||
[ASC_t_create_filename "UGII_UG_LIBRARY_DIR" "dbc_ascii_general.tcl"]
|
||||
|
||||
|
||||
if { [catch {source $filename}] == "1" } \
|
||||
{
|
||||
set message "Can't load .tcl file: $filename"
|
||||
MOM_abort "\n $message"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
proc MOM__halt {} \
|
||||
{
|
||||
|
||||
}
|
||||
#---------------------------------------------
|
||||
proc DBC_init_db {} {
|
||||
#---------------------------------------------
|
||||
global DEBUG
|
||||
global dataBase
|
||||
global dbFileName
|
||||
global fPointer
|
||||
global asc_file_name
|
||||
|
||||
set asc_file_name ""
|
||||
set asc_part_units ""
|
||||
set data_unit 0
|
||||
set mode 0
|
||||
|
||||
#
|
||||
# Set the filename for ASCII Data File
|
||||
#
|
||||
ASC_set_data_file_name
|
||||
|
||||
# Changed to improve performance
|
||||
# And load the file into memory
|
||||
#
|
||||
ASC_load_data_file $asc_file_name $data_unit $mode
|
||||
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc ASC_set_data_file_name {} {
|
||||
#---------------------------------------------
|
||||
global dbc_part_units
|
||||
global asc_file_name
|
||||
global asc_part_units
|
||||
|
||||
MOM_ask_part_units ;# writes to dbc_part_units
|
||||
|
||||
set env_var UGII_CAM_LIBRARY_FEEDS_SPEEDS_DATA_DIR
|
||||
set asc_file_name [ASC_t_create_filename "$env_var" "feeds_speeds.dat"]
|
||||
set asc_part_units $dbc_part_units
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc ASC_get_depthofcut { DB_ROW DPTH_OF_CUT} {
|
||||
#---------------------------------------------
|
||||
upvar $DB_ROW db_row
|
||||
upvar $DPTH_OF_CUT dpth_of_cut
|
||||
global dbc_part_units
|
||||
MOM_ask_part_units
|
||||
|
||||
if { $dbc_part_units == "english" } \
|
||||
{
|
||||
set dpth_of_cut [ASC_ask_att_val DPT_CUT_IN $db_row "%$::double_precision_format" 0 flag]
|
||||
} else \
|
||||
{
|
||||
set dpth_of_cut [ASC_ask_att_val DPT_CUT_MM $db_row "%$::double_precision_format" 0 flag]
|
||||
}
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc ASC_get_feedspeed { DB_ROW FEED_VALUE SPEED_VALUE } {
|
||||
#---------------------------------------------
|
||||
upvar $DB_ROW db_row
|
||||
upvar $FEED_VALUE asc_feed_value
|
||||
upvar $SPEED_VALUE asc_speed_value
|
||||
|
||||
global dbc_part_units
|
||||
global dbc_surface_speed
|
||||
global dbc_feed_per_tooth
|
||||
|
||||
if { $dbc_part_units == "english"} \
|
||||
{
|
||||
set asc_speed_value [ASC_ask_att_val SURF_SPEED_FPM $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_feed_value [ASC_ask_att_val FEED_IPT $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
} else \
|
||||
{
|
||||
set asc_speed_value [ASC_ask_att_val SURF_SPEED_MPM $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
|
||||
set asc_feed_value [ASC_ask_att_val FEED_MMPT $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
}
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc ASC_get_depthofcut_from_oper {LOCAL_DEPTH_OF_CUT} {
|
||||
|
||||
#---------------------------------------------
|
||||
upvar $LOCAL_DEPTH_OF_CUT local_depth_of_cut
|
||||
global dbc_cut_level_max_depth
|
||||
global dbc_depth_per_cut
|
||||
global dbc_depth_of_cut
|
||||
global dbc_max_cut_depth
|
||||
global dbc_cut_depth
|
||||
global dbc_range_1_depth_per_cut
|
||||
global dbc_global_cut_depth
|
||||
global dbc_multi_depth_cut_increment
|
||||
|
||||
if { [info exist dbc_cut_level_max_depth] } \
|
||||
{
|
||||
set local_depth_of_cut $dbc_cut_level_max_depth
|
||||
} elseif { [info exist dbc_range_1_depth_per_cut] } \
|
||||
{
|
||||
set local_depth_of_cut $dbc_range_1_depth_per_cut
|
||||
} elseif { [info exist dbc_depth_per_cut] } \
|
||||
{
|
||||
set local_depth_of_cut $dbc_depth_per_cut
|
||||
} elseif { [info exist dbc_depth_of_cut] } \
|
||||
{
|
||||
set local_depth_of_cut $dbc_depth_of_cut
|
||||
} elseif { [info exist dbc_max_cut_depth] } \
|
||||
{
|
||||
set local_depth_of_cut $dbc_max_cut_depth
|
||||
} elseif { [info exist dbc_cut_depth] } \
|
||||
{
|
||||
set local_depth_of_cut $dbc_cut_depth
|
||||
} elseif { [info exist dbc_global_cut_depth] } \
|
||||
{
|
||||
set local_depth_of_cut $dbc_global_cut_depth
|
||||
} elseif { [info exist dbc_multi_depth_cut_increment] } \
|
||||
{
|
||||
set local_depth_of_cut $dbc_multi_depth_cut_increment
|
||||
} else { set local_depth_of_cut 0}
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_create_query { } {
|
||||
#------------------------------------------------------------------------
|
||||
global DEBUG
|
||||
global dbc_query
|
||||
global dbc_subqry1
|
||||
global dbc_subqry2
|
||||
global dbc_boolop
|
||||
|
||||
# set dbc_query "$dbc_subqry1 $dbc_boolop $dbc_subqry2"
|
||||
|
||||
ASC_create_query
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc DBC_translate_att_alias {} {
|
||||
#---------------------------------------------
|
||||
|
||||
ASC_translate_att_alias
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc DBC_create_criterion {} {
|
||||
#---------------------------------------------
|
||||
|
||||
ASC_create_criterion
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_execute_query { } {
|
||||
#------------------------------------------------------------------------
|
||||
global asc_database_count
|
||||
|
||||
ASC_execute_query
|
||||
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_execute_query_for_count { } {
|
||||
#------------------------------------------------------------------------
|
||||
global asc_database_count
|
||||
|
||||
ASC_execute_query_for_count
|
||||
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc DBC_retrieve {} {
|
||||
#---------------------------------------------
|
||||
global DEBUG
|
||||
global dbc_event_error
|
||||
global dbc_part_units
|
||||
global dbc_cutmthd_libref
|
||||
global dbc_part_material_libref
|
||||
global dbc_tool_material_libref
|
||||
global dbc_tool_height
|
||||
global dbc_tool_diameter
|
||||
|
||||
global dbc_surface_speed
|
||||
global dbc_feed_per_tooth
|
||||
global dbc_engage_percent
|
||||
global dbc_first_cut_percent
|
||||
global fPointer
|
||||
global dbFileName
|
||||
global asc_database_count
|
||||
global asc_database
|
||||
global asc_file_name
|
||||
global file_unit
|
||||
global asc_units
|
||||
global asc_next_line
|
||||
|
||||
ASC_get_depthofcut_from_oper local_depth_of_cut
|
||||
set hig_dpth_cut [expr $local_depth_of_cut + 99]
|
||||
set low_dpth_cut 0
|
||||
set index 0
|
||||
set record_indx 0
|
||||
set low_record_indx 0
|
||||
set hig_record_indx 0
|
||||
|
||||
set initialize_flag 1
|
||||
set asc_feeds_file_name $asc_file_name
|
||||
set asc_next_line ""
|
||||
|
||||
if { $dbc_part_units == "english" } \
|
||||
{
|
||||
set file_unit $asc_units(inch)
|
||||
} else \
|
||||
{
|
||||
set file_unit $asc_units(mm)
|
||||
}
|
||||
|
||||
|
||||
## Changed function to improve performance
|
||||
|
||||
set ret_code [catch {open $asc_feeds_file_name "r"} fp]
|
||||
if { $ret_code } \
|
||||
{
|
||||
return 1
|
||||
}
|
||||
|
||||
ASC_init_database
|
||||
|
||||
#
|
||||
# Loop over all the DATA records
|
||||
#
|
||||
# The db_row variable has to be initialized (see also ASC_translate_att_alias)
|
||||
|
||||
set db_row 0
|
||||
set found 2
|
||||
set present_record_index 0
|
||||
set local_depth_of_cut [format "%4.4f" $local_depth_of_cut]
|
||||
|
||||
while {[ASC_read_next_db_object $fp $asc_file_name $file_unit $db_row] >= 0} \
|
||||
{
|
||||
set ascii_cutmethd_libref [ ASC_ask_att_val OPERTYPE \
|
||||
$db_row "" 0 flag]
|
||||
|
||||
set ascii_part_material_libref [ASC_ask_att_val PARTMAT $db_row \
|
||||
"" 0 flag]
|
||||
|
||||
set ascii_tool_material_libref [ASC_ask_att_val TOOLMAT $db_row \
|
||||
"" 0 flag]
|
||||
|
||||
incr present_record_index
|
||||
|
||||
# Find the row for the desired record
|
||||
if { $dbc_cutmthd_libref == $ascii_cutmethd_libref && \
|
||||
$dbc_part_material_libref == $ascii_part_material_libref && \
|
||||
$dbc_tool_material_libref == $ascii_tool_material_libref } \
|
||||
{
|
||||
|
||||
set found 0
|
||||
|
||||
set break_flag 1
|
||||
ASC_get_depthofcut db_row dpth_cut
|
||||
set dpth_cut [format "%4.4f" $dpth_cut]
|
||||
|
||||
if { $dpth_cut == $local_depth_of_cut } \
|
||||
{
|
||||
# Obtained the record. Get the values...
|
||||
|
||||
set record_indx $db_row
|
||||
ASC_get_feedspeed record_indx dbc_feed_per_tooth dbc_surface_speed
|
||||
return 0
|
||||
|
||||
} elseif { $dpth_cut < $local_depth_of_cut && \
|
||||
$dpth_cut > $low_dpth_cut} \
|
||||
{
|
||||
## Exact match not found
|
||||
|
||||
set low_record_indx $present_record_index
|
||||
set low_dpth_cut $dpth_cut
|
||||
|
||||
# Store the low feeds and speed value in tmp var for future ref.
|
||||
|
||||
ASC_get_feedspeed db_row low_feed_per_tooth low_surface_speed
|
||||
|
||||
} elseif { $dpth_cut > $local_depth_of_cut && \
|
||||
$dpth_cut < $hig_dpth_cut } \
|
||||
{
|
||||
set hig_record_indx $present_record_index
|
||||
set hig_dpth_cut $dpth_cut
|
||||
|
||||
# Store the high feeds and speed value in tmp var for future ref.
|
||||
|
||||
ASC_get_feedspeed db_row hig_feed_per_tooth hig_surface_speed
|
||||
|
||||
} else \
|
||||
{
|
||||
if { $break_flag == 1} { set break_flag 2}
|
||||
}
|
||||
if {$break_flag == 2} { break }
|
||||
}
|
||||
}
|
||||
|
||||
close $fp
|
||||
|
||||
if { $found != 0 } \
|
||||
{
|
||||
set dbc_event_error "No appropriate feed speed data found"
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
if {$record_indx} \
|
||||
{
|
||||
set final_indx $record_indx
|
||||
} else \
|
||||
{
|
||||
if {!$low_record_indx} \
|
||||
{
|
||||
set dbc_feed_per_tooth $hig_feed_per_tooth
|
||||
set dbc_surface_speed $hig_surface_speed
|
||||
|
||||
} elseif {!$hig_record_indx} \
|
||||
{
|
||||
|
||||
set dbc_feed_per_tooth $low_feed_per_tooth
|
||||
set dbc_surface_speed $low_surface_speed
|
||||
|
||||
} else \
|
||||
{
|
||||
# Exact Match for Depth of Cut not found
|
||||
|
||||
set low_diff [expr $local_depth_of_cut - $low_dpth_cut]
|
||||
set hig_diff [expr $hig_dpth_cut - $local_depth_of_cut]
|
||||
|
||||
if {$low_diff < $hig_diff} \
|
||||
{
|
||||
# Actual depth of cut is closer to next higher depth of cut in data file
|
||||
|
||||
set dbc_feed_per_tooth $low_feed_per_tooth
|
||||
set dbc_surface_speed $low_surface_speed
|
||||
|
||||
} else \
|
||||
{
|
||||
# Actual depth of cut is closer to previous lower depth of cut in data file
|
||||
|
||||
set dbc_feed_per_tooth $hig_feed_per_tooth
|
||||
set dbc_surface_speed $hig_surface_speed
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
# To enable the new customization mechanism.
|
||||
# This should ALWAYS be the last line in the file.
|
||||
MOM_extend_for_customization UGII_CAM_CUSTOM_LIBRARY_FEEDS_SPEEDS_ASCII_DIR dbc_custom_ascii_feeds_speeds.tcl
|
||||
|
||||
1630
feeds_speeds/ascii/machining_data.dat
Normal file
1630
feeds_speeds/ascii/machining_data.dat
Normal file
File diff suppressed because it is too large
Load Diff
225
feeds_speeds/ascii/machining_data.def
Normal file
225
feeds_speeds/ascii/machining_data.def
Normal file
@@ -0,0 +1,225 @@
|
||||
# *MACHINING_DATA.DEF
|
||||
###############################################################################
|
||||
# Definitions File for Machining Data Database implemented in an ASCII text file
|
||||
###############################################################################
|
||||
# REVISIONS:
|
||||
#
|
||||
# 00 23Mar99 Murthy R Mandaleeka Initial Version
|
||||
# 01 26JUL99 Subhash Changed order of attributes
|
||||
# presented
|
||||
# 02 29Oct99 Murthy R Mandaleeka Removed options
|
||||
##########################################################################
|
||||
DB_PREFIX "db("
|
||||
DB_SUFFIX ")"
|
||||
ESS_PREFIX "ess("
|
||||
ESS_SUFFIX ")"
|
||||
|
||||
################################################################################
|
||||
# The list of DB_ALIAS
|
||||
#
|
||||
# DB_ALIAS <alias>
|
||||
# {
|
||||
# DB_ID < identifier of parameter in a UG part file >
|
||||
# DB_ID_TYPE < Type of the identifier >
|
||||
# d _ double
|
||||
# i _ integer
|
||||
# s _ string
|
||||
# }
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
|
||||
DB_ALIAS libref
|
||||
{
|
||||
DB_ID LIBRF
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Speeds/Feeds Key"
|
||||
}
|
||||
|
||||
DB_ALIAS optype
|
||||
{
|
||||
DB_ID OPERTYPE
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Operation type "
|
||||
RSET_NAME "Cut Method"
|
||||
}
|
||||
|
||||
|
||||
DB_ALIAS ptmtl
|
||||
{
|
||||
DB_ID PARTMAT
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Material Name"
|
||||
RSET_NAME "Part Material"
|
||||
}
|
||||
|
||||
DB_ALIAS tlmtl
|
||||
{
|
||||
DB_ID TOOLMAT
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Tool Material"
|
||||
RSET_NAME "Tool Material"
|
||||
}
|
||||
|
||||
DB_ALIAS diam_in
|
||||
{
|
||||
DB_ID DIAM_IN
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Diam"
|
||||
RSET_NAME "Diam - Inch"
|
||||
}
|
||||
|
||||
DB_ALIAS diam_mm
|
||||
{
|
||||
DB_ID DIAM_MM
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Diam"
|
||||
RSET_NAME "Diam - mm"
|
||||
}
|
||||
|
||||
DB_ALIAS length_in
|
||||
{
|
||||
DB_ID LENGTH_IN
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Length"
|
||||
RSET_NAME "Length - Inch"
|
||||
}
|
||||
|
||||
DB_ALIAS length_mm
|
||||
{
|
||||
DB_ID LENGTH_MM
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Length"
|
||||
RSET_NAME "Length - mm"
|
||||
}
|
||||
|
||||
DB_ALIAS depthinch
|
||||
{
|
||||
DB_ID DPT_CUT_IN
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Depth"
|
||||
RSET_NAME "Depth - Inch"
|
||||
}
|
||||
|
||||
DB_ALIAS depthmm
|
||||
{
|
||||
DB_ID DPT_CUT_MM
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Depth"
|
||||
RSET_NAME "Depth - mm"
|
||||
}
|
||||
|
||||
DB_ALIAS stepover_in
|
||||
{
|
||||
DB_ID STEPOVER_IN
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Stepover"
|
||||
RSET_NAME "Stepover - Inch"
|
||||
}
|
||||
|
||||
DB_ALIAS stepover_mm
|
||||
{
|
||||
DB_ID STEPOVER_MM
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Stepover"
|
||||
RSET_NAME "stepover - mm"
|
||||
}
|
||||
|
||||
DB_ALIAS speedinch
|
||||
{
|
||||
DB_ID SURF_SPEED_FPM
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Speed"
|
||||
RSET_NAME "Speed - Inch"
|
||||
}
|
||||
|
||||
DB_ALIAS speedmm
|
||||
{
|
||||
DB_ID SURF_SPEED_MPM
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Speed"
|
||||
RSET_NAME "Speed - mm"
|
||||
}
|
||||
|
||||
DB_ALIAS feedinch
|
||||
{
|
||||
DB_ID FEED_IPT
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "feed"
|
||||
RSET_NAME "Feed - Inch"
|
||||
}
|
||||
|
||||
DB_ALIAS feedmm
|
||||
{
|
||||
DB_ID FEED_MMPT
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "feed"
|
||||
RSET_NAME "Feed - mm"
|
||||
}
|
||||
|
||||
DB_ALIAS approach_pct
|
||||
{
|
||||
DB_ID APPROACH_PCT
|
||||
DB_ID_TYPE i
|
||||
DIALOG_NAME "Approach Percent"
|
||||
RSET_NAME "Approach Percent"
|
||||
}
|
||||
|
||||
DB_ALIAS engage_pct
|
||||
{
|
||||
DB_ID ENGAGE_PCT
|
||||
DB_ID_TYPE i
|
||||
DIALOG_NAME "Engage Percent"
|
||||
RSET_NAME "Engage Percent"
|
||||
}
|
||||
|
||||
DB_ALIAS frstcut_pct
|
||||
{
|
||||
DB_ID FRSTCUT_PCT
|
||||
DB_ID_TYPE i
|
||||
DIALOG_NAME "First Cut Percent"
|
||||
RSET_NAME "First Cut Percent"
|
||||
}
|
||||
|
||||
DB_ALIAS stepover_pct
|
||||
{
|
||||
DB_ID STEPOVER_PCT
|
||||
DB_ID_TYPE i
|
||||
DIALOG_NAME "Stepover Percent"
|
||||
RSET_NAME "Stepover Percent"
|
||||
}
|
||||
|
||||
DB_ALIAS retract_pct
|
||||
{
|
||||
DB_ID RETRACT_PCT
|
||||
DB_ID_TYPE i
|
||||
DIALOG_NAME "Retract Percent"
|
||||
RSET_NAME "Retract Percent"
|
||||
}
|
||||
|
||||
DB_ALIAS return_pct
|
||||
{
|
||||
DB_ID RETURN_PCT
|
||||
DB_ID_TYPE i
|
||||
DIALOG_NAME "Return Percent"
|
||||
RSET_NAME "Return Percent"
|
||||
}
|
||||
|
||||
DB_ALIAS depart_pct
|
||||
{
|
||||
DB_ID DEPART_PCT
|
||||
DB_ID_TYPE i
|
||||
DIALOG_NAME "Depart Percent"
|
||||
RSET_NAME "Depart Percent"
|
||||
}
|
||||
|
||||
LIBREF optype
|
||||
|
||||
CLASS TECH_SETTINGS
|
||||
{
|
||||
TYPE TECH_SETTINGS
|
||||
QUERY "[1] == [1]"
|
||||
DIALOG libref optype ptmtl tlmtl depthinch speedinch feedinch
|
||||
RSET libref optype ptmtl tlmtl diam_in diam_mm length_in length_mm depthinch depthmm stepover_in stepover_mm speedinch speedmm feedinch feedmm approach_pct engage_pct frstcut_pct stepover_pct retract_pct return_pct depart_pct
|
||||
UI_NAME "CAM Machining Data Library"
|
||||
}
|
||||
879
feeds_speeds/ascii/machining_data.tcl
Normal file
879
feeds_speeds/ascii/machining_data.tcl
Normal file
@@ -0,0 +1,879 @@
|
||||
# *MACHINING_DATA.TCL
|
||||
###############################################################################
|
||||
# machining_DATA.tcl - DBC Event Handler for database stored as ascii file
|
||||
###############################################################################
|
||||
# Revisions
|
||||
# Date Who Reason
|
||||
# 22Oct2003 rlm Initial
|
||||
# 26Jan2004 rlm Return integers for cut feed percentages
|
||||
# 26Jan2004 rlm remove rest of debugging code
|
||||
# 30Jan2004 rlm Move ASC_write to dbc_ascii_general
|
||||
# 12Feb2004 rlm Add library revision information
|
||||
# 25Jun2004 rlm Enhance data interpolation
|
||||
# 26Oct2004 rlm Enhance for import machining data func
|
||||
# 13Apr2005 rlm Expand hierarchy for retrieve record selection
|
||||
# 24Jan2006 rlm fix ratio computation protection
|
||||
# 18Mar2008 rlm add missing continuation on first
|
||||
# ASC_interpolate_data call
|
||||
# 14Jan2009 rlm Fix test protecting zero divide when
|
||||
# computing local_ratio
|
||||
# 10Feb2009 rlm Fix second line of previous rev
|
||||
# 24Mar2009 rlm apply holder offset to tool length
|
||||
# 18Feb2010 rlm Add test for single record diameter match
|
||||
# 23Jul2010 rlm 6384077 Fix global reference in first fallback test
|
||||
# 13Apr2011 Peter Mao 1842883 Ignore tool length adjustment if shank is defined
|
||||
# 16Aug2012 R. Miner 1908948 Perform all tests on all records
|
||||
# 26Oct2018 Shorbojeet Das PR#8340732: Add customization support for double precision control.
|
||||
# 08Nov2018 Updates
|
||||
# 07Jul2020 Benson Wang 9697869 Fix the issue that ASC_get_tool_projection_length can't get correct tool length
|
||||
# 18Aug2020 Jingzhao Zhang PR#9607517 Support exact match only for maching data
|
||||
################################################################################
|
||||
#
|
||||
# The format of each line in the text file is:
|
||||
#
|
||||
# libref optype ptmtl tlmtl speed feed
|
||||
#
|
||||
# libref is a string
|
||||
# optype is "Milling" "Turning" "Drilling"
|
||||
# ptmtl is code number for now
|
||||
# tlmtl is "HSS" "Carbide" "CBN"
|
||||
# depth is a double
|
||||
# speed is a double
|
||||
# feed is a double
|
||||
#
|
||||
# The DB_ID of a DB_ALIAS is its field number in the line (0-based)
|
||||
###############################################################################
|
||||
#MOM_set_debug_mode ON
|
||||
#---------------------------------------------
|
||||
# Non DBC Global Variables
|
||||
#---------------------------------------------
|
||||
#set dbFileName "[MOM_ask_env_var UGII_CAM_LIBRARY_FEEDS_SPEEDS_DATA_DIR]machining_data.dat" ; # The ASCII Database File
|
||||
set DEBUG 1
|
||||
set fPointer ""
|
||||
|
||||
#---------------------------------------------
|
||||
# Global variables set by DBC for Input/Output
|
||||
#---------------------------------------------
|
||||
set dbc_lhs_exp ""
|
||||
set dbc_rhs_exp ""
|
||||
set dbc_relop ""
|
||||
set dbc_query ""
|
||||
set dbc_subqry1 ""
|
||||
set dbc_subqry2 ""
|
||||
set dbc_boolop ""
|
||||
set dbc_class_name ""
|
||||
set dbc_attr_count 0
|
||||
set dbc_attr_id ""
|
||||
set dbc_query_count 0
|
||||
set dbc_libref ""
|
||||
set dbc_var_list ""
|
||||
set dbc_tool_diameter ""
|
||||
set dbc_tool_height ""
|
||||
set dbc_part_units "english" ; # ( english : 0 , metric : 1)
|
||||
set dbc_cutmthd_libref ""
|
||||
set dbc_part_material_libref ""
|
||||
set dbc_tool_material_libref ""
|
||||
|
||||
# Default double precision value format.
|
||||
set double_precision_format "g"
|
||||
|
||||
#
|
||||
# Express feedrates for the following feed types
|
||||
# as percentages of Cut feedrate.
|
||||
# A value of 0 indicates no relation to Cut feedrate.
|
||||
#
|
||||
set dbc_engage_percent 90
|
||||
set dbc_first_cut_percent 60
|
||||
set dbc_approach_percent 0
|
||||
set dbc_stepover_percent 0
|
||||
set dbc_retract_percent 0
|
||||
set dbc_departure_percent 0
|
||||
set dbc_return_percent 0
|
||||
set asc_debug 0
|
||||
|
||||
proc ASC_t_create_filename {env_var_name filename} \
|
||||
{
|
||||
#
|
||||
# Creates a complete filename by evaluating an environment variable
|
||||
# for the directory information
|
||||
#
|
||||
set env_var [MOM_ask_env_var $env_var_name]
|
||||
|
||||
if { $env_var == "" } \
|
||||
{
|
||||
set message "Can't read environment variable $env_var_name"
|
||||
MOM_abort "\n $message"
|
||||
}
|
||||
|
||||
set fname ""
|
||||
set fname [append fname $env_var $filename]
|
||||
|
||||
return $fname
|
||||
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc MOM__boot {} {
|
||||
#---------------------------------------------
|
||||
|
||||
# source some general procedures
|
||||
|
||||
#
|
||||
# dbc_ascii_general.tcl
|
||||
#
|
||||
set filename \
|
||||
[ASC_t_create_filename "UGII_UG_LIBRARY_DIR" "dbc_ascii_general.tcl"]
|
||||
|
||||
|
||||
if { [catch {source $filename}] == "1" } \
|
||||
{
|
||||
set message "Can't load .tcl file: $filename"
|
||||
MOM_abort "\n $message"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
proc MOM__halt {} \
|
||||
{
|
||||
|
||||
}
|
||||
#---------------------------------------------
|
||||
proc DBC_init_db {} {
|
||||
#---------------------------------------------
|
||||
global DEBUG
|
||||
global dataBase
|
||||
global dbFileName
|
||||
global fPointer
|
||||
global asc_file_name
|
||||
global asc_database_count
|
||||
global dbc_dat_file_override
|
||||
global dbc_dat_file_name
|
||||
|
||||
set asc_file_name ""
|
||||
set asc_part_units ""
|
||||
set data_unit 0
|
||||
set mode 0
|
||||
|
||||
#
|
||||
# Set the filename for ASCII Data File
|
||||
#
|
||||
if {[info exists dbc_dat_file_override] } \
|
||||
{
|
||||
if {$dbc_dat_file_override == 1} \
|
||||
{
|
||||
set asc_file_name $dbc_dat_file_name
|
||||
} else \
|
||||
{
|
||||
ASC_set_data_file_name
|
||||
}
|
||||
} else \
|
||||
{
|
||||
ASC_set_data_file_name
|
||||
}
|
||||
|
||||
# Changed to improve performance
|
||||
# And load the file into memory
|
||||
#
|
||||
ASC_load_data_file $asc_file_name $data_unit $mode
|
||||
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc ASC_set_data_file_name {} {
|
||||
#---------------------------------------------
|
||||
global dbc_part_units
|
||||
global asc_file_name
|
||||
global asc_part_units
|
||||
|
||||
MOM_ask_part_units ;# writes to dbc_part_units
|
||||
|
||||
set env_var UGII_CAM_LIBRARY_FEEDS_SPEEDS_DATA_DIR
|
||||
set asc_file_name [ASC_t_create_filename "$env_var" "machining_data.dat"]
|
||||
set asc_part_units $dbc_part_units
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc ASC_get_tool_size { DB_ROW DIAMETER LENGTH } {
|
||||
#---------------------------------------------
|
||||
upvar $DB_ROW db_row
|
||||
upvar $DIAMETER asc_tool_diameter
|
||||
upvar $LENGTH asc_tool_length
|
||||
|
||||
global dbc_part_units
|
||||
|
||||
if { $dbc_part_units == "english"} \
|
||||
{
|
||||
set asc_tool_diameter [ASC_ask_att_val DIAM_IN $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_tool_length [ASC_ask_att_val LENGTH_IN $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
} else \
|
||||
{
|
||||
set asc_tool_diameter [ASC_ask_att_val DIAM_MM $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_tool_length [ASC_ask_att_val LENGTH_MM $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
}
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc ASC_get_machining_data { DB_ROW CUT_DEPTH STEPOVER FEED_VALUE SPEED_VALUE } {
|
||||
#---------------------------------------------
|
||||
upvar $DB_ROW db_row
|
||||
upvar $CUT_DEPTH asc_cut_value
|
||||
upvar $STEPOVER asc_stepover
|
||||
upvar $FEED_VALUE asc_feed_value
|
||||
upvar $SPEED_VALUE asc_speed_value
|
||||
|
||||
global dbc_part_units
|
||||
|
||||
if { $dbc_part_units == "english"} \
|
||||
{
|
||||
set asc_cut_value [ASC_ask_att_val DPT_CUT_IN $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_stepover [ASC_ask_att_val STEPOVER_IN $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_speed_value [ASC_ask_att_val SURF_SPEED_FPM $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_feed_value [ASC_ask_att_val FEED_IPT $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
} else \
|
||||
{
|
||||
set asc_cut_value [ASC_ask_att_val DPT_CUT_MM $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_stepover [ASC_ask_att_val STEPOVER_MM $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_speed_value [ASC_ask_att_val SURF_SPEED_MPM $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_feed_value [ASC_ask_att_val FEED_MMPT $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
}
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc ASC_get_feedrate_percentages { DB_ROW APPROACH_PERCENT ENGAGE_PERCENT \
|
||||
FIRSTCUT_PERCENT STEPOVER_PERCENT RETRACT_PERCENT RETURN_PERCENT DEPART_PERCENT } {
|
||||
#---------------------------------------------
|
||||
upvar $DB_ROW db_row
|
||||
upvar $APPROACH_PERCENT asc_approach_pct
|
||||
upvar $ENGAGE_PERCENT asc_engage_pct
|
||||
upvar $FIRSTCUT_PERCENT asc_firstcut_pct
|
||||
upvar $STEPOVER_PERCENT asc_stepover_pct
|
||||
upvar $RETRACT_PERCENT asc_retract_pct
|
||||
upvar $RETURN_PERCENT asc_return_pct
|
||||
upvar $DEPART_PERCENT asc_depart_pct
|
||||
|
||||
set asc_approach_pct [ASC_ask_att_val APPROACH_PCT $db_row \
|
||||
"%d" 0 flag]
|
||||
set asc_engage_pct [ASC_ask_att_val ENGAGE_PCT $db_row \
|
||||
"%d" 0 flag]
|
||||
set asc_firstcut_pct [ASC_ask_att_val FRSTCUT_PCT $db_row \
|
||||
"%d" 0 flag]
|
||||
set asc_stepover_pct [ASC_ask_att_val STEPOVER_PCT $db_row \
|
||||
"%d" 0 flag]
|
||||
set asc_retract_pct [ASC_ask_att_val RETRACT_PCT $db_row \
|
||||
"%d" 0 flag]
|
||||
set asc_return_pct [ASC_ask_att_val RETURN_PCT $db_row \
|
||||
"%d" 0 flag]
|
||||
set asc_depart_pct [ASC_ask_att_val DEPART_PCT $db_row \
|
||||
"%d" 0 flag]
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_create_query { } {
|
||||
#------------------------------------------------------------------------
|
||||
global DEBUG
|
||||
global dbc_query
|
||||
global dbc_subqry1
|
||||
global dbc_subqry2
|
||||
global dbc_boolop
|
||||
|
||||
# set dbc_query "$dbc_subqry1 $dbc_boolop $dbc_subqry2"
|
||||
|
||||
ASC_create_query
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_execute_query { } {
|
||||
#------------------------------------------------------------------------
|
||||
global asc_database_count
|
||||
|
||||
ASC_execute_query
|
||||
|
||||
}
|
||||
|
||||
proc ASC_set_engage_retract_to_rapid { } {
|
||||
if { $::dbc_engage_percent == 0 } \
|
||||
{
|
||||
set ::dbc_engage_percent "RAPID"
|
||||
}
|
||||
if { $::dbc_retract_percent == 0 } \
|
||||
{
|
||||
set ::dbc_retract_percent "RAPID"
|
||||
}
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc DBC_retrieve {} {
|
||||
#---------------------------------------------
|
||||
global DEBUG
|
||||
global dbc_event_error
|
||||
global dbc_part_units
|
||||
global dbc_cutmthd_libref
|
||||
global dbc_part_material_libref
|
||||
global dbc_tool_material_libref
|
||||
global dbc_tool_diameter
|
||||
global dbc_tool_length
|
||||
global dbc_tool_holder_offset
|
||||
|
||||
global dbc_surface_speed
|
||||
global dbc_feed_per_tooth
|
||||
global dbc_depth_of_cut
|
||||
global dbc_stepover
|
||||
|
||||
global dbc_approach_percent
|
||||
global dbc_engage_percent
|
||||
global dbc_first_cut_percent
|
||||
global dbc_stepover_percent
|
||||
global dbc_retract_percent
|
||||
global dbc_return_percent
|
||||
global dbc_departure_percent
|
||||
global fPointer
|
||||
global dbFileName
|
||||
global asc_database_count
|
||||
global asc_database
|
||||
global asc_file_name
|
||||
global file_unit
|
||||
global asc_units
|
||||
global asc_next_line
|
||||
global dbc_libref
|
||||
|
||||
global dbc_support_exact_match
|
||||
|
||||
# These hold data for finding nearest L/D ratio
|
||||
set index 0
|
||||
set low_record_indx -1
|
||||
set low_ratio_delta 99999
|
||||
set low_ratio 99999
|
||||
set high_record_indx -1
|
||||
set high_ratio_delta 99999
|
||||
set high_ratio 99999
|
||||
|
||||
# These hold data for records which match diameter only
|
||||
set low_len_rec_indx -1
|
||||
set low_len_delta 99999
|
||||
set low_len_ratio 99999
|
||||
set high_len_rec_indx -1
|
||||
set high_len_delta 99999
|
||||
set high_len_ratio 99999
|
||||
|
||||
# These hold data for records which are near the input tool in diameter and length
|
||||
set near_low_rec_indx -1
|
||||
set near_low_delta 99999
|
||||
set near_low_ratio 99999
|
||||
set near_high_rec_indx -1
|
||||
set near_high_delta 99999
|
||||
set near_high_ratio 99999
|
||||
|
||||
# These hold data for records which match diameter only
|
||||
set low_len_rec_indx -1
|
||||
set low_len_delta 99999
|
||||
set low_len_ratio 99999
|
||||
set high_len_rec_indx -1
|
||||
set high_len_delta 99999
|
||||
set high_len_ratio 99999
|
||||
|
||||
# These hold data for records which nearly match diameter only
|
||||
set near_diam_low_rec_indx -1
|
||||
set near_diam_low_ratio_delta 99999
|
||||
set near_diam_low_ratio 99999
|
||||
set near_diam_high_rec_indx -1
|
||||
set near_diam_high_ratio_delta 99999
|
||||
set near_diam_high_ratio 99999
|
||||
|
||||
# These hold data for records which match length only
|
||||
set low_diam_rec_indx -1
|
||||
set low_diam_delta 99999
|
||||
set low_diam_ratio 99999
|
||||
set high_diam_rec_indx -1
|
||||
set high_diam_delta 99999
|
||||
set high_diam_ratio 99999
|
||||
|
||||
# These hold data for records which nearly match length only
|
||||
set near_length_low_rec_indx -1
|
||||
set near_length_low_ratio_delta 99999
|
||||
set near_length_low_ratio 99999
|
||||
set near_length_high_rec_indx -1
|
||||
set near_length_high_ratio_delta 99999
|
||||
set near_length_high_ratio 99999
|
||||
|
||||
# tracking exact match on diameter
|
||||
set diameter_match_rec_index -1
|
||||
set diameter_match_count 0
|
||||
|
||||
# Nearness band for input tool diameter and length
|
||||
set nearness 0.10
|
||||
|
||||
set initialize_flag 1
|
||||
set asc_data_file_name $asc_file_name
|
||||
set asc_next_line ""
|
||||
|
||||
if { $dbc_part_units == "english" } \
|
||||
{
|
||||
set file_unit $asc_units(inch)
|
||||
} else \
|
||||
{
|
||||
set file_unit $asc_units(mm)
|
||||
}
|
||||
|
||||
## Changed function to improve performance
|
||||
|
||||
# set ret_code [catch {open $asc_data_file_name "r"} fp]
|
||||
# if { $ret_code } \
|
||||
# {
|
||||
# return 1
|
||||
# }
|
||||
|
||||
# ASC_init_database
|
||||
|
||||
set dbc_tool_length [ASC_get_tool_projection_length]
|
||||
|
||||
# compute the D4/L3 ratio for the input tool
|
||||
if { $dbc_tool_diameter > 0 } \
|
||||
{
|
||||
set input_ratio [expr pow($dbc_tool_length,3) / pow($dbc_tool_diameter,4)]
|
||||
# set input_ratio [expr pow($dbc_tool_diameter,4) / pow($dbc_tool_length,3)]
|
||||
} else \
|
||||
{
|
||||
set input_ratio 0
|
||||
}
|
||||
|
||||
# compute nearness band around input tool diameter and length
|
||||
set high_diam [expr (1 + $nearness) * $dbc_tool_diameter]
|
||||
set low_diam [expr (1 - $nearness) * $dbc_tool_diameter]
|
||||
set high_length [expr (1 + $nearness) * $dbc_tool_length]
|
||||
set low_length [expr (1 - $nearness) * $dbc_tool_length]
|
||||
|
||||
#
|
||||
# Loop over all the DATA records
|
||||
#
|
||||
# The db_row variable has to be initialized (see also ASC_translate_att_alias)
|
||||
|
||||
set db_row 0
|
||||
while { $db_row < $asc_database_count } \
|
||||
{
|
||||
set ascii_cutmethd_libref [ ASC_ask_att_val OPERTYPE \
|
||||
$db_row "" 0 flag]
|
||||
|
||||
set ascii_part_material_libref [ASC_ask_att_val PARTMAT $db_row \
|
||||
"" 0 flag]
|
||||
|
||||
set ascii_tool_material_libref [ASC_ask_att_val TOOLMAT $db_row \
|
||||
"" 0 flag]
|
||||
|
||||
# See if row matches primary selection criteria
|
||||
if { $dbc_cutmthd_libref == $ascii_cutmethd_libref && \
|
||||
$dbc_part_material_libref == $ascii_part_material_libref && \
|
||||
$dbc_tool_material_libref == $ascii_tool_material_libref } \
|
||||
{
|
||||
# It does. Get tool size and check for match
|
||||
ASC_get_tool_size db_row local_tool_diameter local_tool_length
|
||||
if { $dbc_tool_diameter == $local_tool_diameter && \
|
||||
$dbc_tool_length == $local_tool_length } \
|
||||
{
|
||||
# Got a matching record, get remaining data and return
|
||||
ASC_get_machining_data db_row dbc_depth_of_cut dbc_stepover \
|
||||
dbc_feed_per_tooth dbc_surface_speed
|
||||
|
||||
ASC_get_feedrate_percentages db_row dbc_approach_percent \
|
||||
dbc_engage_percent dbc_first_cut_percent dbc_stepover_percent \
|
||||
dbc_retract_percent dbc_return_percent dbc_departure_percent
|
||||
|
||||
ASC_set_engage_retract_to_rapid
|
||||
|
||||
return 0
|
||||
|
||||
} elseif { $dbc_support_exact_match == 0 } \
|
||||
{
|
||||
## Exact match not found check D4/L3 ratio for possible interpolation consideration
|
||||
if {$local_tool_diameter > 0} \
|
||||
{
|
||||
set local_ratio [expr pow($local_tool_length,3) / pow($local_tool_diameter,4)]
|
||||
} else \
|
||||
{
|
||||
set local_ratio 99999
|
||||
}
|
||||
ASC_check_ratio_closeness db_row input_ratio local_ratio \
|
||||
low_record_indx low_ratio_delta low_ratio \
|
||||
high_record_indx high_ratio_delta high_ratio
|
||||
|
||||
# Now start checking for special cases.
|
||||
|
||||
# First, record diameter and length within nearness band of input tool
|
||||
if { $local_tool_diameter >= $low_diam && \
|
||||
$local_tool_diameter <= $high_diam && \
|
||||
$local_tool_length >= $low_length && \
|
||||
$local_tool_length <= $high_length } \
|
||||
{
|
||||
ASC_check_ratio_closeness db_row input_ratio local_ratio \
|
||||
near_low_rec_indx near_low_delta near_low_ratio \
|
||||
near_high_rec_indx near_high_delta near_high_ratio
|
||||
}
|
||||
if { $dbc_tool_diameter == $local_tool_diameter } \
|
||||
{
|
||||
# Exactly matching diameters
|
||||
ASC_check_closeness db_row dbc_tool_length local_tool_length \
|
||||
local_ratio low_len_rec_indx low_len_delta low_len_ratio \
|
||||
high_len_rec_indx high_len_delta high_len_ratio
|
||||
set diameter_match_rec_index $db_row
|
||||
incr diameter_match_count
|
||||
}
|
||||
if { $local_tool_diameter >= $low_diam && \
|
||||
$local_tool_diameter <= $high_diam } \
|
||||
{
|
||||
# Diameter only within nearness band
|
||||
ASC_check_ratio_closeness db_row input_ratio local_ratio \
|
||||
near_diam_low_rec_indx near_diam_low_ratio_delta near_diam_low_ratio \
|
||||
near_diam_high_rec_indx near_diam_high_ratio_delta near_diam_high_ratio
|
||||
}
|
||||
if { $dbc_tool_length == $local_tool_length } \
|
||||
{
|
||||
# Exactly matching lengths
|
||||
ASC_check_closeness db_row dbc_tool_diameter local_tool_diameter \
|
||||
local_ratio low_diam_rec_indx low_diam_delta low_diam_ratio \
|
||||
high_diam_rec_indx high_diam_delta high_diam_ratio
|
||||
}
|
||||
if { $local_tool_length >= $low_length && \
|
||||
$local_tool_length <= $high_length } \
|
||||
{
|
||||
# Length only within nearness band
|
||||
ASC_check_ratio_closeness db_row input_ratio local_ratio \
|
||||
near_length_low_rec_indx near_length_low_ratio_delta near_length_low_ratio \
|
||||
near_length_high_rec_indx near_length_high_ratio_delta near_length_high_ratio
|
||||
}
|
||||
}
|
||||
}
|
||||
incr db_row
|
||||
}
|
||||
|
||||
# If we get here, we did not find an exact match on tool diameter and length,
|
||||
# so check alternatives
|
||||
if { $dbc_support_exact_match == 0 } \
|
||||
{
|
||||
# first a single record with matching diameter
|
||||
if { $diameter_match_rec_index > -1 && $diameter_match_count == 1 } \
|
||||
{
|
||||
ASC_get_machining_data diameter_match_rec_index dbc_depth_of_cut dbc_stepover \
|
||||
dbc_feed_per_tooth dbc_surface_speed
|
||||
|
||||
ASC_get_feedrate_percentages diameter_match_rec_index dbc_approach_percent \
|
||||
dbc_engage_percent dbc_first_cut_percent dbc_stepover_percent \
|
||||
dbc_retract_percent dbc_return_percent dbc_departure_percent
|
||||
|
||||
ASC_set_engage_retract_to_rapid
|
||||
|
||||
# next records near in both diameter and length
|
||||
} elseif { $near_low_rec_indx > -1 && $near_high_rec_indx > -1 } \
|
||||
{
|
||||
ASC_interpolate_data near_low_rec_indx near_low_ratio near_high_rec_indx \
|
||||
near_high_ratio input_ratio
|
||||
# Exact match found on diameter only
|
||||
} elseif { $low_len_rec_indx > -1 && $high_len_rec_indx > -1} \
|
||||
{
|
||||
ASC_interpolate_data low_len_rec_indx low_len_ratio high_len_rec_indx \
|
||||
high_len_ratio input_ratio
|
||||
# Near records on diameter only
|
||||
} elseif { $near_diam_low_rec_indx > -1 && $near_diam_high_rec_indx > -1} \
|
||||
{
|
||||
ASC_interpolate_data near_diam_low_rec_indx near_diam_low_ratio near_diam_high_rec_indx \
|
||||
near_diam_high_ratio input_ratio
|
||||
# Exact match found on length only
|
||||
} elseif { $low_diam_rec_indx > -1 && $high_diam_rec_indx > -1} \
|
||||
{
|
||||
ASC_interpolate_data low_diam_rec_indx low_diam_ratio high_diam_rec_indx \
|
||||
high_diam_ratio input_ratio
|
||||
# Near records on length only
|
||||
} elseif { $near_length_low_rec_indx > -1 && $near_length_high_rec_indx > -1} \
|
||||
{
|
||||
ASC_interpolate_data near_length_low_rec_indx near_length_low_ratio near_length_high_rec_indx \
|
||||
near_length_high_ratio input_ratio
|
||||
# Near ratios on both sides of input tool
|
||||
} elseif { $low_record_indx > -1 && $high_record_indx > -1 } \
|
||||
{
|
||||
ASC_interpolate_data low_record_indx low_ratio high_record_indx \
|
||||
high_ratio input_ratio
|
||||
# have a match on the high end, use it
|
||||
} elseif { $low_record_indx == -1 && $high_record_indx > -1} \
|
||||
{
|
||||
ASC_get_machining_data high_record_indx dbc_depth_of_cut dbc_stepover \
|
||||
dbc_feed_per_tooth dbc_surface_speed
|
||||
|
||||
ASC_get_feedrate_percentages high_record_indx dbc_approach_percent \
|
||||
dbc_engage_percent dbc_first_cut_percent dbc_stepover_percent \
|
||||
dbc_retract_percent dbc_return_percent dbc_departure_percent
|
||||
|
||||
ASC_set_engage_retract_to_rapid
|
||||
|
||||
# have a match on the low end, use it
|
||||
} elseif { $high_record_indx == -1 && $low_record_indx > -1} \
|
||||
{
|
||||
set near_libref [ASC_ask_att_val LIBRF $low_record_indx "%s" "" flag]
|
||||
ASC_get_machining_data low_record_indx dbc_depth_of_cut dbc_stepover \
|
||||
dbc_feed_per_tooth dbc_surface_speed
|
||||
|
||||
ASC_get_feedrate_percentages low_record_indx dbc_approach_percent \
|
||||
dbc_engage_percent dbc_first_cut_percent dbc_stepover_percent \
|
||||
dbc_retract_percent dbc_return_percent dbc_departure_percent
|
||||
|
||||
ASC_set_engage_retract_to_rapid
|
||||
|
||||
# no matches found at all -- return error message
|
||||
} else \
|
||||
{
|
||||
set dbc_event_error "No appropriate machining data found"
|
||||
}
|
||||
} else \
|
||||
{
|
||||
set dbc_event_error "No appropriate machining data found"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_write { } {
|
||||
#------------------------------------------------------------------------
|
||||
global asc_database_name
|
||||
|
||||
set asc_database_name "machining_data.dat"
|
||||
ASC_write
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc ASC_output_header { fileid } {
|
||||
#------------------------------------------------------------------------
|
||||
global dbc_attr_count
|
||||
global dbc_attr_aliases
|
||||
global dbc_attr_id
|
||||
global dbc_logname
|
||||
|
||||
|
||||
set daytime [clock seconds]
|
||||
set out_daytime [clock format $daytime -format "%a %b %d %Y %I:%M %p"]
|
||||
|
||||
set headerMessage "# MACHINING_DATA.DAT
|
||||
##########################################################################
|
||||
#
|
||||
# PURPOSE:
|
||||
#
|
||||
# This is the database file used for defining Machining Data in
|
||||
# an operation.
|
||||
#
|
||||
#
|
||||
# REVISED:
|
||||
# $dbc_logname $out_daytime
|
||||
#
|
||||
##########################################################################
|
||||
# The data is organized in the format separated by |
|
||||
# The fields in the database are in the following order:
|
||||
#
|
||||
# LIBRF - Unique record identifier
|
||||
# (Library Reference)
|
||||
# OPERTYPE - cutmthd_libref Cut Method Library Reference
|
||||
# PARTMAT - part_material_libref Part Part Material Library Reference
|
||||
# TOOLMAT - tool_material_libref Tool Material Library Reference
|
||||
# DIAM_IN - cutter diameter - inch
|
||||
# DIAM_MM - cutter diameter - mm
|
||||
# LENGTH_IN - cutter length - inch
|
||||
# LENGTH_MM - cutter length - mm
|
||||
# DPT_CUT_IN - dpth_of_cut Depth_of_cut(inch)
|
||||
# DPT_CUT_MM - dpth_of_cut Depth_of_cut(mm)
|
||||
# STEPOVER_IN - stepover distance (inch)
|
||||
# STEPOVER_MM - stepover distance (mm)
|
||||
# SURF_SPEED_FPM - surface_speed Suface Speed(FPM)
|
||||
# SURF_SPEED_MPM - surface_speed Suface Speed(MPM)
|
||||
# FEED_IPT - feed_per_tooth Feed per Tooth(IPT)
|
||||
# FEED_MMPT - feed_per_tooth Feed per Tooth(MMPT)
|
||||
# APPROACH_PCT - approach feedrate percentage of cut feedrate
|
||||
# ENGAGE_PCT - engage feedrate percentage of cut feedrate
|
||||
# FRSTCUT_PCT - first cut feedrate percentage of cut feedrate
|
||||
# STEPOVER_PCT - stepover feedrate percentage of cut feedrate
|
||||
# RETRACT_PCT - retract feedrate percentage of cut feedrate
|
||||
# RETURN_PCT - return feedrate percentage of cut feedrate
|
||||
# DEPART_PCT - departure feedrate percentage of cut feedrate
|
||||
#--------------------------------------------------------------------------------"
|
||||
|
||||
puts $fileid "$headerMessage"
|
||||
|
||||
# load the database structure
|
||||
DBC_load_rset_data
|
||||
|
||||
|
||||
# output FORMAT line
|
||||
set format_line "FORMAT"
|
||||
for {set i 0} {$i < $dbc_attr_count} {incr i} \
|
||||
{
|
||||
DBC_ask_attr_id $dbc_attr_aliases($i)
|
||||
set format_line "$format_line $dbc_attr_id"
|
||||
}
|
||||
puts $fileid $format_line
|
||||
puts $fileid "#--------------------------------------------------------------------------------"
|
||||
}
|
||||
|
||||
proc ASC_check_closeness { DB_ROW BASE_VALUE TEST_VALUE TEST_RATIO LOW_REC_INDX LOW_REC_DELTA \
|
||||
LOW_REC_RATIO HIGH_REC_INDX HIGH_REC_DELTA HIGH_REC_RATIO } {
|
||||
|
||||
upvar $DB_ROW db_row
|
||||
upvar $BASE_VALUE base_value
|
||||
upvar $TEST_VALUE test_value
|
||||
upvar $TEST_RATIO test_ratio
|
||||
upvar $LOW_REC_INDX low_record_indx
|
||||
upvar $LOW_REC_RATIO low_ratio
|
||||
upvar $LOW_REC_DELTA low_delta
|
||||
upvar $HIGH_REC_DELTA high_delta
|
||||
upvar $HIGH_REC_INDX high_record_indx
|
||||
upvar $HIGH_REC_RATIO high_ratio
|
||||
|
||||
if { $base_value > $test_value } \
|
||||
{
|
||||
set test_delta [expr ($base_value - $test_value)]
|
||||
if { $test_delta < $low_delta } \
|
||||
{
|
||||
set low_delta $test_delta
|
||||
set low_record_indx $db_row
|
||||
set low_ratio $test_ratio
|
||||
}
|
||||
} elseif { $base_value < $test_value } \
|
||||
{
|
||||
set test_delta [expr ($test_value - $base_value)]
|
||||
if { $test_delta < $high_delta } \
|
||||
{
|
||||
set high_delta $test_delta
|
||||
set high_record_indx $db_row
|
||||
set high_ratio $test_ratio
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
proc ASC_check_ratio_closeness { DB_ROW BASE_VALUE TEST_VALUE LOW_REC_INDX LOW_REC_DELTA \
|
||||
LOW_REC_RATIO HIGH_REC_INDX HIGH_REC_DELTA HIGH_REC_RATIO } {
|
||||
|
||||
upvar $DB_ROW db_row
|
||||
upvar $BASE_VALUE base_value
|
||||
upvar $TEST_VALUE test_value
|
||||
upvar $LOW_REC_INDX low_record_indx
|
||||
upvar $LOW_REC_RATIO low_ratio
|
||||
upvar $LOW_REC_DELTA low_delta
|
||||
upvar $HIGH_REC_DELTA high_delta
|
||||
upvar $HIGH_REC_INDX high_record_indx
|
||||
upvar $HIGH_REC_RATIO high_ratio
|
||||
|
||||
if { $base_value > $test_value } \
|
||||
{
|
||||
set test_delta [expr ($base_value - $test_value)]
|
||||
if { $test_delta < $low_delta } \
|
||||
{
|
||||
set low_delta $test_delta
|
||||
set low_record_indx $db_row
|
||||
set low_ratio $test_value
|
||||
}
|
||||
} elseif { $base_value < $test_value } \
|
||||
{
|
||||
set test_delta [expr ($test_value - $base_value)]
|
||||
if { $test_delta < $high_delta } \
|
||||
{
|
||||
set high_delta $test_delta
|
||||
set high_record_indx $db_row
|
||||
set high_ratio $test_value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
proc ASC_interpolate_data { LOW_REC_INDX LOW_RATIO HIGH_REC_INDX HIGH_RATIO INPUT_RATIO } {
|
||||
|
||||
upvar $LOW_REC_INDX low_record_indx
|
||||
upvar $LOW_RATIO low_ratio
|
||||
upvar $HIGH_REC_INDX high_record_indx
|
||||
upvar $HIGH_RATIO high_ratio
|
||||
upvar $INPUT_RATIO input_ratio
|
||||
|
||||
global dbc_surface_speed
|
||||
global dbc_feed_per_tooth
|
||||
global dbc_depth_of_cut
|
||||
global dbc_stepover
|
||||
|
||||
global dbc_approach_percent
|
||||
global dbc_engage_percent
|
||||
global dbc_first_cut_percent
|
||||
global dbc_stepover_percent
|
||||
global dbc_retract_percent
|
||||
global dbc_return_percent
|
||||
global dbc_departure_percent
|
||||
|
||||
|
||||
ASC_get_machining_data low_record_indx low_depth_of_cut low_stepover \
|
||||
low_feed_per_tooth low_surface_speed
|
||||
|
||||
ASC_get_feedrate_percentages low_record_indx low_approach_percent \
|
||||
low_engage_percent low_first_cut_percent low_stepover_percent \
|
||||
low_retract_percent low_return_percent low_departure_percent
|
||||
|
||||
ASC_get_machining_data high_record_indx high_depth_of_cut high_stepover \
|
||||
high_feed_per_tooth high_surface_speed
|
||||
|
||||
ASC_get_feedrate_percentages high_record_indx high_approach_percent \
|
||||
high_engage_percent high_first_cut_percent high_stepover_percent \
|
||||
high_retract_percent high_return_percent high_departure_percent
|
||||
|
||||
set step [expr ($input_ratio - $low_ratio) / ($high_ratio - $low_ratio)]
|
||||
|
||||
set dbc_depth_of_cut [expr $low_depth_of_cut + $step * ($high_depth_of_cut - $low_depth_of_cut)]
|
||||
set dbc_stepover [expr $low_stepover+ $step * ($high_stepover - $low_stepover)]
|
||||
set dbc_feed_per_tooth [expr $low_feed_per_tooth + $step * ($high_feed_per_tooth - $low_feed_per_tooth)]
|
||||
set dbc_surface_speed [expr $low_surface_speed + $step * ($high_surface_speed - $low_surface_speed)]
|
||||
set dbc_approach_percent [expr int ([expr $low_approach_percent + \
|
||||
$step * ($high_approach_percent - $low_approach_percent)])]
|
||||
set dbc_engage_percent [expr int ([expr $low_engage_percent + \
|
||||
$step * ($high_engage_percent - $low_engage_percent)])]
|
||||
set dbc_first_cut_percent [expr int ([expr $low_first_cut_percent + \
|
||||
$step * ($high_first_cut_percent - $low_first_cut_percent)])]
|
||||
set dbc_stepover_percent [expr int ([expr $low_stepover_percent + \
|
||||
$step * ($high_stepover_percent - $low_stepover_percent)])]
|
||||
set dbc_retract_percent [expr int ([expr $low_retract_percent + \
|
||||
$step * ($high_retract_percent - $low_retract_percent)])]
|
||||
set dbc_return_percent [expr int ([expr $low_return_percent + \
|
||||
$step * ($high_return_percent - $low_return_percent)])]
|
||||
set dbc_departure_percent [expr int ([expr $low_departure_percent + \
|
||||
$step * ($high_departure_percent - $low_departure_percent)])]
|
||||
|
||||
ASC_set_engage_retract_to_rapid
|
||||
}
|
||||
|
||||
proc ASC_get_tool_projection_length {} {
|
||||
global dbc_tool_length
|
||||
global dbc_tool_diameter
|
||||
global dbc_tool_holder_offset
|
||||
global dbc_tool_tapered_shank_length
|
||||
global dbc_tool_tapered_shank_diameter
|
||||
|
||||
# In general the projected tool length is calculated from the tip of the tool to the first holder segment
|
||||
# Except when shank diameter is greater than tool diameter, the projected tool length is from the tool tip to the start of the shank
|
||||
if {[info exists dbc_tool_tapered_shank_length] && $dbc_tool_tapered_shank_length > 0.0} {
|
||||
if {$dbc_tool_tapered_shank_diameter > $dbc_tool_diameter} {
|
||||
return $dbc_tool_length
|
||||
} else {
|
||||
if {[info exists dbc_tool_holder_offset]} {
|
||||
return [expr $dbc_tool_length + $dbc_tool_tapered_shank_length - $dbc_tool_holder_offset]
|
||||
} else {
|
||||
return [expr $dbc_tool_length + $dbc_tool_tapered_shank_length]
|
||||
}
|
||||
}
|
||||
} elseif {[info exists dbc_tool_holder_offset]} {
|
||||
return [expr $dbc_tool_length - $dbc_tool_holder_offset]
|
||||
} else {
|
||||
return $dbc_tool_length
|
||||
}
|
||||
}
|
||||
|
||||
# To enable the new customization mechanism.
|
||||
# This should ALWAYS be the last line in the file.
|
||||
MOM_extend_for_customization UGII_CAM_CUSTOM_LIBRARY_FEEDS_SPEEDS_ASCII_DIR dbc_custom_ascii_machining_data.tcl
|
||||
57
feeds_speeds/ascii/part_materials.dat
Normal file
57
feeds_speeds/ascii/part_materials.dat
Normal file
@@ -0,0 +1,57 @@
|
||||
# PART_MATERIALS.DAT
|
||||
##########################################################################
|
||||
#
|
||||
# PURPOSE:
|
||||
#
|
||||
# This is the database file used for defining Part Material.
|
||||
#
|
||||
# REVISIONS:
|
||||
# Sl.No. Date Name Reason
|
||||
# 01 06/15/99 Subhash Initial
|
||||
# 02 07/31/99 Subhash Include Format statement
|
||||
# 03 10/29/99 Murthy Changes to data and file description
|
||||
# 04 29-jun-2004 Mark Rief Add P20 for HSM, reordered fields
|
||||
# 05 11-Oct-2005 rlm Add more HSM data
|
||||
# 06 18-Apr-2019 Reinier Capele Change text MAT0_00464 and MAT0_00153
|
||||
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
##
|
||||
## The following key words for Attribute ids are defined
|
||||
##
|
||||
## LIBREF partmaterial_libref - Unique record identifier
|
||||
## (Library Reference)
|
||||
## MATCODE material_code - Material Code
|
||||
## MATNAME material_name - Material Name (appears on the label)
|
||||
## HARDNESS material_hardness - Material Hardness
|
||||
## PARTMAT material_description - Material Description
|
||||
#########################################################################
|
||||
|
||||
#-----------------+--------------------------------------------+----------------
|
||||
FORMAT LIBRF MATCODE MATNAME HARDNESS PARTMAT
|
||||
#--------------------------------------------------------------------------------
|
||||
#DATA|MAT0_00001|1116|CARBON STEEL|100-150|FREE MACHINING CARBON STEELS,WROUGHT- Low Carbon Resulfurized
|
||||
#DATA|MAT0_00002|1116|CARBON STEEL|150-200|FREE MACHINING CARBON STEELS,WROUGHT - Low Carbon Resulfurized
|
||||
#DATA|MAT0_00059|4140SE|ALLOY STEEL|200-250|FREE MACHINING ALLOY STEELS, WROUGHT - Medium Carbon Resulfurized
|
||||
#DATA|MAT0_00103|4140|ALLOY STEEL|54-56|ALLOY STEELS,WROUGHT - Medium Carbon
|
||||
#DATA|MAT0_00104|4150|ALLOY STEEL|175-225|ALLOY STEELS, WROUGHT - Medium Carbon
|
||||
#DATA|MAT0_00105|4150|ALLOY STEEL|225-275|ALLOY STEELS, WROUGHT - Medium Carbon
|
||||
#DATA|MAT0_00106|4150|ALLOY STEEL|275-325|ALLOY STEELS, WROUGHT - Medium Carbon
|
||||
#DATA|MAT0_00108|4150|ALLOY STEEL|375-425|ALLOY STEELS, WROUGHT - Medium Carbon
|
||||
DATA|MAT0_00153|440C|STAINLESS STEEL|225-275 HB|STAINLESS STEELS, WROUGHT - Martensitic with Catalogue Machining Data
|
||||
#DATA|MAT0_00155|440A|STAINLESS STEEL|375-425 HB|STAINLESS STEELS, WROUGHT - Martensitic
|
||||
#DATA|MAT0_00174|4340|HS STEEL|225-300|HIGH STRENGTH STEELS, WROUGHT -
|
||||
#DATA|MAT0_00175|4340|HS STEEL|300-350|HIGH STRENGTH STEELS, WROUGHT -
|
||||
#DATA|MAT0_00176|4340|HS STEEL|350-400|HIGH STRENGTH STEELS, WROUGHT -
|
||||
#DATA|MAT0_00194|H13|TOOL STEEL|150-200 HB|TOOL STEELS, WROUGHT - Hot Work
|
||||
#DATA|MAT0_00266|7050|ALUMINUM|75-150 HB|ALUMINUM ALLOYS, WROUGHT -
|
||||
#DATA|MAT0_00281|210|COPPER|10-70 HRB|COPPER ALLOYS
|
||||
#DATA|MAT0_00464|P20|P20 TOOL STEEL|28-37 HRc|Mold Steel with Catalogue Machining Data
|
||||
DATA|MAT0_00600|P20|HSM P20 Prehardened|30-33 HRc|HSM With Proven Machining Data
|
||||
DATA|MAT0_00700|M416|HSM M416 Prehardened|40-44 HRc|HSM With Proven Machining Data
|
||||
DATA|MAT0_01100|H13|HSM H13 Prehardened|50-54 HRc|HSM with Proven Machining Data
|
||||
#DATA|MAT0_01200|A2 Calmax|HSM A2 Calmax|58 HRc|HSM With Proven Machining Data
|
||||
#DATA|MAT0_01300|D2|HSM D2|58-61 HRc|HSM With Proven Machining Data
|
||||
DATA|MAT0_02100|7079|HSM Aluminum 7079 High tensile||HSM With Proven Machining Data
|
||||
DATA|MAT0_02200|Copper|HSM Copper||HSM With Proven Machining Data
|
||||
|
||||
84
feeds_speeds/ascii/part_materials.def
Normal file
84
feeds_speeds/ascii/part_materials.def
Normal file
@@ -0,0 +1,84 @@
|
||||
##########################################################################
|
||||
#
|
||||
# PURPOSE:
|
||||
#
|
||||
# This is the database file used for defining "Cut Method" in
|
||||
# Machining method.
|
||||
#
|
||||
# REVISIONS:
|
||||
#
|
||||
# 00 23Mar99 Murthy R Mandaleeka Initial Version
|
||||
# 01 26JUL99 Subhash Changed order of attributes
|
||||
# presented
|
||||
# 02 29OCT99 Murthy Changed RSET names
|
||||
##########################################################################
|
||||
|
||||
DB_PREFIX "DB("
|
||||
DB_SUFFIX ")"
|
||||
ESS_PREFIX "ESS("
|
||||
ESS_SUFFIX ")"
|
||||
|
||||
#############################################################################
|
||||
# The list of DB_ALIAS
|
||||
#
|
||||
# DB_ALIAS <alias>
|
||||
# {
|
||||
# DB_ID < identifier of the cutter parameter in a UG part file >
|
||||
# DB_ID_TYPE < Type of the identifier >
|
||||
# d _ double
|
||||
# i _ integer
|
||||
# s _ string
|
||||
# }
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
DB_ALIAS matcode
|
||||
{
|
||||
DB_ID MATCODE
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "matcode"
|
||||
RSET_NAME "Code"
|
||||
}
|
||||
|
||||
DB_ALIAS matname
|
||||
{
|
||||
DB_ID MATNAME
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "matname"
|
||||
RSET_NAME "Name"
|
||||
}
|
||||
|
||||
DB_ALIAS partmat
|
||||
{
|
||||
DB_ID PARTMAT
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "partmat"
|
||||
RSET_NAME "Description"
|
||||
}
|
||||
|
||||
DB_ALIAS hardness
|
||||
{
|
||||
DB_ID HARDNESS
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "hardness"
|
||||
RSET_NAME "Hardness"
|
||||
}
|
||||
|
||||
DB_ALIAS libref
|
||||
{
|
||||
DB_ID LIBRF
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "libref"
|
||||
RSET_NAME "Library Reference"
|
||||
}
|
||||
|
||||
LIBREF libref
|
||||
|
||||
CLASS PART_MATERIAL
|
||||
{
|
||||
TYPE PART_MATERIAL
|
||||
QUERY "[1] == [1]"
|
||||
DIALOG libref matcode matname hardness partmat
|
||||
RSET libref matcode matname hardness partmat
|
||||
UI_NAME "Part Material"
|
||||
}
|
||||
473
feeds_speeds/ascii/part_materials.tcl
Normal file
473
feeds_speeds/ascii/part_materials.tcl
Normal file
@@ -0,0 +1,473 @@
|
||||
##############################################################################
|
||||
# REVISIONS
|
||||
# Date Who Reason
|
||||
# 03/24/99 mrm Initial
|
||||
# 05/19/99 mrm New Environment Variable
|
||||
# 07/21/99 Subhash Included dbc_general_ascii.tcl file
|
||||
# 07/21/99 Subhash Used general functions for
|
||||
# opening and reading dat files.
|
||||
# 08/06/99 Subhash Changed some functions to improve performance
|
||||
# 11/11/2003 rlm Add ASC_output_header
|
||||
# 01/30/2004 rlm Move ASC_write to dbc_ascii_general
|
||||
# 02/12/2004 rlm Add library revision information
|
||||
# 07/01/2004 rlm 1339644 Add proc DBC_ask_library_values
|
||||
# 12/06/2004 rlm 1369488 Add proc DBC_execute_query_for_count
|
||||
# 08/25/2005 rlm 5302379 Add proc DBC_translate_att_alias
|
||||
##############################################################################
|
||||
#
|
||||
# The format of each line in the text file is:
|
||||
#
|
||||
# libref Type Manufacturer Designation Control config_file
|
||||
#
|
||||
# partmat is a string
|
||||
# matcode is a string
|
||||
# matname is a string
|
||||
# description is a string
|
||||
# hardness is a string
|
||||
# libref is a string
|
||||
#
|
||||
# The DB_ID of a DB_ALIAS is its field number in the line (0-based)
|
||||
###############################################################################
|
||||
|
||||
|
||||
#---------------------------------------------
|
||||
# Non DBC Global Variables
|
||||
#---------------------------------------------
|
||||
#MOM_set_debug_mode ON
|
||||
#set dbFileName "[MOM_ask_env_var UGII_CAM_LIBRARY_FEEDS_SPEEDS_DATA_DIR]part_materials.dat"
|
||||
set DEBUG 0
|
||||
set fPointer ""
|
||||
|
||||
#---------------------------------------------
|
||||
# Global variables set by DBC for Input/Output
|
||||
#---------------------------------------------
|
||||
set dbc_lhs_exp ""
|
||||
set dbc_rhs_exp ""
|
||||
set dbc_relop ""
|
||||
set dbc_query ""
|
||||
set dbc_subqry1 ""
|
||||
set dbc_subqry2 ""
|
||||
set dbc_boolop ""
|
||||
set dbc_class_name ""
|
||||
set dbc_attr_count 0
|
||||
set dbc_attr_id ""
|
||||
set dbc_query_count 0
|
||||
set dbc_libref ""
|
||||
set dbc_var_list ""
|
||||
set asc_debug 0
|
||||
|
||||
#---------------------------------------------
|
||||
proc ASC_t_create_filename {env_var_name filename} \
|
||||
{
|
||||
#
|
||||
# Creates a complete filename by evaluating an environment variable
|
||||
# for the directory information
|
||||
#
|
||||
set env_var [MOM_ask_env_var $env_var_name]
|
||||
if { $env_var == "" } \
|
||||
{
|
||||
set message "Can't read environment variable $env_var_name"
|
||||
MOM_abort "\n $message"
|
||||
}
|
||||
|
||||
set fname ""
|
||||
set fname [append fname $env_var $filename]
|
||||
|
||||
return $fname
|
||||
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc MOM__boot {} {
|
||||
#---------------------------------------------
|
||||
|
||||
# source some general procedures
|
||||
|
||||
#
|
||||
# dbc_ascii_general.tcl
|
||||
#
|
||||
set filename \
|
||||
[ASC_t_create_filename "UGII_UG_LIBRARY_DIR" "dbc_ascii_general.tcl"]
|
||||
|
||||
|
||||
if { [catch {source $filename}] == "1" } \
|
||||
{
|
||||
set message "Can't load .tcl file: $filename"
|
||||
MOM_abort "\n $message"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
proc MOM__halt {} \
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#------------------------------------------------------------
|
||||
proc DBC_init_db { } \
|
||||
{
|
||||
global DEBUG
|
||||
global dataBase
|
||||
global lastRowNumber
|
||||
global dbFileName
|
||||
global fPointer
|
||||
|
||||
set asc_file_name ""
|
||||
set asc_part_units ""
|
||||
|
||||
set data_unit 0
|
||||
set mode 0
|
||||
|
||||
set env_var UGII_CAM_LIBRARY_FEEDS_SPEEDS_DATA_DIR
|
||||
set data_file_name [ASC_t_create_filename "$env_var" "part_materials.dat"]
|
||||
|
||||
|
||||
#
|
||||
# Set the filename for ASCII Data File
|
||||
#
|
||||
ASC_set_data_file_name
|
||||
|
||||
#
|
||||
# And load the file into memory
|
||||
#
|
||||
ASC_load_data_file $data_file_name $data_unit $mode
|
||||
|
||||
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc ASC_set_data_file_name {} {
|
||||
#---------------------------------------------
|
||||
global dbc_part_units
|
||||
global asc_file_name
|
||||
global asc_part_units
|
||||
|
||||
MOM_ask_part_units ;# writes to dbc_part_units
|
||||
|
||||
set env_var UGII_CAM_LIBRARY_FEEDS_SPEEDS_DATA_DIR
|
||||
set asc_file_name [ASC_t_create_filename "$env_var" "part_materials.dat"]
|
||||
set asc_part_units $dbc_part_units
|
||||
|
||||
}
|
||||
|
||||
|
||||
#---------------------------------------------
|
||||
proc ExtractExpression {DBC_EXP} {
|
||||
#---------------------------------------------
|
||||
upvar $DBC_EXP dbc_exp
|
||||
global dbc_db_prefix
|
||||
global dbc_db_suffix
|
||||
global dbc_ess_prefix
|
||||
global dbc_ess_suffix
|
||||
|
||||
DBC_ask_db_ess_prefix_suffix
|
||||
|
||||
#Removing DB Prefix and Suffix
|
||||
set pref_flag 0
|
||||
RemovePrefixSuffix dbc_exp dbc_db_prefix dbc_db_suffix pref_flag
|
||||
|
||||
#Removing ESS Prefix and Suffix
|
||||
set pref_flag 1
|
||||
RemovePrefixSuffix dbc_exp dbc_ess_prefix dbc_ess_suffix pref_flag
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc RemovePrefixSuffix {DBC_EXP PREFIX SUFFIX PREF_FLAG} {
|
||||
#---------------------------------------------
|
||||
upvar $DBC_EXP dbc_exp
|
||||
upvar $PREFIX prefix
|
||||
upvar $SUFFIX suffix
|
||||
upvar $PREF_FLAG pref_flag
|
||||
|
||||
set pref_len [string length $prefix]
|
||||
set ind 0
|
||||
set prefix_test [string first $prefix $dbc_exp]
|
||||
while {$prefix_test != -1}\
|
||||
{
|
||||
if {$prefix_test > 0}\
|
||||
{
|
||||
append temp_var [string range $dbc_exp 0 [expr $prefix_test - 1]]
|
||||
set dbc_exp [string range $dbc_exp $prefix_test end]
|
||||
set prefix_test [string first $prefix $dbc_exp]
|
||||
}
|
||||
|
||||
set end_val [string first $suffix $dbc_exp]
|
||||
set strt_len [expr $prefix_test + $pref_len]
|
||||
set end_len $end_val
|
||||
|
||||
if {$pref_flag}\
|
||||
{
|
||||
append temp_var [string range $dbc_exp $strt_len [expr $end_len - 1]]
|
||||
set dbc_exp [string range $dbc_exp [expr $end_val + 1] end]
|
||||
} else\
|
||||
{
|
||||
append temp_var [string range $dbc_exp $strt_len $end_len]
|
||||
set dbc_exp [string range $dbc_exp [expr $end_val + 2] end]
|
||||
}
|
||||
set prefix_test [string first $prefix $dbc_exp]
|
||||
|
||||
if {$prefix_test != -1}\
|
||||
{
|
||||
append temp_var [string range $dbc_exp 0 [expr $prefix_test - 1]]
|
||||
set dbc_exp [string range $dbc_exp $prefix_test end]
|
||||
set prefix_test [string first $prefix $dbc_exp]
|
||||
} else\
|
||||
{
|
||||
if {[string length $dbc_exp] > 0}\
|
||||
{
|
||||
append temp_var $dbc_exp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if {[info exists temp_var]}\
|
||||
{
|
||||
set dbc_exp $temp_var
|
||||
unset temp_var
|
||||
}
|
||||
}
|
||||
|
||||
#------------------------------------------------------------
|
||||
proc DBC_translate_att_alias { } {
|
||||
#------------------------------------------------------------
|
||||
|
||||
ASC_translate_att_alias
|
||||
|
||||
|
||||
}
|
||||
|
||||
#------------------------------------------------------------
|
||||
proc DBC_create_criterion { } {
|
||||
#------------------------------------------------------------
|
||||
global DEBUG
|
||||
global dbc_lhs_exp
|
||||
global dbc_rhs_exp
|
||||
global dbc_relop
|
||||
global dbc_query
|
||||
|
||||
if { "$DEBUG" == "1" } {
|
||||
}
|
||||
|
||||
# set dbc_query "\[$dbc_lhs_exp\] $dbc_relop \[$dbc_rhs_exp\]"
|
||||
|
||||
ASC_create_criterion
|
||||
|
||||
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_create_query { } {
|
||||
#------------------------------------------------------------------------
|
||||
global DEBUG
|
||||
global dbc_query
|
||||
global dbc_subqry1
|
||||
global dbc_subqry2
|
||||
global dbc_boolop
|
||||
|
||||
# set dbc_query "$dbc_subqry1 $dbc_boolop $dbc_subqry2"
|
||||
|
||||
ASC_create_query
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_execute_query { } {
|
||||
#------------------------------------------------------------------------
|
||||
global asc_database_count
|
||||
|
||||
ASC_execute_query
|
||||
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_execute_query_for_count { } {
|
||||
#------------------------------------------------------------------------
|
||||
global asc_database_count
|
||||
|
||||
ASC_execute_query_for_count
|
||||
|
||||
}
|
||||
|
||||
#---------------------------------------------------------------------
|
||||
proc DBC_retrieve { } {
|
||||
#---------------------------------------------------------------------
|
||||
global DEBUG
|
||||
global dbc_libref
|
||||
global dbc_retrieve_var_list
|
||||
global dataBase
|
||||
|
||||
global dbc_material_code
|
||||
global dbc_material_name
|
||||
global dbc_material_description
|
||||
global dbc_material_hardness
|
||||
global fPointer
|
||||
global asc_debug
|
||||
global asc_database_count
|
||||
global asc_file_name
|
||||
|
||||
if { $asc_debug == "1" } \
|
||||
{
|
||||
puts " =========================================="
|
||||
puts " procedure DBC_retrieve for cut methods"
|
||||
puts " libref -> $dbc_libref"
|
||||
}
|
||||
|
||||
#
|
||||
# Look for the desired libref
|
||||
#
|
||||
for {set db_row 0} {$db_row < $asc_database_count} {incr db_row 1} \
|
||||
{
|
||||
# Find the row for the desired LibRef
|
||||
set partmaterial_libref [ASC_ask_att_val LIBRF $db_row \
|
||||
"" 0 flag]
|
||||
if { $dbc_libref == $partmaterial_libref } \
|
||||
{
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if { $db_row >= $asc_database_count } \
|
||||
{
|
||||
set message "Error retrieving Part material from external library."
|
||||
set message "$message \n Cut Method with the library reference $dbc_libref"
|
||||
set message "$message \n does not exist in the"
|
||||
set message "$message \n ASCII Data File: $asc_file_name"
|
||||
MOM_abort "\n $message"
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# Get the part material code
|
||||
#
|
||||
|
||||
set dbc_material_code [ASC_ask_att_val MATCODE $db_row "%s" "" flag]
|
||||
|
||||
#
|
||||
# Get the Part Material Name
|
||||
#
|
||||
|
||||
set dbc_material_name [ASC_ask_att_val MATNAME $db_row "%s" "" flag]
|
||||
|
||||
#
|
||||
# Get Part material Description
|
||||
#
|
||||
|
||||
set dbc_material_description [ASC_ask_att_val PARTMAT $db_row "%s" "" flag]
|
||||
|
||||
#
|
||||
# Get Part Material Hardness
|
||||
#
|
||||
|
||||
set dbc_material_hardness [ASC_ask_att_val HARDNESS $db_row "%s" "" flag]
|
||||
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_write { } {
|
||||
#------------------------------------------------------------------------
|
||||
global asc_database_name
|
||||
|
||||
set asc_database_name "part_materials.dat"
|
||||
ASC_write
|
||||
}
|
||||
|
||||
#---------------------------------------------------------------------
|
||||
proc ASC_output_header { fileid } {
|
||||
#---------------------------------------------------------------------
|
||||
global dbc_attr_count
|
||||
global dbc_attr_aliases
|
||||
global dbc_attr_id
|
||||
global dbc_logname
|
||||
|
||||
|
||||
set daytime [clock seconds]
|
||||
set out_daytime [clock format $daytime -format "%a %b %d %Y %I:%M %p"]
|
||||
|
||||
set headerMessage "# PART_MATERIALS.DAT
|
||||
##########################################################################
|
||||
#
|
||||
# PURPOSE:
|
||||
#
|
||||
# This is the database file used for defining Part Material.
|
||||
#
|
||||
# REVISED:
|
||||
# $dbc_logname $out_daytime
|
||||
#
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
##
|
||||
## The following key words for Attribute ids are defined
|
||||
##
|
||||
## MATCODE material_code - Material Code
|
||||
## MATNAME material_name - Material Name (appears on the label)
|
||||
## PARTMAT material_description - Material Description
|
||||
## HARDNESS material_hardness - Material Hardness
|
||||
## LIBREF partmaterial_libref - Unique record identifier
|
||||
## (Library Reference)
|
||||
#########################################################################
|
||||
|
||||
#-----------------+--------------------------------------------+----------------"
|
||||
|
||||
puts $fileid "$headerMessage"
|
||||
|
||||
# load the database structure
|
||||
DBC_load_rset_data
|
||||
|
||||
|
||||
# output FORMAT line
|
||||
set format_line "FORMAT"
|
||||
for {set i 0} {$i < $dbc_attr_count} {incr i} \
|
||||
{
|
||||
DBC_ask_attr_id $dbc_attr_aliases($i)
|
||||
set format_line "$format_line $dbc_attr_id"
|
||||
}
|
||||
puts $fileid $format_line
|
||||
puts $fileid "#--------------------------------------------------------------------------------"
|
||||
}
|
||||
|
||||
proc DBC_ask_library_values {} \
|
||||
{
|
||||
#
|
||||
# global input
|
||||
global dbc_libref
|
||||
global dbc_db_ids_count
|
||||
global dbc_db_ids
|
||||
global dbc_event_error
|
||||
global asc_database_count
|
||||
|
||||
#
|
||||
# global output
|
||||
global dbc_return_status
|
||||
global dbc_db_ids_value
|
||||
|
||||
# Do not change this string
|
||||
set NO_MATCH "No matching record found for $dbc_libref"
|
||||
|
||||
set dbc_return_status 0
|
||||
#
|
||||
# Look for the desired libref
|
||||
#
|
||||
for {set db_row 0} {$db_row < $asc_database_count} {incr db_row 1} \
|
||||
{
|
||||
set partmaterial_libref [ASC_ask_att_val LIBRF $db_row \
|
||||
"" 0 flag]
|
||||
if { $dbc_libref == $partmaterial_libref } \
|
||||
{
|
||||
break
|
||||
}
|
||||
}
|
||||
#
|
||||
# and set the desired values
|
||||
#
|
||||
if { $db_row < $asc_database_count } \
|
||||
{
|
||||
for { set inx 0 } { $inx < $dbc_db_ids_count } { incr inx } \
|
||||
{
|
||||
set dbc_db_ids_value($dbc_db_ids($inx)) \
|
||||
[ASC_ask_att_val $dbc_db_ids($inx) $db_row "" "" flag]
|
||||
}
|
||||
} else \
|
||||
{
|
||||
set dbc_event_error $NO_MATCH
|
||||
set dbc_return_status 1
|
||||
}
|
||||
}
|
||||
32
feeds_speeds/ascii/process_force_parameters.dat
Normal file
32
feeds_speeds/ascii/process_force_parameters.dat
Normal file
@@ -0,0 +1,32 @@
|
||||
# PROCESS_FORCE_PARAMETERS.DAT
|
||||
##########################################################################
|
||||
#
|
||||
# PURPOSE:
|
||||
#
|
||||
# This is the database file used for defining Process Force Data in
|
||||
# an operation.
|
||||
#
|
||||
#
|
||||
# REVISIONS:
|
||||
# Date Name Reason
|
||||
# 11-Sep-2019 Gopal Srinath Initial Version
|
||||
#
|
||||
##########################################################################
|
||||
# The data is organized in the format separated by |
|
||||
# The fields in the database are in the following order:
|
||||
#
|
||||
# LIBRF - Unique record identifier(Library Reference)
|
||||
# PARTMAT - part_material_libref Part Part Material Library Reference
|
||||
# TOOLMAT - tool_material_libref Tool Material Library Reference
|
||||
# TEC - Tangential Edge Coefficient
|
||||
# TCC - Tangential Cutting Coefficient
|
||||
# NEC - Normal Edge Coefficient
|
||||
# NCC - Normal Cutting Coefficient
|
||||
# DEC - Distal Edge Coefficient
|
||||
# DCC - Distal Cutting Coefficient
|
||||
# ECT - Exponent for chip thickness
|
||||
#--------------------------------------------------------------------------------
|
||||
FORMAT LIBRF PARTMAT TOOLMAT TEC TCC NEC NCC DEC DCC ECT
|
||||
#--------------------------------------------------------------------------------
|
||||
DATA|PFD_10001|MAT0_00600|TMC0_00007|57.500541|-76.483117|-672.188980|4.626404|-11.790115|-10.980619|0.0
|
||||
DATA|PFD_10002|MAT0_00700|TMC0_00007|75.500541|-46.483117|-762.188980|8.626404|-22.790115|-5.980619|0.0
|
||||
117
feeds_speeds/ascii/process_force_parameters.def
Normal file
117
feeds_speeds/ascii/process_force_parameters.def
Normal file
@@ -0,0 +1,117 @@
|
||||
# *PROCESS_FORCE_PARAMETERS.DEF
|
||||
###############################################################################
|
||||
# Definitions File for Machining Data Database implemented in an ASCII text file
|
||||
###############################################################################
|
||||
# REVISIONS:
|
||||
#
|
||||
# 11-Sep-2019 Gopal Srinath Initial Version
|
||||
##########################################################################
|
||||
DB_PREFIX "db("
|
||||
DB_SUFFIX ")"
|
||||
ESS_PREFIX "ess("
|
||||
ESS_SUFFIX ")"
|
||||
|
||||
################################################################################
|
||||
# The list of DB_ALIAS
|
||||
#
|
||||
# DB_ALIAS <alias>
|
||||
# {
|
||||
# DB_ID < identifier of parameter in a UG part file >
|
||||
# DB_ID_TYPE < Type of the identifier >
|
||||
# d _ double
|
||||
# i _ integer
|
||||
# s _ string
|
||||
# }
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
|
||||
DB_ALIAS libref
|
||||
{
|
||||
DB_ID LIBRF
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Force Key"
|
||||
}
|
||||
|
||||
DB_ALIAS ptmtl
|
||||
{
|
||||
DB_ID PARTMAT
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Part Material"
|
||||
RSET_NAME "Part Material"
|
||||
}
|
||||
|
||||
DB_ALIAS tlmtl
|
||||
{
|
||||
DB_ID TOOLMAT
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Tool Material"
|
||||
RSET_NAME "Tool Material"
|
||||
}
|
||||
|
||||
DB_ALIAS tec
|
||||
{
|
||||
DB_ID TEC
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Tangential Edge Coefficient"
|
||||
RSET_NAME "Tangential Edge Coefficient"
|
||||
}
|
||||
|
||||
DB_ALIAS tcc
|
||||
{
|
||||
DB_ID TCC
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Tangential Cutting Coefficient"
|
||||
RSET_NAME "Tangential Cutting Coefficient"
|
||||
}
|
||||
|
||||
DB_ALIAS nec
|
||||
{
|
||||
DB_ID NEC
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Normal Edge Coefficient"
|
||||
RSET_NAME "Normal Edge Coefficient"
|
||||
}
|
||||
|
||||
DB_ALIAS ncc
|
||||
{
|
||||
DB_ID NCC
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Normal Cutting Coefficient"
|
||||
RSET_NAME "Normal Cutting Coefficient"
|
||||
}
|
||||
|
||||
DB_ALIAS dec
|
||||
{
|
||||
DB_ID DEC
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Distal Edge Coefficient"
|
||||
RSET_NAME "Distal Edge Coefficient"
|
||||
}
|
||||
|
||||
DB_ALIAS dcc
|
||||
{
|
||||
DB_ID DCC
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Distal Cutting Coefficient"
|
||||
RSET_NAME "Distal Cutting Coefficient"
|
||||
}
|
||||
|
||||
DB_ALIAS ect
|
||||
{
|
||||
DB_ID ECT
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Exponent for chip thickness"
|
||||
RSET_NAME "Exponent for chip thickness"
|
||||
}
|
||||
|
||||
LIBREF libref
|
||||
|
||||
CLASS FORCE_SETTINGS
|
||||
{
|
||||
TYPE FORCE_SETTINGS
|
||||
QUERY "[1] == [1]"
|
||||
DIALOG libref ptmtl tlmtl tec tcc nec ncc dec dcc ect
|
||||
RSET libref ptmtl tlmtl tec tcc nec ncc dec dcc ect
|
||||
UI_NAME "CAM Force Data Library"
|
||||
}
|
||||
204
feeds_speeds/ascii/process_force_parameters.tcl
Normal file
204
feeds_speeds/ascii/process_force_parameters.tcl
Normal file
@@ -0,0 +1,204 @@
|
||||
# PROCESS_FORCE_PARAMETERS.TCL
|
||||
###############################################################################
|
||||
# DBC Event Handler for database stored as ascii file
|
||||
###############################################################################
|
||||
# Revisions
|
||||
# Date Who Reason
|
||||
# 11-Sep-2019 Gopal Srinath Initial Version
|
||||
################################################################################
|
||||
#
|
||||
# The format of each line in the text file is:
|
||||
#
|
||||
# libref ptmtl tlmtl
|
||||
# libref is a string
|
||||
# ptmtl is code number for now
|
||||
# tlmtl is "HSS" "Carbide" "CBN"
|
||||
#
|
||||
# The DB_ID of a DB_ALIAS is its field number in the line (0-based)
|
||||
###############################################################################
|
||||
#MOM_set_debug_mode ON
|
||||
#---------------------------------------------
|
||||
# Non DBC Global Variables
|
||||
#---------------------------------------------
|
||||
#set dbFileName "[MOM_ask_env_var UGII_CAM_LIBRARY_FEEDS_SPEEDS_ASCII_DIR]process_force_parameters.dat" ; # The ASCII Database File
|
||||
set DEBUG 1
|
||||
set fPointer ""
|
||||
|
||||
#---------------------------------------------
|
||||
# Global variables set by DBC for Input/Output
|
||||
#---------------------------------------------
|
||||
set dbc_lhs_exp ""
|
||||
set dbc_rhs_exp ""
|
||||
set dbc_relop ""
|
||||
set dbc_query ""
|
||||
set dbc_subqry1 ""
|
||||
set dbc_subqry2 ""
|
||||
set dbc_boolop ""
|
||||
set dbc_class_name ""
|
||||
set dbc_attr_count 0
|
||||
set dbc_attr_id ""
|
||||
set dbc_query_count 0
|
||||
set dbc_libref ""
|
||||
set dbc_var_list ""
|
||||
set dbc_part_units "metric" ; # ( english : 0 , metric : 1)
|
||||
set dbc_part_material_libref ""
|
||||
set dbc_tool_material_libref ""
|
||||
|
||||
# Default double precision value format.
|
||||
set double_precision_format "g"
|
||||
|
||||
set asc_debug 0
|
||||
|
||||
proc ASC_t_create_filename {env_var_name filename} \
|
||||
{
|
||||
#
|
||||
# Creates a complete filename by evaluating an environment variable
|
||||
# for the directory information
|
||||
#
|
||||
set env_var [MOM_ask_env_var $env_var_name]
|
||||
|
||||
if { $env_var == "" } \
|
||||
{
|
||||
set message "Can't read environment variable $env_var_name"
|
||||
MOM_abort "\n $message"
|
||||
}
|
||||
|
||||
set fname ""
|
||||
set fname [append fname $env_var $filename]
|
||||
|
||||
return $fname
|
||||
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc MOM__boot {} {
|
||||
#---------------------------------------------
|
||||
|
||||
# source some general procedures
|
||||
|
||||
#
|
||||
# dbc_ascii_general.tcl
|
||||
#
|
||||
set filename \
|
||||
[ASC_t_create_filename "UGII_UG_LIBRARY_DIR" "dbc_ascii_general.tcl"]
|
||||
|
||||
|
||||
if { [catch {source $filename}] == "1" } \
|
||||
{
|
||||
set message "Can't load .tcl file: $filename"
|
||||
MOM_abort "\n $message"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
proc MOM__halt {} \
|
||||
{
|
||||
|
||||
}
|
||||
#---------------------------------------------
|
||||
proc DBC_init_db {} {
|
||||
#---------------------------------------------
|
||||
global DEBUG
|
||||
global dataBase
|
||||
global dbFileName
|
||||
global fPointer
|
||||
global asc_file_name
|
||||
global asc_database_count
|
||||
global dbc_dat_file_override
|
||||
global dbc_dat_file_name
|
||||
|
||||
set asc_file_name ""
|
||||
set asc_part_units ""
|
||||
set data_unit 0
|
||||
set mode 0
|
||||
|
||||
#
|
||||
# Set the filename for ASCII Data File
|
||||
#
|
||||
if {[info exists dbc_dat_file_override] } \
|
||||
{
|
||||
if {$dbc_dat_file_override == 1} \
|
||||
{
|
||||
set asc_file_name $dbc_dat_file_name
|
||||
} else \
|
||||
{
|
||||
ASC_set_data_file_name
|
||||
}
|
||||
} else \
|
||||
{
|
||||
ASC_set_data_file_name
|
||||
}
|
||||
|
||||
# Changed to improve performance
|
||||
# And load the file into memory
|
||||
#
|
||||
ASC_load_data_file $asc_file_name $data_unit $mode
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc ASC_set_data_file_name {} {
|
||||
#---------------------------------------------
|
||||
global dbc_part_units
|
||||
global asc_file_name
|
||||
global asc_part_units
|
||||
|
||||
MOM_ask_part_units ;# writes to dbc_part_units
|
||||
|
||||
set env_var UGII_CAM_LIBRARY_FEEDS_SPEEDS_ASCII_DIR
|
||||
set asc_file_name [ASC_t_create_filename "$env_var" "process_force_parameters.dat"]
|
||||
set asc_part_units $dbc_part_units
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc DBC_retrieve {} {
|
||||
#---------------------------------------------
|
||||
global DEBUG
|
||||
global fPointer
|
||||
global dbFileName
|
||||
global asc_database_count
|
||||
global asc_database
|
||||
global asc_units
|
||||
global asc_next_line
|
||||
global dbc_libref
|
||||
|
||||
set initialize_flag 1
|
||||
set asc_data_file_name $::asc_file_name
|
||||
set asc_next_line ""
|
||||
|
||||
#
|
||||
# Loop over all the DATA records
|
||||
#
|
||||
# The db_row variable has to be initialized (see also ASC_translate_att_alias)
|
||||
|
||||
set db_row 0
|
||||
while { $db_row < $asc_database_count } \
|
||||
{
|
||||
set ascii_part_material_libref [ASC_ask_att_val PARTMAT $db_row "" 0 flag]
|
||||
set ascii_tool_material_libref [ASC_ask_att_val TOOLMAT $db_row "" 0 flag]
|
||||
|
||||
set ::dbc_tec 0.0
|
||||
set ::dbc_tcc 0.0
|
||||
set ::dbc_nec 0.0
|
||||
set ::dbc_ncc 0.0
|
||||
set ::dbc_dec 0.0
|
||||
set ::dbc_dcc 0.0
|
||||
set ::dbc_ect 0.0
|
||||
|
||||
# See if row matches primary selection criteria
|
||||
if { $::dbc_part_material_libref == $ascii_part_material_libref && \
|
||||
$::dbc_tool_material_libref == $ascii_tool_material_libref } \
|
||||
{
|
||||
set ::dbc_tec [ASC_ask_att_val TEC $db_row "%$::double_precision_format" 0 flag]
|
||||
set ::dbc_tcc [ASC_ask_att_val TCC $db_row "%$::double_precision_format" 0 flag]
|
||||
set ::dbc_nec [ASC_ask_att_val NEC $db_row "%$::double_precision_format" 0 flag]
|
||||
set ::dbc_ncc [ASC_ask_att_val NCC $db_row "%$::double_precision_format" 0 flag]
|
||||
set ::dbc_dec [ASC_ask_att_val DEC $db_row "%$::double_precision_format" 0 flag]
|
||||
set ::dbc_dcc [ASC_ask_att_val DCC $db_row "%$::double_precision_format" 0 flag]
|
||||
set ::dbc_ect [ASC_ask_att_val ECT $db_row "%$::double_precision_format" 0 flag]
|
||||
return 0
|
||||
}
|
||||
incr db_row
|
||||
}
|
||||
# If we got here then there is no match
|
||||
set ::dbc_event_error "No appropriate machining data found"
|
||||
}
|
||||
33
feeds_speeds/ascii/sample_machining_data.csv
Normal file
33
feeds_speeds/ascii/sample_machining_data.csv
Normal file
@@ -0,0 +1,33 @@
|
||||
# The data is organized in the format separated by
|
||||
# The fields in the database are in the following order:
|
||||
#
|
||||
# LIBRF - Unique record identifier
|
||||
# (Desired Library Reference or empty cell and the system will determine a unique reference)
|
||||
# OPERTYPE - cutmthd_libref Cut Method Library Reference
|
||||
# PARTMAT - part_material_libref Part Material Library Reference
|
||||
# TOOLMAT - tool_material_libref Tool Material Library Reference
|
||||
# DIAM_IN - cutter diameter - inch
|
||||
# DIAM_MM - cutter diameter - mm
|
||||
# LENGTH_IN - cutter length - inch
|
||||
# LENGTH_MM - cutter length - mm
|
||||
# DPT_CUT_IN - dpth_of_cut Depth_of_cut(inch)
|
||||
# DPT_CUT_MM - dpth_of_cut Depth_of_cut(mm)
|
||||
# STEPOVER_IN - stepover distance (inch)
|
||||
# STEPOVER_MM - stepover distance (mm)
|
||||
# SURF_SPEED_FPM - surface_speed Suface Speed(FPM),,,,,,,,,,,,,,,,,,,,,,
|
||||
# SURF_SPEED_MPM - surface_speed Suface Speed(MPM),,,,,,,,,,,,,,,,,,,,,,
|
||||
# FEED_IPT - feed_per_tooth Feed per Tooth(IPT),,,,,,,,,,,,,,,,,,,,,,
|
||||
# FEED_MMPT - feed_per_tooth Feed per Tooth(MMPT),,,,,,,,,,,,,,,,,,,,,,
|
||||
# APPROACH_PCT - approach feedrate percentage of cut feedrate,,,,,,,,,,,,,,,,,,,,,,
|
||||
# ENGAGE_PCT - engage feedrate percentage of cut feedrate,,,,,,,,,,,,,,,,,,,,,,
|
||||
# FRSTCUT_PCT - first cut feedrate percentage of cut feedrate,,,,,,,,,,,,,,,,,,,,,,
|
||||
# STEPOVER_PCT - stepover feedrate percentage of cut feedrate,,,,,,,,,,,,,,,,,,,,,,
|
||||
# RETRACT_PCT - retract feedrate percentage of cut feedrate,,,,,,,,,,,,,,,,,,,,,,
|
||||
# RETURN_PCT - return feedrate percentage of cut feedrate,,,,,,,,,,,,,,,,,,,,,,
|
||||
# DEPART_PCT - departure feedrate percentage of cut feedrate,,,,,,,,,,,,,,,,,,,,,,
|
||||
#--------------------------------------------------------------------------------,,,,,,,,,,,,,,,,,,,,,,
|
||||
#LIBRF,OPERTYPE,PARTMAT,TOOLMAT,DIAM_IN,DIAM_MM,LENGTH_IN,LENGTH_MM,DPT_CUT_IN,DPT_CUT_MM,STEPOVER_IN,STEPOVER_MM,SURF_SPEED_FPM,SURF_SPEED_MPM,FEED_IPT,FEED_MMPT,APPROACH_PCT,ENGAGE_PCT,FRSTCUT_PCT,STEPOVER_PCT,RETRACT-PCT,RETRUN_PCT,DEPART_PCT
|
||||
THSO_00285,OPD0_00002,MAT0_00001,TMC0_00001,0.5,0,3,0,0.01,0.25,0,0,240,72.96,0.003,0.0762,0,90,60,0,0,0,0
|
||||
THSO_00286,OPD0_00002,MAT0_00001,TMC0_00001,0.25,0,2,0,0.05,1.25,0,0,160,48.64,0.005,0.127,0,90,60,0,0,0,0
|
||||
THSO_00287,OPD0_00002,MAT0_00001,TMC0_00001,0.75,0,4,0,0.1,2.5,0,0,125,38,0.01,0.254,0,90,60,0,0,0,0
|
||||
,OPD0_00002,MAT0_00001,TMC0_00001,0.125,0,1,0,0.1,2.5,0,0,125,38,0.01,0.254,0,90,60,0,0,0,0
|
||||
|
52
feeds_speeds/ascii/tool_machining_data.dat
Normal file
52
feeds_speeds/ascii/tool_machining_data.dat
Normal file
@@ -0,0 +1,52 @@
|
||||
# TOOL_MACHINING_DATA.DAT
|
||||
##########################################################################
|
||||
#
|
||||
# PURPOSE:
|
||||
#
|
||||
# This is the database file used for defining Machining Data in
|
||||
# an operation based only on the selected tool.
|
||||
#
|
||||
# REVISED:
|
||||
# M.Heisig Sun Feb 22 2026 02:11 PM
|
||||
#
|
||||
##########################################################################
|
||||
# The data is organized in the following format separated by |
|
||||
# The fields in the database are in the following order:
|
||||
#
|
||||
# LIBRF - library reference of cutter
|
||||
# DPT_CUT_IN - dpth_of_cut Depth_of_cut(inch)
|
||||
# DPT_CUT_MM - dpth_of_cut Depth_of_cut(mm)
|
||||
# STEPOVER_IN - stepover distance (inch)
|
||||
# STEPOVER_MM - stepover distance (mm)
|
||||
# SURF_SPEED_FPM - surface_speed Suface Speed(FPM)
|
||||
# SURF_SPEED_MPM - surface_speed Suface Speed(MPM)
|
||||
# FEED_IPT - feed_per_tooth Feed per Tooth(IPT)
|
||||
# FEED_MMPT - feed_per_tooth Feed per Tooth(MMPT)
|
||||
# APPROACH_PCT - approach feedrate percentage of cut feedrate
|
||||
# ENGAGE_PCT - engage feedrate percentage of cut feedrate
|
||||
# FRSTCUT_PCT - first cut feedrate percentage of cut feedrate
|
||||
# STEPOVER_PCT - stepover feedrate percentage of cut feedrate
|
||||
# RETRACT_PCT - retract feedrate percentage of cut feedrate
|
||||
# RETURN_PCT - return feedrate percentage of cut feedrate
|
||||
# DEPART_PCT - departure feedrate percentage of cut feedrate
|
||||
# NAME - unique record identifier
|
||||
# DESCR - description
|
||||
# PARTMAT - library reference of part material
|
||||
# CUTMTD - library reference of cut method
|
||||
# ENGAGE_SPEED_MPM - engage surface speeed Engage Suface Speed(MPM)
|
||||
# ENGAGE_SPEED_FPM - engage surface speeed Engage Suface Speed(IPM)
|
||||
# ENGAGE_FEED_MMPT - engage feed per tooth Engage Feed per Tooth(MPT)
|
||||
# ENGAGE_FEED_IPT - engage feed per tooth Engage Feed per Tooth(IPT)
|
||||
# ENGAGE_DIA_MM - engage diameter Engage Diameter (mm)
|
||||
# ENGAGE_DIA_IN - engage diameter Engage Diameter (inch)
|
||||
# ENGAGE_ANG - engage ramp angle
|
||||
# PRESET - preset record
|
||||
#--------------------------------------------------------------------------------
|
||||
FORMAT LIBRF DPT_CUT_IN DPT_CUT_MM STEPOVER_IN STEPOVER_MM SURF_SPEED_FPM SURF_SPEED_MPM FEED_IPT FEED_MMPT APPROACH_PCT ENGAGE_PCT FRSTCUT_PCT STEPOVER_PCT RETRACT_PCT RETURN_PCT DEPART_PCT NAME DESCR PARTMAT CUTMTD ENGAGE_SPEED_MPM ENGAGE_SPEED_FPM ENGAGE_FEED_MMPT ENGAGE_FEED_IPT ENGAGE_DIA_MM ENGAGE_DIA_IN ENGAGE_ANG PRESET
|
||||
#--------------------------------------------------------------------------------
|
||||
DATA|SF_D12_Z4|0.118110|3.000000|0.236220|6.000000|8.267089|209.984050|0.002756|0.070000|0|90|60|0|100|0|0|TMD_00001||||0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0
|
||||
DATA|NCA_D8_Z1_W142|0.000000|0.000000|0.000000|0.000000|2.519211|63.987960|0.000591|0.015000|0|90|60|0|100|0|0|TMD_00001||||0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0
|
||||
DATA|B_D8.8_Z2_W140|0.000000|0.000000|0.000000|0.000000|3.622281|92.005940|0.003937|0.100000|0|90|60|0|100|0|0|TMD_00001||||0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0
|
||||
DATA|TA_B_D8.8_Z2_W140|0.000000|0.000000|0.000000|0.000000|3.621737|91.992120|0.003937|0.100000|0|90|60|0|100|0|0|TMD_00001||||0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|1
|
||||
DATA|TA_NCA_D8_Z1_W142|0.000000|0.000000|0.000000|0.000000|2.519211|63.987960|0.000591|0.015000|0|90|60|0|100|0|0|TMD_00001||||0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|1
|
||||
DATA|TA_SF_D12_Z4|0.118110|3.000000|0.236220|6.000000|8.267089|209.984050|0.002756|0.070000|0|90|60|0|100|0|0|TMD_00001||||0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|1
|
||||
52
feeds_speeds/ascii/tool_machining_data.dat_bak
Normal file
52
feeds_speeds/ascii/tool_machining_data.dat_bak
Normal file
@@ -0,0 +1,52 @@
|
||||
# TOOL_MACHINING_DATA.DAT
|
||||
##########################################################################
|
||||
#
|
||||
# PURPOSE:
|
||||
#
|
||||
# This is the database file used for defining Machining Data in
|
||||
# an operation based only on the selected tool.
|
||||
#
|
||||
# REVISED:
|
||||
# M.Heisig Sun Feb 22 2026 02:11 PM
|
||||
#
|
||||
##########################################################################
|
||||
# The data is organized in the following format separated by |
|
||||
# The fields in the database are in the following order:
|
||||
#
|
||||
# LIBRF - library reference of cutter
|
||||
# DPT_CUT_IN - dpth_of_cut Depth_of_cut(inch)
|
||||
# DPT_CUT_MM - dpth_of_cut Depth_of_cut(mm)
|
||||
# STEPOVER_IN - stepover distance (inch)
|
||||
# STEPOVER_MM - stepover distance (mm)
|
||||
# SURF_SPEED_FPM - surface_speed Suface Speed(FPM)
|
||||
# SURF_SPEED_MPM - surface_speed Suface Speed(MPM)
|
||||
# FEED_IPT - feed_per_tooth Feed per Tooth(IPT)
|
||||
# FEED_MMPT - feed_per_tooth Feed per Tooth(MMPT)
|
||||
# APPROACH_PCT - approach feedrate percentage of cut feedrate
|
||||
# ENGAGE_PCT - engage feedrate percentage of cut feedrate
|
||||
# FRSTCUT_PCT - first cut feedrate percentage of cut feedrate
|
||||
# STEPOVER_PCT - stepover feedrate percentage of cut feedrate
|
||||
# RETRACT_PCT - retract feedrate percentage of cut feedrate
|
||||
# RETURN_PCT - return feedrate percentage of cut feedrate
|
||||
# DEPART_PCT - departure feedrate percentage of cut feedrate
|
||||
# NAME - unique record identifier
|
||||
# DESCR - description
|
||||
# PARTMAT - library reference of part material
|
||||
# CUTMTD - library reference of cut method
|
||||
# ENGAGE_SPEED_MPM - engage surface speeed Engage Suface Speed(MPM)
|
||||
# ENGAGE_SPEED_FPM - engage surface speeed Engage Suface Speed(IPM)
|
||||
# ENGAGE_FEED_MMPT - engage feed per tooth Engage Feed per Tooth(MPT)
|
||||
# ENGAGE_FEED_IPT - engage feed per tooth Engage Feed per Tooth(IPT)
|
||||
# ENGAGE_DIA_MM - engage diameter Engage Diameter (mm)
|
||||
# ENGAGE_DIA_IN - engage diameter Engage Diameter (inch)
|
||||
# ENGAGE_ANG - engage ramp angle
|
||||
# PRESET - preset record
|
||||
#--------------------------------------------------------------------------------
|
||||
FORMAT LIBRF DPT_CUT_IN DPT_CUT_MM STEPOVER_IN STEPOVER_MM SURF_SPEED_FPM SURF_SPEED_MPM FEED_IPT FEED_MMPT APPROACH_PCT ENGAGE_PCT FRSTCUT_PCT STEPOVER_PCT RETRACT_PCT RETURN_PCT DEPART_PCT NAME DESCR PARTMAT CUTMTD ENGAGE_SPEED_MPM ENGAGE_SPEED_FPM ENGAGE_FEED_MMPT ENGAGE_FEED_IPT ENGAGE_DIA_MM ENGAGE_DIA_IN ENGAGE_ANG PRESET
|
||||
#--------------------------------------------------------------------------------
|
||||
DATA|SF_D12_Z4|0.118110|3.000000|0.236220|6.000000|8.267089|209.984050|0.002756|0.070000|0|90|60|0|100|0|0|TMD_00001||||0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0
|
||||
DATA|TA_SF_D12_Z4|0.118110|3.000000|0.236220|6.000000|8.267089|209.984050|0.002756|0.070000|0|90|60|0|100|0|0|TMD_00001||||0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0
|
||||
DATA|NCA_D8_Z1_W142|0.000000|0.000000|0.000000|0.000000|2.519211|63.987960|0.000591|0.015000|0|90|60|0|100|0|0|TMD_00001||||0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0
|
||||
DATA|B_D8.8_Z2_W140|0.000000|0.000000|0.000000|0.000000|3.622281|92.005940|0.003937|0.100000|0|90|60|0|100|0|0|TMD_00001||||0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0
|
||||
DATA|TA_B_D8.8_Z2_W140|0.000000|0.000000|0.000000|0.000000|3.621737|91.992120|0.003937|0.100000|0|90|60|0|100|0|0|TMD_00001||||0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|1
|
||||
DATA|TA_NCA_D8_Z1_W142|0.000000|0.000000|0.000000|0.000000|2.519211|63.987960|0.000591|0.015000|0|90|60|0|100|0|0|TMD_00001||||0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|0.000000|1
|
||||
264
feeds_speeds/ascii/tool_machining_data.def
Normal file
264
feeds_speeds/ascii/tool_machining_data.def
Normal file
@@ -0,0 +1,264 @@
|
||||
# *TOOL_MACHINING_DATA.DEF
|
||||
###############################################################################
|
||||
# Definitions File for Tool Machining Data Database implemented in an ASCII text file
|
||||
###############################################################################
|
||||
# REVISIONS:
|
||||
#
|
||||
# 00 12Dec2003 rlm Initial Version
|
||||
# 01 22Aug2023 Jenny Zhang Add new attributes
|
||||
# 02 27Sep2023 Jenny Zhang Add attribute - preset
|
||||
# 03 04Dec2023 Romy Shi Adjust several attributes name
|
||||
##########################################################################
|
||||
DB_PREFIX "db("
|
||||
DB_SUFFIX ")"
|
||||
ESS_PREFIX "ess("
|
||||
ESS_SUFFIX ")"
|
||||
|
||||
################################################################################
|
||||
# The list of DB_ALIAS
|
||||
#
|
||||
# DB_ALIAS <alias>
|
||||
# {
|
||||
# DB_ID < identifier of parameter in a UG part file >
|
||||
# DB_ID_TYPE < Type of the identifier >
|
||||
# d _ double
|
||||
# i _ integer
|
||||
# s _ string
|
||||
# }
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
|
||||
DB_ALIAS libref
|
||||
{
|
||||
DB_ID LIBRF
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Tool Key"
|
||||
}
|
||||
|
||||
DB_ALIAS depthinch
|
||||
{
|
||||
DB_ID DPT_CUT_IN
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Depth"
|
||||
RSET_NAME "Depth - Inch"
|
||||
}
|
||||
|
||||
DB_ALIAS depthmm
|
||||
{
|
||||
DB_ID DPT_CUT_MM
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Depth"
|
||||
RSET_NAME "Depth - mm"
|
||||
}
|
||||
|
||||
DB_ALIAS stepover_in
|
||||
{
|
||||
DB_ID STEPOVER_IN
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Stepover"
|
||||
RSET_NAME "Stepover - Inch"
|
||||
}
|
||||
|
||||
DB_ALIAS stepover_mm
|
||||
{
|
||||
DB_ID STEPOVER_MM
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Stepover"
|
||||
RSET_NAME "stepover - mm"
|
||||
}
|
||||
|
||||
DB_ALIAS speedinch
|
||||
{
|
||||
DB_ID SURF_SPEED_FPM
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Surface Speed"
|
||||
RSET_NAME "Surface Speed - Inch"
|
||||
}
|
||||
|
||||
DB_ALIAS speedmm
|
||||
{
|
||||
DB_ID SURF_SPEED_MPM
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Surface Speed"
|
||||
RSET_NAME "Surface Speed - mm"
|
||||
}
|
||||
|
||||
DB_ALIAS feedinch
|
||||
{
|
||||
DB_ID FEED_IPT
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Feed per Tooth"
|
||||
RSET_NAME "Feed per Tooth - Inch"
|
||||
}
|
||||
|
||||
DB_ALIAS feedmm
|
||||
{
|
||||
DB_ID FEED_MMPT
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Feed per Tooth"
|
||||
RSET_NAME "Feed per Tooth - mm"
|
||||
}
|
||||
|
||||
DB_ALIAS approach_pct
|
||||
{
|
||||
DB_ID APPROACH_PCT
|
||||
DB_ID_TYPE i
|
||||
DIALOG_NAME "Approach"
|
||||
RSET_NAME "Approach"
|
||||
}
|
||||
|
||||
DB_ALIAS engage_pct
|
||||
{
|
||||
DB_ID ENGAGE_PCT
|
||||
DB_ID_TYPE i
|
||||
DIALOG_NAME "Engage"
|
||||
RSET_NAME "Engage"
|
||||
}
|
||||
|
||||
DB_ALIAS frstcut_pct
|
||||
{
|
||||
DB_ID FRSTCUT_PCT
|
||||
DB_ID_TYPE i
|
||||
DIALOG_NAME "First Cut"
|
||||
RSET_NAME "First Cut"
|
||||
}
|
||||
|
||||
DB_ALIAS stepover_pct
|
||||
{
|
||||
DB_ID STEPOVER_PCT
|
||||
DB_ID_TYPE i
|
||||
DIALOG_NAME "Stepover"
|
||||
RSET_NAME "Stepover"
|
||||
}
|
||||
|
||||
DB_ALIAS retract_pct
|
||||
{
|
||||
DB_ID RETRACT_PCT
|
||||
DB_ID_TYPE i
|
||||
DIALOG_NAME "Retract"
|
||||
RSET_NAME "Retract"
|
||||
}
|
||||
|
||||
DB_ALIAS return_pct
|
||||
{
|
||||
DB_ID RETURN_PCT
|
||||
DB_ID_TYPE i
|
||||
DIALOG_NAME "Return"
|
||||
RSET_NAME "Return"
|
||||
}
|
||||
|
||||
DB_ALIAS depart_pct
|
||||
{
|
||||
DB_ID DEPART_PCT
|
||||
DB_ID_TYPE i
|
||||
DIALOG_NAME "Depart"
|
||||
RSET_NAME "Depart"
|
||||
}
|
||||
|
||||
DB_ALIAS name
|
||||
{
|
||||
DB_ID NAME
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Name"
|
||||
RSET_NAME "Name"
|
||||
}
|
||||
|
||||
DB_ALIAS descr
|
||||
{
|
||||
DB_ID DESCR
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Description"
|
||||
RSET_NAME "Description"
|
||||
}
|
||||
|
||||
DB_ALIAS part_mat
|
||||
{
|
||||
DB_ID PARTMAT
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Part Material"
|
||||
RSET_NAME "Part Material"
|
||||
}
|
||||
|
||||
DB_ALIAS cut_method
|
||||
{
|
||||
DB_ID CUTMTD
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Cut Method"
|
||||
RSET_NAME "Cut Method"
|
||||
}
|
||||
|
||||
DB_ALIAS engage_speed_mm
|
||||
{
|
||||
DB_ID ENGAGE_SPEED_MPM
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Engage Surface Speed"
|
||||
RSET_NAME "Engage Surface Speed - mm"
|
||||
}
|
||||
|
||||
DB_ALIAS engage_speed_in
|
||||
{
|
||||
DB_ID ENGAGE_SPEED_FPM
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Engage Surface Speed"
|
||||
RSET_NAME "Engage Surface Speed - Inch"
|
||||
}
|
||||
|
||||
DB_ALIAS engage_feed_mm
|
||||
{
|
||||
DB_ID ENGAGE_FEED_MMPT
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Engage Feed per Tooth"
|
||||
RSET_NAME "Engage Feed per Tooth - mm"
|
||||
}
|
||||
|
||||
DB_ALIAS engage_feed_in
|
||||
{
|
||||
DB_ID ENGAGE_FEED_IPT
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Engage Feed per Tooth"
|
||||
RSET_NAME "Engage Feed per Tooth - Inch"
|
||||
}
|
||||
|
||||
DB_ALIAS engage_dia_mm
|
||||
{
|
||||
DB_ID ENGAGE_DIA_MM
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Engage Diameter"
|
||||
RSET_NAME "Engage Diameter - mm"
|
||||
}
|
||||
|
||||
DB_ALIAS engage_dia_in
|
||||
{
|
||||
DB_ID ENGAGE_DIA_IN
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Engage Diameter"
|
||||
RSET_NAME "Engage Diameter - Inch"
|
||||
}
|
||||
|
||||
DB_ALIAS engage_ang
|
||||
{
|
||||
DB_ID ENGAGE_ANG
|
||||
DB_ID_TYPE d
|
||||
DIALOG_NAME "Engage Ramp Angle"
|
||||
RSET_NAME "Engage Ramp Angle"
|
||||
}
|
||||
|
||||
DB_ALIAS preset
|
||||
{
|
||||
DB_ID PRESET
|
||||
DB_ID_TYPE i
|
||||
DIALOG_NAME "Preset"
|
||||
RSET_NAME "Preset"
|
||||
}
|
||||
|
||||
LIBREF libref
|
||||
|
||||
CLASS TOOL_MACH_DATA
|
||||
{
|
||||
TYPE TOOL_MACH_DATA
|
||||
QUERY "[1] == [1]"
|
||||
DIALOG libref depthinch speedinch feedinch
|
||||
RSET libref depthinch depthmm stepover_in stepover_mm speedinch speedmm feedinch feedmm approach_pct engage_pct frstcut_pct stepover_pct retract_pct return_pct depart_pct name descr part_mat cut_method engage_speed_mm engage_speed_in engage_feed_mm engage_feed_in engage_dia_mm engage_dia_in engage_ang preset
|
||||
UI_NAME "CAM Tool Machining Data Library"
|
||||
}
|
||||
677
feeds_speeds/ascii/tool_machining_data.tcl
Normal file
677
feeds_speeds/ascii/tool_machining_data.tcl
Normal file
@@ -0,0 +1,677 @@
|
||||
# *TOOL_MACHINING_DATA.TCL
|
||||
###############################################################################
|
||||
# tool_machining_data.tcl - DBC Event Handler for database stored as ascii file
|
||||
###############################################################################
|
||||
# Revisions
|
||||
# Date Who Reason
|
||||
# 12Dec2003 rlm Initial
|
||||
# 30Jan2004 rlm Move ASC_write to dbc_ascii_general
|
||||
# 12Feb2004 rlm Add library revision information
|
||||
# 26Oct2018 Shorbojeet Das PR8340732: Add customization support for double precision control.
|
||||
# 08Nov2018 Updates
|
||||
# 22Aug2023 Jenny Zhang Add new attributes
|
||||
# 13Sep2023 Romy Shi MFEC-42148: Modify DBC_retrieve for support retrieve enhanced machining data
|
||||
# 26Oct2023 Romy Shi MFEC-45967: Adjust wrong paramters
|
||||
# 31Oct2023 Romy Shi MFEC-45968: Refactor logic for retrieve enhanced machining data
|
||||
# 02Nov2023 Xi Wang MFEC-45912: Change format after output new header
|
||||
# 09Nov2023 Jingzhao Zhang MFEC-46854: Return name when auto set preset record
|
||||
# 09Nov2023 Xi Wang MFEC-46624: Add DBC_find_select
|
||||
# 28Nov2023 Romy Shi MFEC-47510: Modify logic for retrieve enhanced machining data
|
||||
# 04Feb2024 Jingzhao Zhang MFEC-48916: Remove EnhancedToolMachiningData
|
||||
# 01Mar2024 Xi Wang MFEC-50674: Support old dat with no preset in mach data
|
||||
# 29Mar2024 XI Wang MFEC-52010: In retrieve, return error if no machining data in library
|
||||
# 18Jun2024 Jingzhao Zhang MFEC-54164: Correct comments
|
||||
################################################################################
|
||||
#
|
||||
# The format of each line in the text file is:
|
||||
#
|
||||
# libref depth_in depth_mm stepover_in stepover_mm speed_in speed_mm
|
||||
# feed_in feed_mm approach_pct engage_pct frstcut_pct
|
||||
# stepover_pct retract_pct return_pct depart_pct
|
||||
#
|
||||
# libref is a string
|
||||
# depth_in is a double
|
||||
# depth_mm is a double
|
||||
# stepover_in is a double
|
||||
# stepover_mm is a double
|
||||
# speed_in is a double
|
||||
# speed_mm is a double
|
||||
# feed_in is a double
|
||||
# feed_mm is a double
|
||||
# approach_pct is an integer
|
||||
# engage_pct is an integer
|
||||
# frstcut_pct is an integer
|
||||
# stepover_pct is an integer
|
||||
# retract_pct is an integer
|
||||
# return_pct is an integer
|
||||
# depart_pct is an integer
|
||||
#
|
||||
# The DB_ID of a DB_ALIAS is its field number in the line (0-based)
|
||||
###############################################################################
|
||||
#MOM_set_debug_mode ON
|
||||
#---------------------------------------------
|
||||
# Non DBC Global Variables
|
||||
#---------------------------------------------
|
||||
#set dbFileName "[MOM_ask_env_var UGII_CAM_LIBRARY_FEEDS_SPEEDS_DATA_DIR]tool_machining_data.dat" ; # The ASCII Database File
|
||||
set DEBUG 1
|
||||
set fPointer ""
|
||||
|
||||
#---------------------------------------------
|
||||
# Global variables set by DBC for Input/Output
|
||||
#---------------------------------------------
|
||||
set dbc_lhs_exp ""
|
||||
set dbc_rhs_exp ""
|
||||
set dbc_relop ""
|
||||
set dbc_query ""
|
||||
set dbc_subqry1 ""
|
||||
set dbc_subqry2 ""
|
||||
set dbc_boolop ""
|
||||
set dbc_class_name ""
|
||||
set dbc_attr_count 0
|
||||
set dbc_attr_id ""
|
||||
set dbc_query_count 0
|
||||
set dbc_libref ""
|
||||
set dbc_var_list ""
|
||||
set dbc_tool_diameter ""
|
||||
set dbc_tool_height ""
|
||||
set dbc_name ""
|
||||
set dbc_part_units "english" ; # ( english : 0 , metric : 1)
|
||||
|
||||
# Default double precision value format.
|
||||
set double_precision_format "g"
|
||||
|
||||
#
|
||||
# Express feedrates for the following feed types
|
||||
# as percentages of Cut feedrate.
|
||||
# A value of 0 indicates no relation to Cut feedrate.
|
||||
#
|
||||
set dbc_engage_percent 90
|
||||
set dbc_first_cut_percent 60
|
||||
set dbc_approach_percent 0
|
||||
set dbc_stepover_percent 0
|
||||
set dbc_retract_percent 0
|
||||
set dbc_departure_percent 0
|
||||
set dbc_return_percent 0
|
||||
set asc_debug 0
|
||||
|
||||
proc ASC_t_create_filename {env_var_name filename} \
|
||||
{
|
||||
#
|
||||
# Creates a complete filename by evaluating an environment variable
|
||||
# for the directory information
|
||||
#
|
||||
set env_var [MOM_ask_env_var $env_var_name]
|
||||
|
||||
if { $env_var == "" } \
|
||||
{
|
||||
set message "Can't read environment variable $env_var_name"
|
||||
MOM_abort "\n $message"
|
||||
}
|
||||
|
||||
set fname ""
|
||||
set fname [append fname $env_var $filename]
|
||||
|
||||
return $fname
|
||||
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc MOM__boot {} {
|
||||
#---------------------------------------------
|
||||
|
||||
# source some general procedures
|
||||
|
||||
#
|
||||
# dbc_ascii_general.tcl
|
||||
#
|
||||
set filename \
|
||||
[ASC_t_create_filename "UGII_UG_LIBRARY_DIR" "dbc_ascii_general.tcl"]
|
||||
|
||||
|
||||
if { [catch {source $filename}] == "1" } \
|
||||
{
|
||||
set message "Can't load .tcl file: $filename"
|
||||
MOM_abort "\n $message"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
proc MOM__halt {} \
|
||||
{
|
||||
|
||||
}
|
||||
#---------------------------------------------
|
||||
proc DBC_init_db {} {
|
||||
#---------------------------------------------
|
||||
global DEBUG
|
||||
global dataBase
|
||||
global dbFileName
|
||||
global fPointer
|
||||
global asc_file_name
|
||||
global asc_database_count
|
||||
|
||||
set asc_file_name ""
|
||||
set asc_part_units ""
|
||||
set data_unit 0
|
||||
set mode 0
|
||||
|
||||
#
|
||||
# Set the filename for ASCII Data File
|
||||
#
|
||||
ASC_set_data_file_name
|
||||
|
||||
# Changed to improve performance
|
||||
# And load the file into memory
|
||||
#
|
||||
ASC_load_data_file $asc_file_name $data_unit $mode
|
||||
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc ASC_set_data_file_name {} {
|
||||
#---------------------------------------------
|
||||
global dbc_part_units
|
||||
global asc_file_name
|
||||
global asc_part_units
|
||||
|
||||
MOM_ask_part_units ;# writes to dbc_part_units
|
||||
|
||||
set env_var UGII_CAM_LIBRARY_FEEDS_SPEEDS_DATA_DIR
|
||||
set asc_file_name [ASC_t_create_filename "$env_var" "tool_machining_data.dat"]
|
||||
set asc_part_units $dbc_part_units
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc ASC_get_machining_data { DB_ROW CUT_DEPTH STEPOVER FEED_VALUE SPEED_VALUE } {
|
||||
#---------------------------------------------
|
||||
upvar $DB_ROW db_row
|
||||
upvar $CUT_DEPTH asc_cut_value
|
||||
upvar $STEPOVER asc_stepover
|
||||
upvar $FEED_VALUE asc_feed_value
|
||||
upvar $SPEED_VALUE asc_speed_value
|
||||
|
||||
global dbc_part_units
|
||||
|
||||
if { $dbc_part_units == "english"} \
|
||||
{
|
||||
set asc_cut_value [ASC_ask_att_val DPT_CUT_IN $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_stepover [ASC_ask_att_val STEPOVER_IN $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_speed_value [ASC_ask_att_val SURF_SPEED_FPM $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_feed_value [ASC_ask_att_val FEED_IPT $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
} else \
|
||||
{
|
||||
set asc_cut_value [ASC_ask_att_val DPT_CUT_MM $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_stepover [ASC_ask_att_val STEPOVER_MM $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_speed_value [ASC_ask_att_val SURF_SPEED_MPM $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_feed_value [ASC_ask_att_val FEED_MMPT $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
}
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc ASC_get_feedrate_percentages { DB_ROW APPROACH_PERCENT ENGAGE_PERCENT \
|
||||
FIRSTCUT_PERCENT STEPOVER_PERCENT RETRACT_PERCENT RETURN_PERCENT DEPART_PERCENT } {
|
||||
#---------------------------------------------
|
||||
upvar $DB_ROW db_row
|
||||
upvar $APPROACH_PERCENT asc_approach_pct
|
||||
upvar $ENGAGE_PERCENT asc_engage_pct
|
||||
upvar $FIRSTCUT_PERCENT asc_firstcut_pct
|
||||
upvar $STEPOVER_PERCENT asc_stepover_pct
|
||||
upvar $RETRACT_PERCENT asc_retract_pct
|
||||
upvar $RETURN_PERCENT asc_return_pct
|
||||
upvar $DEPART_PERCENT asc_depart_pct
|
||||
|
||||
set asc_approach_pct [ASC_ask_att_val APPROACH_PCT $db_row \
|
||||
"%d" 0 flag]
|
||||
set asc_engage_pct [ASC_ask_att_val ENGAGE_PCT $db_row \
|
||||
"%d" 0 flag]
|
||||
set asc_firstcut_pct [ASC_ask_att_val FRSTCUT_PCT $db_row \
|
||||
"%d" 0 flag]
|
||||
set asc_stepover_pct [ASC_ask_att_val STEPOVER_PCT $db_row \
|
||||
"%d" 0 flag]
|
||||
set asc_retract_pct [ASC_ask_att_val RETRACT_PCT $db_row \
|
||||
"%d" 0 flag]
|
||||
set asc_return_pct [ASC_ask_att_val RETURN_PCT $db_row \
|
||||
"%d" 0 flag]
|
||||
set asc_depart_pct [ASC_ask_att_val DEPART_PCT $db_row \
|
||||
"%d" 0 flag]
|
||||
|
||||
if { $asc_engage_pct == 0 } \
|
||||
{
|
||||
set asc_engage_pct "RAPID"
|
||||
}
|
||||
if { $asc_retract_pct == 0 } \
|
||||
{
|
||||
set asc_retract_pct "RAPID"
|
||||
}
|
||||
}
|
||||
|
||||
proc ASC_get_engage_data { DB_ROW ENGAGE_SPEED ENGAGE_FEED ENGAGE_DIA ENGAGE_ANG } {
|
||||
#---------------------------------------------
|
||||
upvar $DB_ROW db_row
|
||||
upvar $ENGAGE_SPEED asc_engage_speed
|
||||
upvar $ENGAGE_FEED asc_engage_feed
|
||||
upvar $ENGAGE_DIA asc_engage_dia
|
||||
upvar $ENGAGE_ANG asc_engage_ang
|
||||
|
||||
global dbc_part_units
|
||||
|
||||
if { $dbc_part_units == "english"} \
|
||||
{
|
||||
set asc_engage_speed [ASC_ask_att_val ENGAGE_SPEED_FPM $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_engage_feed [ASC_ask_att_val ENGAGE_FEED_IPT $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_engage_dia [ASC_ask_att_val ENGAGE_DIA_IN $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
|
||||
} else \
|
||||
{
|
||||
set asc_engage_speed [ASC_ask_att_val ENGAGE_SPEED_MPM $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_engage_feed [ASC_ask_att_val ENGAGE_FEED_MMPT $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
set asc_engage_dia [ASC_ask_att_val ENGAGE_DIA_MM $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
}
|
||||
|
||||
set asc_engage_ang [ASC_ask_att_val ENGAGE_ANG $db_row \
|
||||
"%$::double_precision_format" 0 flag]
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_create_query { } {
|
||||
#------------------------------------------------------------------------
|
||||
global DEBUG
|
||||
global dbc_query
|
||||
global dbc_subqry1
|
||||
global dbc_subqry2
|
||||
global dbc_boolop
|
||||
|
||||
# set dbc_query "$dbc_subqry1 $dbc_boolop $dbc_subqry2"
|
||||
|
||||
ASC_create_query
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_execute_query { } {
|
||||
#------------------------------------------------------------------------
|
||||
global asc_database_count
|
||||
|
||||
ASC_execute_query
|
||||
|
||||
}
|
||||
|
||||
proc DBC_find_select {} {
|
||||
global DEBUG
|
||||
global dbc_event_error
|
||||
global dbc_part_units
|
||||
|
||||
global dbc_surface_speed
|
||||
global dbc_feed_per_tooth
|
||||
global dbc_depth_of_cut
|
||||
global dbc_stepover
|
||||
|
||||
global dbc_approach_percent
|
||||
global dbc_engage_percent
|
||||
global dbc_first_cut_percent
|
||||
global dbc_stepover_percent
|
||||
global dbc_retract_percent
|
||||
global dbc_return_percent
|
||||
global dbc_departure_percent
|
||||
global fPointer
|
||||
global dbFileName
|
||||
global asc_database_count
|
||||
global asc_database
|
||||
global asc_file_name
|
||||
global file_unit
|
||||
global asc_units
|
||||
global asc_next_line
|
||||
global dbc_libref
|
||||
global dbc_engage_speed
|
||||
global dbc_engage_feed
|
||||
global dbc_engage_dia
|
||||
global dbc_engage_ang
|
||||
global dbc_cutmthd_libref
|
||||
global dbc_part_material_libref
|
||||
|
||||
global dbc_selected_name
|
||||
|
||||
set index 0
|
||||
|
||||
set initialize_flag 1
|
||||
set asc_data_file_name $asc_file_name
|
||||
set asc_next_line ""
|
||||
|
||||
if { $dbc_part_units == "english" } \
|
||||
{
|
||||
set file_unit $asc_units(inch)
|
||||
} else \
|
||||
{
|
||||
set file_unit $asc_units(mm)
|
||||
}
|
||||
|
||||
if { [info exists dbc_selected_name] && $dbc_selected_name != "" } \
|
||||
{
|
||||
set db_row 0
|
||||
while { $db_row < $asc_database_count } \
|
||||
{
|
||||
set ascii_libref [ ASC_ask_att_val LIBRF $db_row "" 0 flag]
|
||||
|
||||
set ascii_name [ ASC_ask_att_val NAME $db_row "" 0 flag]
|
||||
|
||||
# See if row matches requested conditions
|
||||
if {$dbc_libref == $ascii_libref && $dbc_selected_name == $ascii_name} \
|
||||
{
|
||||
# Got a matching record, get remaining data and return
|
||||
ASC_get_machining_data db_row dbc_depth_of_cut dbc_stepover \
|
||||
dbc_feed_per_tooth dbc_surface_speed
|
||||
|
||||
ASC_get_feedrate_percentages db_row dbc_approach_percent \
|
||||
dbc_engage_percent dbc_first_cut_percent dbc_stepover_percent \
|
||||
dbc_retract_percent dbc_return_percent dbc_departure_percent
|
||||
|
||||
ASC_get_engage_data db_row dbc_engage_speed dbc_engage_feed \
|
||||
dbc_engage_dia dbc_engage_ang
|
||||
return 0
|
||||
}
|
||||
incr db_row
|
||||
}
|
||||
}
|
||||
|
||||
set dbc_event_error "No appropriate machining data found"
|
||||
}
|
||||
|
||||
|
||||
#---------------------------------------------
|
||||
proc DBC_retrieve {} {
|
||||
#---------------------------------------------
|
||||
global DEBUG
|
||||
global dbc_event_error
|
||||
global dbc_part_units
|
||||
|
||||
global dbc_surface_speed
|
||||
global dbc_feed_per_tooth
|
||||
global dbc_depth_of_cut
|
||||
global dbc_stepover
|
||||
|
||||
global dbc_approach_percent
|
||||
global dbc_engage_percent
|
||||
global dbc_first_cut_percent
|
||||
global dbc_stepover_percent
|
||||
global dbc_retract_percent
|
||||
global dbc_return_percent
|
||||
global dbc_departure_percent
|
||||
global fPointer
|
||||
global dbFileName
|
||||
global asc_database_count
|
||||
global asc_database
|
||||
global asc_file_name
|
||||
global file_unit
|
||||
global asc_units
|
||||
global asc_next_line
|
||||
global dbc_libref
|
||||
global dbc_engage_speed
|
||||
global dbc_engage_feed
|
||||
global dbc_engage_dia
|
||||
global dbc_engage_ang
|
||||
global dbc_cutmthd_libref
|
||||
global dbc_part_material_libref
|
||||
|
||||
global dbc_name
|
||||
|
||||
set index 0
|
||||
|
||||
set initialize_flag 1
|
||||
set asc_data_file_name $asc_file_name
|
||||
set asc_next_line ""
|
||||
set dbc_name ""
|
||||
|
||||
if { $dbc_part_units == "english" } \
|
||||
{
|
||||
set file_unit $asc_units(inch)
|
||||
} else \
|
||||
{
|
||||
set file_unit $asc_units(mm)
|
||||
}
|
||||
|
||||
## Changed function to improve performance
|
||||
|
||||
# set ret_code [catch {open $asc_data_file_name "r"} fp]
|
||||
# if { $ret_code } \
|
||||
# {
|
||||
# return 1
|
||||
# }
|
||||
|
||||
# ASC_init_database
|
||||
#
|
||||
# Loop over all the DATA records
|
||||
#
|
||||
# The db_row variable has to be initialized (see also ASC_translate_att_alias
|
||||
if { $asc_database_count == 0 } \
|
||||
{
|
||||
set dbc_event_error "No appropriate machining data found"
|
||||
return 0;
|
||||
}
|
||||
|
||||
set ascii_preset [ ASC_ask_att_val PRESET 0 "" -1 flag]
|
||||
|
||||
if { $ascii_preset == "-1" } \
|
||||
{
|
||||
set db_row 0
|
||||
while { $db_row < $asc_database_count } \
|
||||
{
|
||||
set ascii_libref [ ASC_ask_att_val LIBRF $db_row "" 0 flag]
|
||||
|
||||
# See if row matches requested libref
|
||||
if { $dbc_libref == $ascii_libref } \
|
||||
{
|
||||
# Got a matching record, get remaining data and return
|
||||
ASC_get_machining_data db_row dbc_depth_of_cut dbc_stepover \
|
||||
dbc_feed_per_tooth dbc_surface_speed
|
||||
|
||||
ASC_get_feedrate_percentages db_row dbc_approach_percent \
|
||||
dbc_engage_percent dbc_first_cut_percent dbc_stepover_percent \
|
||||
dbc_retract_percent dbc_return_percent dbc_departure_percent
|
||||
return 0
|
||||
}
|
||||
incr db_row
|
||||
}
|
||||
|
||||
} else \
|
||||
{
|
||||
#First check part material and cut method
|
||||
if { [info exists dbc_part_material_libref] && [info exists dbc_cutmthd_libref]} \
|
||||
{
|
||||
set db_row 0
|
||||
while { $db_row < $asc_database_count } \
|
||||
{
|
||||
set ascii_libref [ ASC_ask_att_val LIBRF $db_row "" 0 flag]
|
||||
|
||||
set ascii_part_material_libref [ ASC_ask_att_val PARTMAT $db_row "" 0 flag]
|
||||
|
||||
set ascii_cut_method_libref [ ASC_ask_att_val CUTMTD $db_row "" 0 flag]
|
||||
|
||||
# See if row matches requested conditions
|
||||
if {$dbc_libref == $ascii_libref && \
|
||||
$dbc_part_material_libref == $ascii_part_material_libref && \
|
||||
$dbc_cutmthd_libref == $ascii_cut_method_libref } \
|
||||
{
|
||||
# Got a matching record, get remaining data and return
|
||||
ASC_get_machining_data db_row dbc_depth_of_cut dbc_stepover \
|
||||
dbc_feed_per_tooth dbc_surface_speed
|
||||
|
||||
ASC_get_feedrate_percentages db_row dbc_approach_percent \
|
||||
dbc_engage_percent dbc_first_cut_percent dbc_stepover_percent \
|
||||
dbc_retract_percent dbc_return_percent dbc_departure_percent
|
||||
|
||||
ASC_get_engage_data db_row dbc_engage_speed dbc_engage_feed \
|
||||
dbc_engage_dia dbc_engage_ang
|
||||
|
||||
set dbc_name [ ASC_ask_att_val NAME $db_row "" 0 flag]
|
||||
|
||||
return 0
|
||||
}
|
||||
incr db_row
|
||||
}
|
||||
}
|
||||
|
||||
#If part material and cut method not matched then check preset
|
||||
set db_row 0
|
||||
while { $db_row < $asc_database_count } \
|
||||
{
|
||||
set ascii_libref [ ASC_ask_att_val LIBRF $db_row "" 0 flag]
|
||||
set ascii_preset [ ASC_ask_att_val PRESET $db_row "" 0 flag]
|
||||
|
||||
# See if row matches requested conditions
|
||||
if { $dbc_libref == $ascii_libref && $ascii_preset == "1"} \
|
||||
{
|
||||
# Got a matching record, get remaining data and return
|
||||
ASC_get_machining_data db_row dbc_depth_of_cut dbc_stepover \
|
||||
dbc_feed_per_tooth dbc_surface_speed
|
||||
|
||||
ASC_get_feedrate_percentages db_row dbc_approach_percent \
|
||||
dbc_engage_percent dbc_first_cut_percent dbc_stepover_percent \
|
||||
dbc_retract_percent dbc_return_percent dbc_departure_percent
|
||||
|
||||
ASC_get_engage_data db_row dbc_engage_speed dbc_engage_feed \
|
||||
dbc_engage_dia dbc_engage_ang
|
||||
|
||||
set dbc_name [ ASC_ask_att_val NAME $db_row "" 0 flag]
|
||||
|
||||
return 0
|
||||
}
|
||||
incr db_row
|
||||
}
|
||||
}
|
||||
|
||||
# no match found at all -- return error message
|
||||
set dbc_event_error "No appropriate machining data found"
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_write { } {
|
||||
#------------------------------------------------------------------------
|
||||
global asc_database_name
|
||||
|
||||
set asc_database_name "tool_machining_data.dat"
|
||||
ASC_write
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc ASC_output_header { fileid } {
|
||||
#------------------------------------------------------------------------
|
||||
global dbc_attr_count
|
||||
global dbc_attr_aliases
|
||||
global dbc_attr_id
|
||||
global dbc_logname
|
||||
|
||||
global asc_database_fmt
|
||||
|
||||
set daytime [clock seconds]
|
||||
set out_daytime [clock format $daytime -format "%a %b %d %Y %I:%M %p"]
|
||||
|
||||
set headerMessage "# TOOL_MACHINING_DATA.DAT
|
||||
##########################################################################
|
||||
#
|
||||
# PURPOSE:
|
||||
#
|
||||
# This is the database file used for defining Machining Data in
|
||||
# an operation based only on the selected tool.
|
||||
#
|
||||
# REVISED:
|
||||
# $dbc_logname $out_daytime
|
||||
#
|
||||
##########################################################################
|
||||
# The data is organized in the following format separated by |
|
||||
# The fields in the database are in the following order:
|
||||
#
|
||||
# LIBRF - library reference of cutter
|
||||
# DPT_CUT_IN - dpth_of_cut Depth_of_cut(inch)
|
||||
# DPT_CUT_MM - dpth_of_cut Depth_of_cut(mm)
|
||||
# STEPOVER_IN - stepover distance (inch)
|
||||
# STEPOVER_MM - stepover distance (mm)
|
||||
# SURF_SPEED_FPM - surface_speed Suface Speed(FPM)
|
||||
# SURF_SPEED_MPM - surface_speed Suface Speed(MPM)
|
||||
# FEED_IPT - feed_per_tooth Feed per Tooth(IPT)
|
||||
# FEED_MMPT - feed_per_tooth Feed per Tooth(MMPT)
|
||||
# APPROACH_PCT - approach feedrate percentage of cut feedrate
|
||||
# ENGAGE_PCT - engage feedrate percentage of cut feedrate
|
||||
# FRSTCUT_PCT - first cut feedrate percentage of cut feedrate
|
||||
# STEPOVER_PCT - stepover feedrate percentage of cut feedrate
|
||||
# RETRACT_PCT - retract feedrate percentage of cut feedrate
|
||||
# RETURN_PCT - return feedrate percentage of cut feedrate
|
||||
# DEPART_PCT - departure feedrate percentage of cut feedrate
|
||||
# NAME - unique record identifier
|
||||
# DESCR - description
|
||||
# PARTMAT - library reference of part material
|
||||
# CUTMTD - library reference of cut method
|
||||
# ENGAGE_SPEED_MPM - engage surface speeed Engage Suface Speed(MPM)
|
||||
# ENGAGE_SPEED_FPM - engage surface speeed Engage Suface Speed(IPM)
|
||||
# ENGAGE_FEED_MMPT - engage feed per tooth Engage Feed per Tooth(MPT)
|
||||
# ENGAGE_FEED_IPT - engage feed per tooth Engage Feed per Tooth(IPT)
|
||||
# ENGAGE_DIA_MM - engage diameter Engage Diameter (mm)
|
||||
# ENGAGE_DIA_IN - engage diameter Engage Diameter (inch)
|
||||
# ENGAGE_ANG - engage ramp angle
|
||||
# PRESET - preset record
|
||||
#--------------------------------------------------------------------------------"
|
||||
|
||||
puts $fileid "$headerMessage"
|
||||
|
||||
# load the database structure
|
||||
DBC_load_rset_data
|
||||
|
||||
# Xi Wang 6-Nov-2023
|
||||
# Update asc_database_fmt, it is used in ASC_output_data to output data
|
||||
#
|
||||
set fmt {}
|
||||
# output FORMAT line
|
||||
set format_line "FORMAT"
|
||||
for {set i 0} {$i < $dbc_attr_count} {incr i} \
|
||||
{
|
||||
DBC_ask_attr_id $dbc_attr_aliases($i)
|
||||
set format_line "$format_line $dbc_attr_id"
|
||||
|
||||
lappend fmt $dbc_attr_id
|
||||
}
|
||||
|
||||
set asc_database_fmt(0) $fmt
|
||||
|
||||
puts $fileid $format_line
|
||||
puts $fileid "#--------------------------------------------------------------------------------"
|
||||
}
|
||||
|
||||
# Xi Wang 6-Nov-2023
|
||||
# Add following functions to support query,
|
||||
#---------------------------------------------
|
||||
proc DBC_translate_att_alias {} {
|
||||
#---------------------------------------------
|
||||
|
||||
ASC_translate_att_alias
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc DBC_create_criterion {} {
|
||||
#---------------------------------------------
|
||||
|
||||
ASC_create_criterion
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc DBC_create_query {} {
|
||||
#---------------------------------------------
|
||||
|
||||
ASC_create_query
|
||||
}
|
||||
|
||||
# To enable the new customization mechanism.
|
||||
# This should ALWAYS be the last line in the file.
|
||||
MOM_extend_for_customization UGII_CAM_CUSTOM_LIBRARY_FEEDS_SPEEDS_ASCII_DIR dbc_custom_ascii_tool_machining_data.tcl
|
||||
|
||||
52
feeds_speeds/ascii/tool_materials.dat
Normal file
52
feeds_speeds/ascii/tool_materials.dat
Normal file
@@ -0,0 +1,52 @@
|
||||
# TOOL_MATERIALS.DAT
|
||||
##########################################################################
|
||||
#
|
||||
# PURPOSE:
|
||||
#
|
||||
# This is the database file used for defining Tool Material.
|
||||
#
|
||||
# REVISIONS:
|
||||
# Sl.No. Date Name Reason
|
||||
# 01 06/15/99 Subhash Initial
|
||||
# 02 07/31/99 Subhash Include Format statement
|
||||
# 03 10/29/99 Murthy Changes to data and file description
|
||||
# 04 29-jun-2004 Mark Rief Add TiAlN for HSM
|
||||
# 05 11-Oct-2005 rlm Add more HSM data
|
||||
# 06 29-Nov-2006 rlm Add materials for probes
|
||||
# 07 15-jul-2008 Mark Rief Change 00004 MATNAM to Carbide Coated PR4181848
|
||||
# 08 27-jun-2013 Mark Rief Add materials for Wire EDM
|
||||
# 09 18-apr-2019 Reinier Capelle Add Coated(Ti,Al)N libref TMC0_00007
|
||||
|
||||
#
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
##
|
||||
## The following key words for Attribute ids are defined
|
||||
##
|
||||
## LIBREF material_code - Unique record identifier
|
||||
## (Library Reference)
|
||||
## MATNAM material_name - Material Name (appears on the label)
|
||||
## MATDESC material_description - Material Description
|
||||
#########################################################################
|
||||
#----------------+-------------------------------+-------------
|
||||
FORMAT LIBRF MATNAM MATDESC
|
||||
#--------------------------------------------------------------------------------
|
||||
#DATA|TMC0_00001|HSS|High Speed Steel
|
||||
#DATA|TMC0_00002|Carbide|Carbide, Uncoated (Brazed and Solid)
|
||||
#DATA|TMC0_00003|Carbide|Carbide, Uncoated (Indexable)
|
||||
#DATA|TMC0_00004|Carbide Coated|Carbide, Coated (Indexable - TiN, TiC, and Aluminum Oxide)
|
||||
#DATA|TMC0_00006|HSS Coated|High Speed Steel Coated
|
||||
DATA|TMC0_00007|PVD (Ti,Al)N|Coated(Ti,Al)N
|
||||
DATA|TMC0_00021|HSM Ball Mill TiAlN Coated|HSM Carbide Ball Mill
|
||||
DATA|TMC0_00022|HSM End Mill TiAlN Coated|HSM Carbide End Mill, up to 5% Corner Radius
|
||||
DATA|TMC0_00023|HSM Bull Nose Inserted|HSM Inserted Bull-nose Mill
|
||||
DATA|TMC0_00025|HSM End Mill Inserted|HSM Inserted End Mill, up to 5% Corner Radius
|
||||
DATA|TMC0_00026|HSM Ball Mill Inserted|HSM Inserted Ball Mill
|
||||
DATA|TMC0_00027|HSM Bull Nose TiAlN Coated|HSM Carbide Bull-nose Mill
|
||||
DATA|TMC0_00028|HSM End Mill Extra Long|HSM HardCut Inserted End Mill, Extra long
|
||||
DATA|TMC0_00041|Ruby|Ruby
|
||||
#DATA|TMC0_00042|Silicon Nitride|Silicon Nitride
|
||||
#DATA|TMC0_00043|Zirconia|Zirconia
|
||||
DATA|TMC0_00051|Brass Wire|Brass Wire
|
||||
#DATA|TMC0_00052|Zinc Coated Brass Wire|Zinc Coated Brass Wire
|
||||
|
||||
62
feeds_speeds/ascii/tool_materials.def
Normal file
62
feeds_speeds/ascii/tool_materials.def
Normal file
@@ -0,0 +1,62 @@
|
||||
# *TOOL_MATERIALS.DEF
|
||||
################################################################################
|
||||
# REVISIONS:
|
||||
#
|
||||
# 00 23Mar99 Murthy R Mandaleeka Initial Version
|
||||
# 01 26JUL99 Subhash Changed order of attributes
|
||||
# presented
|
||||
# 02 29OCT99 Murthy Changed RSET names
|
||||
##########################################################################
|
||||
|
||||
DB_PREFIX "DB("
|
||||
DB_SUFFIX ")"
|
||||
ESS_PREFIX "ESS("
|
||||
ESS_SUFFIX ")"
|
||||
|
||||
################################################################################
|
||||
# The list of DB_ALIAS
|
||||
#
|
||||
# DB_ALIAS <alias>
|
||||
# {
|
||||
# DB_ID < identifier of the Tool Material parameter in a UG part file >
|
||||
# DB_ID_TYPE < Type of the identifier >
|
||||
# d _ double
|
||||
# i _ integer
|
||||
# s _ string
|
||||
# }
|
||||
#
|
||||
###############################################################################
|
||||
DB_ALIAS matno
|
||||
{
|
||||
DB_ID LIBRF
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Serial"
|
||||
RSET_NAME "Library Reference"
|
||||
}
|
||||
|
||||
DB_ALIAS matnam
|
||||
{
|
||||
DB_ID MATNAM
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Material Name"
|
||||
RSET_NAME "Material Name"
|
||||
}
|
||||
|
||||
DB_ALIAS matdesc
|
||||
{
|
||||
DB_ID MATDESC
|
||||
DB_ID_TYPE s
|
||||
DIALOG_NAME "Material Description"
|
||||
RSET_NAME "Material Description"
|
||||
}
|
||||
|
||||
LIBREF matno
|
||||
|
||||
CLASS TOOL_MATERIAL
|
||||
{
|
||||
TYPE TOOL_MATERIAL
|
||||
QUERY "[1] == [1]"
|
||||
DIALOG matno matnam matdesc
|
||||
RSET matno matnam matdesc
|
||||
UI_NAME "Tool Material"
|
||||
}
|
||||
373
feeds_speeds/ascii/tool_materials.tcl
Normal file
373
feeds_speeds/ascii/tool_materials.tcl
Normal file
@@ -0,0 +1,373 @@
|
||||
#############################################################################
|
||||
# REVISIONS
|
||||
# Date Who Reason
|
||||
# 03/24/99 Murthy Mandaleeka Initial
|
||||
# 05/19/99 Murthy Mandaleeka New Environment Variable
|
||||
# 07/21/99 Subhash Included dbc_general_ascii.tcl file
|
||||
# 07/21/99 Subhash Used general functions for
|
||||
# opening and reading dat files.
|
||||
# 08/06/99 Subhash Removed some unwanted comments
|
||||
# 11/11/2003 rlm Add ASC_output_header
|
||||
# 01/30/2004 rlm Move ASC_write to dbc_ascii_general
|
||||
# 02/12/2004 rlm Add library revision information
|
||||
# 07/01/2004 rlm 1339644 Add proc DBC_ask_library_values
|
||||
# 12/06/2004 rlm 1369488 Fix DBC_execute_query_for_count and
|
||||
# DBC_translate_att_alias
|
||||
# 01/06/2005 gbs Added a comment to the line
|
||||
# before
|
||||
##############################################################################
|
||||
#
|
||||
# The format of each line in the text file is:
|
||||
#
|
||||
# material_code
|
||||
# material_name
|
||||
# material_description
|
||||
#
|
||||
# The DB_ID of a DB_ALIAS is its field number in the line (0-based)
|
||||
###############################################################################
|
||||
|
||||
|
||||
#---------------------------------------------
|
||||
# Non DBC Global Variables
|
||||
#---------------------------------------------
|
||||
#MOM_set_debug_mode ON
|
||||
#set dbFileName "[MOM_ask_env_var UGII_CAM_LIBRARY_FEEDS_SPEEDS_DATA_DIR]tool_materials.dat"
|
||||
set DEBUG 0
|
||||
set fPointer ""
|
||||
|
||||
#---------------------------------------------
|
||||
# Global variables set by DBC for Input/Output
|
||||
#---------------------------------------------
|
||||
set dbc_lhs_exp ""
|
||||
set dbc_rhs_exp ""
|
||||
set dbc_relop ""
|
||||
set dbc_query ""
|
||||
set dbc_subqry1 ""
|
||||
set dbc_subqry2 ""
|
||||
set dbc_boolop ""
|
||||
set dbc_class_name ""
|
||||
set dbc_attr_count 0
|
||||
set dbc_attr_id ""
|
||||
set dbc_query_count 0
|
||||
set dbc_libref ""
|
||||
set dbc_var_list ""
|
||||
set asc_debug 0
|
||||
|
||||
#---------------------------------------------
|
||||
proc ASC_t_create_filename {env_var_name filename} \
|
||||
{
|
||||
#
|
||||
# Creates a complete filename by evaluating an environment variable
|
||||
# for the directory information
|
||||
#
|
||||
set env_var [MOM_ask_env_var $env_var_name]
|
||||
if { $env_var == "" } \
|
||||
{
|
||||
set message "Can't read environment variable $env_var_name"
|
||||
MOM_abort "\n $message"
|
||||
}
|
||||
|
||||
set fname ""
|
||||
set fname [append fname $env_var $filename]
|
||||
|
||||
return $fname
|
||||
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc MOM__boot {} {
|
||||
#---------------------------------------------
|
||||
|
||||
# source some general procedures
|
||||
|
||||
#
|
||||
# dbc_ascii_general.tcl
|
||||
#
|
||||
set filename \
|
||||
[ASC_t_create_filename "UGII_UG_LIBRARY_DIR" "dbc_ascii_general.tcl"]
|
||||
|
||||
if { [catch {source $filename}] == "1" } \
|
||||
{
|
||||
set message "Can't load .tcl file: $filename"
|
||||
MOM_abort "\n $message"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
proc MOM__halt {} \
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#------------------------------------------------------------
|
||||
proc DBC_init_db { } \
|
||||
{
|
||||
global DEBUG
|
||||
global dataBase
|
||||
global lastRowNumber
|
||||
global dbFileName
|
||||
global fPointer
|
||||
global asc_file_name
|
||||
|
||||
set asc_part_units ""
|
||||
|
||||
set data_unit 0
|
||||
set mode 0
|
||||
|
||||
#
|
||||
# Set the filename for ASCII Data File
|
||||
#
|
||||
ASC_set_data_file_name
|
||||
|
||||
#
|
||||
# And load the file into memory
|
||||
#
|
||||
ASC_load_data_file $asc_file_name $data_unit $mode
|
||||
|
||||
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc ASC_set_data_file_name {} {
|
||||
#---------------------------------------------
|
||||
global dbc_part_units
|
||||
global asc_file_name
|
||||
global asc_part_units
|
||||
|
||||
MOM_ask_part_units ;# writes to dbc_part_units
|
||||
|
||||
set env_var UGII_CAM_LIBRARY_FEEDS_SPEEDS_DATA_DIR
|
||||
set asc_file_name [ASC_t_create_filename "$env_var" "tool_materials.dat"]
|
||||
set asc_part_units $dbc_part_units
|
||||
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc DBC_translate_att_alias {} {
|
||||
#---------------------------------------------
|
||||
global DEBUG
|
||||
global dbc_alias
|
||||
global dbc_id
|
||||
|
||||
ASC_translate_att_alias
|
||||
}
|
||||
|
||||
#------------------------------------------------------------
|
||||
proc DBC_create_criterion { } {
|
||||
#------------------------------------------------------------
|
||||
global DEBUG
|
||||
global dbc_lhs_exp
|
||||
global dbc_rhs_exp
|
||||
global dbc_relop
|
||||
global dbc_query
|
||||
|
||||
### set dbc_query "\[$dbc_lhs_exp\] $dbc_relop \[$dbc_rhs_exp\]"
|
||||
|
||||
ASC_create_criterion
|
||||
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_create_query { } {
|
||||
#------------------------------------------------------------------------
|
||||
global DEBUG
|
||||
global dbc_query
|
||||
global dbc_subqry1
|
||||
global dbc_subqry2
|
||||
global dbc_boolop
|
||||
|
||||
#### set dbc_query "$dbc_subqry1 $dbc_boolop $dbc_subqry2"
|
||||
|
||||
ASC_create_query
|
||||
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_execute_query { } {
|
||||
#------------------------------------------------------------------------
|
||||
global asc_database_count
|
||||
ASC_execute_query
|
||||
|
||||
}
|
||||
|
||||
#---------------------------------------------
|
||||
proc DBC_execute_query_for_count {} {
|
||||
#---------------------------------------------
|
||||
|
||||
ASC_execute_query_for_count
|
||||
|
||||
}
|
||||
#---------------------------------------------
|
||||
proc DBC_retrieve { } {
|
||||
#---------------------------------------------
|
||||
global DEBUG
|
||||
global dbc_libref
|
||||
global dbc_retrieve_var_list
|
||||
global dataBase
|
||||
|
||||
global dbc_material_code
|
||||
global dbc_material_name
|
||||
global dbc_material_description
|
||||
|
||||
global dbFileName
|
||||
global fPointer
|
||||
|
||||
global asc_debug
|
||||
global asc_file_name
|
||||
global asc_database_count
|
||||
|
||||
if { $asc_debug == "1" } \
|
||||
{
|
||||
puts " =========================================="
|
||||
puts " procedure DBC_retrieve for Tool Material"
|
||||
puts " libref -> $dbc_libref"
|
||||
}
|
||||
|
||||
#
|
||||
# Look for the desired libref
|
||||
#
|
||||
|
||||
for {set db_row 0} {$db_row < $asc_database_count} {incr db_row 1} \
|
||||
{
|
||||
# Find the row for the desired LibRef
|
||||
set toolmaterial_libref [ASC_ask_att_val LIBRF $db_row \
|
||||
"" 0 flag]
|
||||
|
||||
if { $dbc_libref == $toolmaterial_libref } \
|
||||
{
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if { $db_row >= $asc_database_count } \
|
||||
{
|
||||
set message "Error retrieving Tool Material from external library."
|
||||
set message "$message \n Tool Material with the library reference $dbc_libref"
|
||||
set message "$message \n does not exist in the"
|
||||
set message "$message \n ASCII Data File: $asc_file_name"
|
||||
MOM_abort "\n $message"
|
||||
}
|
||||
|
||||
#
|
||||
# Get the Material No.
|
||||
#
|
||||
set dbc_material_code [ASC_ask_att_val LIBRF $db_row "%s" "" flag]
|
||||
|
||||
#
|
||||
# Get the Material Name
|
||||
#
|
||||
set dbc_material_name [ASC_ask_att_val MATNAM $db_row "%s" "" flag]
|
||||
|
||||
#
|
||||
# Get the Material description
|
||||
#
|
||||
set dbc_material_description [ASC_ask_att_val MATDESC $db_row "%s" "" flag]
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
proc DBC_write { } {
|
||||
#------------------------------------------------------------------------
|
||||
global asc_database_name
|
||||
|
||||
set asc_database_name "tool_materials.dat"
|
||||
ASC_write
|
||||
}
|
||||
|
||||
#---------------------------------------------------------------------
|
||||
proc ASC_output_header { fileid } {
|
||||
#---------------------------------------------------------------------
|
||||
global dbc_attr_count
|
||||
global dbc_attr_aliases
|
||||
global dbc_attr_id
|
||||
global dbc_logname
|
||||
|
||||
|
||||
set daytime [clock seconds]
|
||||
set out_daytime [clock format $daytime -format "%a %b %d %Y %I:%M %p"]
|
||||
|
||||
set headerMessage "# TOOL_MATERIALS.DAT
|
||||
##########################################################################
|
||||
#
|
||||
# PURPOSE:
|
||||
#
|
||||
# This is the database file used for defining Tool Material.
|
||||
#
|
||||
# REVISED:
|
||||
# $dbc_logname $out_daytime
|
||||
#
|
||||
##########################################################################
|
||||
##########################################################################
|
||||
##
|
||||
## The following key words for Attribute ids are defined
|
||||
##
|
||||
## LIBREF material_code - Unique record identifier
|
||||
## (Library Reference)
|
||||
## MATNAM material_name - Material Name (appears on the label)
|
||||
## MATDESC material_description - Material Description
|
||||
#########################################################################
|
||||
#----------------+-------------------------------+-------------"
|
||||
|
||||
puts $fileid "$headerMessage"
|
||||
|
||||
# load the database structure
|
||||
DBC_load_rset_data
|
||||
|
||||
# output FORMAT line
|
||||
set format_line "FORMAT"
|
||||
for {set i 0} {$i < $dbc_attr_count} {incr i} \
|
||||
{
|
||||
DBC_ask_attr_id $dbc_attr_aliases($i)
|
||||
set format_line "$format_line $dbc_attr_id"
|
||||
}
|
||||
puts $fileid $format_line
|
||||
puts $fileid "#--------------------------------------------------------------------------------"
|
||||
}
|
||||
|
||||
proc DBC_ask_library_values {} \
|
||||
{
|
||||
#
|
||||
# global input
|
||||
global dbc_libref
|
||||
global dbc_db_ids_count
|
||||
global dbc_db_ids
|
||||
global dbc_event_error
|
||||
global asc_database_count
|
||||
|
||||
#
|
||||
# global output
|
||||
global dbc_return_status
|
||||
global dbc_db_ids_value
|
||||
|
||||
# Do not change this string
|
||||
set NO_MATCH "No matching record found for $dbc_libref"
|
||||
|
||||
set dbc_return_status 0
|
||||
|
||||
#
|
||||
# Look for the desired libref
|
||||
#
|
||||
for {set db_row 0} {$db_row < $asc_database_count} {incr db_row 1} \
|
||||
{
|
||||
set toolmaterial_libref [ASC_ask_att_val LIBRF $db_row \
|
||||
"" 0 flag]
|
||||
if { $dbc_libref == $toolmaterial_libref } \
|
||||
{
|
||||
break
|
||||
}
|
||||
}
|
||||
#
|
||||
# and set the desired values
|
||||
#
|
||||
if { $db_row < $asc_database_count } \
|
||||
{
|
||||
for { set inx 0 } { $inx < $dbc_db_ids_count } { incr inx } \
|
||||
{
|
||||
set dbc_db_ids_value($dbc_db_ids($inx)) \
|
||||
[ASC_ask_att_val $dbc_db_ids($inx) $db_row "" "" flag]
|
||||
}
|
||||
} else \
|
||||
{
|
||||
set dbc_event_error $NO_MATCH
|
||||
set dbc_return_status 1
|
||||
}
|
||||
}
|
||||
10
feeds_speeds/inclass/mrl_readme.txt
Normal file
10
feeds_speeds/inclass/mrl_readme.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
The old INCLASS and MRL Event Handlers (TCL) and Definition Files (DEF) were removed from the NX1899 kit to avoid problems after NX updates.
|
||||
These files are available in the Manufacturing Resource Library (MRL) kit found in the "wntx64\advanced_installations" directory of the Teamcenter installation kit.
|
||||
The directory contains an "advanced_installations.zip" file with the MRL kit.
|
||||
|
||||
1. Extract the advanced_installations.zip.
|
||||
2. Start the MRL Installer (setup.exe).
|
||||
3. Select the "Configure NX-CAM" option.
|
||||
This copies the latest MRL files into the NX MACH directory.
|
||||
|
||||
Alternatively, copy the files manually from the directory "resource_management\MRL\nxlib\MACH" in the MRL kit to the NX MACH directory.
|
||||
Reference in New Issue
Block a user