63 lines
1.8 KiB
Tcl
Executable File
63 lines
1.8 KiB
Tcl
Executable File
# util_lib.tcl -- utilities
|
|
|
|
set ::util_lib_quiet 0
|
|
# ::tp is the namespace for [HAL]TWOPASS processing
|
|
# quiet irrelevant messages in pass0
|
|
if { [namespace exists ::tp] \
|
|
&& ([::tp::passnumber] == 0) } { set ::util_lib_quiet 1 }
|
|
|
|
proc show_context {} {
|
|
if { $::util_lib_quiet } { return }
|
|
set pname show_context
|
|
puts "$pname: argv0=$::argv0"
|
|
puts "$pname: argv=$::argv"
|
|
foreach arg $::argv {
|
|
puts "$pname: arg=$arg"
|
|
}
|
|
puts "$pname: INI_FILE_NAME=$::env(INI_FILE_NAME)"
|
|
} ;# show_context
|
|
|
|
proc show_ini {} {
|
|
if { $::util_lib_quiet } { return }
|
|
set vars [uplevel #0 {info vars}]
|
|
set exclude_list {TP auto_index tcl_platform env}
|
|
foreach v $vars {
|
|
if { [lsearch $exclude_list $v] >= 0 } {continue}
|
|
set vg ::$v
|
|
if [array exists $vg] {
|
|
parray $vg
|
|
}
|
|
}
|
|
} ;# show_ini_info
|
|
|
|
proc show_env {} {
|
|
parray ::env
|
|
} ;# show_env
|
|
|
|
proc joint_number_for_axis {axis_letter} {
|
|
# For JOINTS_AXES:
|
|
# Apply rule for known kins with KINEMATICS_IDENTITY
|
|
set kinematics [lindex $::env(KINS_KINEMATICS) 0]
|
|
set coordinates $::env(TRAJ_COORDINATES)
|
|
if {[ string first " " $coordinates] < 0} {
|
|
set coordinates [split $coordinates ""]
|
|
}
|
|
set coordinates [string toupper $coordinates]
|
|
set axis_letter [string toupper $axis_letter]
|
|
|
|
# rules for known kinematics types
|
|
switch $kinematics {
|
|
trivkins {set joint_number [lsearch $coordinates $axis_letter]}
|
|
default {return -code error \
|
|
"joint_number_for_axis: <$axis_letter> unavailable for kinematics:\
|
|
<$::env(KINS_KINEMATICS)>"
|
|
}
|
|
}
|
|
#puts stderr "kins=$kinematics coords=$coordinates a=$axis_letter j=$joint_number"
|
|
if { $joint_number < 0} {
|
|
return -code error \
|
|
"joint_number_for_axis <$axis_letter> not in $::env(TRAJ_COORDINATES)"
|
|
}
|
|
return $joint_number
|
|
} ;# joint_number_for_axis
|