<!DOCTYPE html
  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<!--
Copyright (c) 2006 UGS Corp.

All Rights Reserved.

This software and related documentation are proprietary to UGS Corp.
-->
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>Sample Tcl file</title>
      <script language="javaScript">
        abridged="false";
        displayConditions=new Array();
      </script>
      <link type="text/css" href="../css/main_styles.css" rel="stylesheet">
   </head>
   <body class="bodydocs" onload="top.pageLoader()" bgcolor="#FFFFFF">
      <div class="title_topic2" id="xps10_pagetitle">Sample Tcl file</div>
      <hr noshade="true">
      <table cellspacing="3" align="center">
         <tr valign="top">
            <td colspan="1" rowspan="1" valign="middle">
               <p class="para_td">#/HEAD UGSMD_DEF STD RUNT</p>
               <p class="para_td">#</p>
               <p class="para_td"># Copyright (c) 1994,1995,1996,1997 Electronic Data Systems Corp.</p>
               <p class="para_td"># Unpublished &ndash; All Rights Reserved</p>
               <p class="para_td">#</p>
               <p class="para_td"># ugsmd_def.std</p>
               <p class="para_td">#</p>
               <p class="para_td"># NOTE: Make a copy of this file before making any changes.</p>
               <p class="para_td">#</p>
               <p class="para_td"># This file provides standard material types, Bend Allowance</p>
               <p class="para_td"># Formulas (BAF), etc., to the Unigraphics NX Sheet Metal Design (Unigraphics NX SMD)</p>
               <p class="para_td"># and Modeling application.</p>
               <p class="para_td">#</p>
               <p class="para_td"># This script is normally read into memory when NX SMD is started</p>
               <p class="para_td"># and during sheet metal feature creation. The application will</p>
               <p class="para_td"># look for this script file (ugsmd_def.std) in the directory</p>
               <p class="para_td"># specified by the environment variable UGII_UGSMD_STDS_LIBRARY.</p>
               <p class="para_td"># If it is not found there it looks in the user's current directory.</p>
               <p class="para_td">#</p>
               <p class="para_td"># It is also a good idea to comment out unwanted features and</p>
               <p class="para_td"># parameters rather than deleting them. You never know when</p>
               <p class="para_td"># you may need them or use them as an example.</p>
               <p class="para_td">#</p>
               <p class="para_td"># The default Bend Allowance Formula (BAF) uses 44% of the thickness</p>
               <p class="para_td"># of the material. This has been proven empirically to be the</p>
               <p class="para_td"># best percentage for creating a flat pattern from a solid body.</p>
               <p class="para_td"># So it is probably a good idea to leave it as the default formula.</p>
               <p class="para_td">#</p>
               <p class="para_td"># NOTES:</p>
               <p class="para_td"># If you have previously modified this file, do not try to</p>
               <p class="para_td"># use your file. Put your modifications in this file.</p>
               <p class="para_td">#</p>
               <p class="para_td"># The &quot;parms&quot; variable in each object may be used to limit</p>
               <p class="para_td"># the parameters checked against the standards, even if</p>
               <p class="para_td"># passed in as args, such as eliminating thickness from</p>
               <p class="para_td"># checking.</p>
               <p class="para_td">#</p>
               <p class="para_td">set tol 1.0e&ndash;8</p>
               <p class="para_td">#-----------------------------------------</p>
               <p class="para_td">#</p>
               <p class="para_td"># proc check_value</p>
               <p class="para_td">#</p>
               <p class="para_td"># This proc is used to check a value list of standard parameter</p>
               <p class="para_td"># values against a parameter name/value in the original input.</p>
            </td>
         </tr>
         <tr valign="top">
            <td colspan="1" rowspan="1" valign="middle">
               <p class="para_td">#</p>
               <p class="para_td"># Input</p>
               <p class="para_td"># parmnam &ndash; parameter name to be checked (thickness)</p>
               <p class="para_td"># parmval &ndash; parameter value to be checked (.050)</p>
               <p class="para_td"># retl &ndash; list of standard values to check against</p>
               <p class="para_td"># {.030 .040 .050 .060 .070 }</p>
               <p class="para_td"># pass &ndash; a pass&ndash;by&ndash;reference indicator of successful match</p>
               <p class="para_td">#</p>
               <p class="para_td"># Output</p>
               <p class="para_td"># pass &ndash; set to 1 if PASS</p>
               <p class="para_td">#</p>
               <p class="para_td"># Returns a string with &quot;PASS or FAIL &ndash; parmnam parmval\n&quot;</p>
               <p class="para_td">#</p>
               <p class="para_td"># There is no need to modify this procedure</p>
               <p class="para_td">#</p>
               <p class="para_td">#-----------------------------------------</p>
               <p class="para_td">proc check_value {parmnam parmval retl pass} {</p>
               <p class="para_td">&nbsp; global tol</p>
               <p class="para_td">&nbsp; upvar $pass pas</p>
               <p class="para_td">&nbsp; set out &quot;&quot;</p>
            </td>
         </tr>
         <tr valign="top">
            <td colspan="1" rowspan="1" valign="middle">
               <p class="para_td">set vall [lrange $retl 0 end]</p>
               <p class="para_td">&nbsp; if { [regexp {^([+&ndash;.0&ndash;9])[+&ndash;.0&ndash;9eE]+$} $parmval] } {</p>
               <p class="para_td">&nbsp; for each j $vall {</p>
               <p class="para_td">&nbsp; if { [expr abs($j &ndash; $parmval)] &lt; $tol } {</p>
               <p class="para_td">&nbsp; set out &quot; PASS &ndash; $parmnam $parmval\n&quot;</p>
               <p class="para_td">&nbsp; set pas 1</p>
               <p class="para_td">&nbsp; break</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; } else {</p>
               <p class="para_td">&nbsp; foreach j $vall {</p>
               <p class="para_td">&nbsp; if { $j == $parmval } {</p>
               <p class="para_td">&nbsp; set out &quot; PASS &ndash; $parmnam $parmval\n&quot;</p>
               <p class="para_td">&nbsp; set pas 1</p>
               <p class="para_td">&nbsp; break</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; if { !$pas }</p>
               <p class="para_td">&nbsp; set out &quot; FAIL &ndash; $parmnam $parmval\n&quot;</p>
               <p class="para_td">}</p>
               <p class="para_td">&nbsp; return $out</p>
               <p class="para_td">}</p>
            </td>
         </tr>
         <tr valign="top">
            <td colspan="1" rowspan="1" valign="middle">
               <p class="para_td">#-----------------------------------------</p>
               <p class="para_td">#</p>
               <p class="para_td"># proc check_parm</p>
               <p class="para_td">#</p>
               <p class="para_td"># This proc is used to check a parml or parmv list of standard</p>
               <p class="para_td"># values against the feature parameter name/value list. Parameter</p>
               <p class="para_td"># name/value pairs may be in any order.</p>
               <p class="para_td">#</p>
               <p class="para_td"># Input</p>
               <p class="para_td"># parms &ndash; list of parameter/value pairs to be checked</p>
               <p class="para_td"># {thickness .050 diameter .025}</p>
               <p class="para_td"># retl &ndash; parml list of standard parameter values to check</p>
               <p class="para_td"># {parml: thickness .030 .040 .050 .060 .070 }</p>
               <p class="para_td"># &ndash; parmv list of standard parameter/value pairs to check</p>
               <p class="para_td"># {parmv: thickness .050 diameter .025}</p>
               <p class="para_td">#</p>
               <p class="para_td"># Output</p>
               <p class="para_td"># None</p>
               <p class="para_td">#</p>
               <p class="para_td"># Returns strings with &quot;PASS or FAIL &ndash; parm1 val1\n&quot;</p>
               <p class="para_td">#</p>
               <p class="para_td"># There is no need to modify this procedure</p>
               <p class="para_td">#</p>
               <p class="para_td">#-----------------------------------------</p>
               <p class="para_td">proc check_parm {parms retl}</p>
               <p class="para_td">{ global tol</p>
               <p class="para_td">&nbsp; set out &quot;&quot;</p>
               <p class="para_td">&nbsp; set pass 0</p>
            </td>
         </tr>
         <tr valign="top">
            <td colspan="1" rowspan="1" valign="middle">
               <p class="para_td">&nbsp; if { [lindex $retl 0] == &quot;parml:&quot; } {</p>
               <p class="para_td">&nbsp; set idx [lsearch $parms [lindex $retl 1]]</p>
               <p class="para_td">&nbsp; if { $idx != &ndash;1 } {</p>
               <p class="para_td">&nbsp; set out &quot;$out[check_value [lindex $parms $idx] \</p>
               <p class="para_td">&nbsp; [lindex $parms [expr $idx+1]] [lrange $retl 2 end] pass]&quot;</p>
               <p class="para_td">&nbsp; } else {</p>
               <p class="para_td">&nbsp; set out &quot;$out FAIL &ndash; [lindex $retl 1] &ndash; NOT IN INPUT\n&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; } elseif { [lindex $retl 0] == &quot;parmv:&quot; } {</p>
               <p class="para_td">&nbsp; set vall [lrange $retl 1 end]</p>
               <p class="para_td">&nbsp; set valll [llength $vall]</p>
               <p class="para_td">&nbsp; for {set idxv 0} {$idxv &lt; $valll} {incr idxv 2} {</p>
               <p class="para_td">&nbsp; set pass 0</p>
               <p class="para_td">&nbsp; set vallval [lindex $vall [expr $idxv+1]]</p>
               <p class="para_td">&nbsp; set idx [lsearch $parms [lindex $vall $idxv]]</p>
               <p class="para_td">&nbsp; if { $idx != &ndash;1 } {</p>
               <p class="para_td">&nbsp; set parmnam [lindex $parms $idx]</p>
               <p class="para_td">&nbsp; set parmval [lindex $parms [expr $idx+1]]</p>
               <p class="para_td">&nbsp; if { [regexp {^([+&ndash;.0&ndash;9])[+&ndash;.0&ndash;9eE]+$} $parmval] } {</p>
               <p class="para_td">&nbsp; if { [expr abs($vallval &ndash; $parmval)] &lt; $tol } {</p>
               <p class="para_td">&nbsp; set out &quot;$out PASS &ndash; $parmnam $parmval\n&quot;</p>
               <p class="para_td">&nbsp; set pass 1</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; } else {</p>
               <p class="para_td">&nbsp; if { $vallval == $parmval } {</p>
               <p class="para_td">&nbsp; set out &quot;$out PASS &ndash; $parmnam $parmval\n&quot;</p>
               <p class="para_td">&nbsp; set pass 1</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; if { !$pass } {</p>
               <p class="para_td">&nbsp; set out &quot;$out FAIL &ndash; $parmnam $parmval\n&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; } else {</p>
               <p class="para_td">&nbsp; set out &quot;$out [lindex $vall $idxv] $vallval &ndash; NOT IN INPUT \</p>
               <p class="para_td">&ndash; FAIL\n&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; } else {</p>
               <p class="para_td">&nbsp; set out &quot;$out[lindex $retl 0] invalid parm data type for varnam\n&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; return $out</p>
               <p class="para_td">}</p>
               <p class="para_td">#-----------------------------------------</p>
               <p class="para_td">#</p>
               <p class="para_td"># proc part</p>
               <p class="para_td">#</p>
               <p class="para_td"># This proc is used to set the part standards for your site.</p>
               <p class="para_td"># These standards include material and thickness. The value</p>
               <p class="para_td"># lists should be of the form:</p>
               <p class="para_td">#</p>
               <p class="para_td"># set VARNAM {set ret &quot;vallist: value_1 value_2value_n&quot;}</p>
               <p class="para_td">#</p>
               <p class="para_td"># where everything but the &quot;VARNAM&quot; and &quot;value&quot; strings should be</p>
               <p class="para_td"># exactly as shown. See MATERIAL and THICKNESS below for examples.</p>
               <p class="para_td"># In the default version, the standard materials are aluminum,</p>
               <p class="para_td"># steel, and stainless steel. Notice that the material names</p>
               <p class="para_td"># cannot contain whitespaces or new lines. The names are case sensitive.</p>
               <p class="para_td">#</p>
               <p class="para_td"># The standards are further defined in the Sheet Metal Features and Forming/Flattening Help,</p>
               <p class="para_td"># but you can use the supplied standard values as a guide.</p>
               <p class="para_td">#</p>
               <p class="para_td"># You should only change &quot;set ret &quot; lines in this proc.</p>
               <p class="para_td"># Changing other lines may cause the logic of the procedure</p>
               <p class="para_td"># to change.</p>
               <p class="para_td">#</p>
               <p class="para_td">#-----------------------------------------</p>
               <p class="para_td">proc part {cmd} {</p>
            </td>
         </tr>
         <tr valign="top">
            <td colspan="1" rowspan="1" valign="middle">
               <p class="para_td">set parms {MATERIAL THICKNESS} set ret &quot;error: unknown&quot;</p>
               <p class="para_td">&nbsp; set error &quot;&quot;</p>
               <p class="para_td">&nbsp; set note &quot;&quot;# Scan the command first to get the method: either ask_std or chk_std</p>
               <p class="para_td">if { [scan $cmd &quot;%s %s %s %s %s %s&quot; method varnam c_mat mat_val \</p>
               <p class="para_td">&nbsp; c_thick thick_val ] != 6 } {</p>
               <p class="para_td">&nbsp; set method invalidarg</p>
               <p class="para_td">&nbsp; }# Set the return values for the standard parameters set MATERIAL {set ret &quot;vallist: steel stainless_steel aluminum&quot;} set THICKNESS {</p>
               <p class="para_td">&nbsp; switch $mat_val {</p>
               <p class="para_td">&nbsp; steel {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: .030 .050 .070&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; stainless_steel {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: .030 .040 .050&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; aluminum {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: .030 .040 .050 .060 .070 .080&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; default {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: .030 .040 .050 .060 .070 .080&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }#== DO NOT MODIFY THE CODE BELOW THIS LINE IN THIS PROC = if { $method == &quot;ask_std&quot; } {</p>
               <p class="para_td">&nbsp; if { [catch {eval [eval set ret $$varnam]}] } {</p>
               <p class="para_td">&nbsp; set ret &quot;error: $varnam not a standard for flange&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; if { $error != &quot;&quot; } {</p>
               <p class="para_td">&nbsp; set ret &quot;error: $error&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; if { $note != &quot;&quot; } {</p>
               <p class="para_td">&nbsp; set ret &quot;$ret note: $note&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; } elseif { $method == &quot;chk_std&quot; } {</p>
               <p class="para_td">&nbsp; set cmdl [split $cmd { }]</p>
               <p class="para_td">&nbsp; set parml [lrange $cmdl 2 end]</p>
               <p class="para_td">&nbsp; set out1 &quot;[lindex $cmdl 1]:\n&quot;</p>
               <p class="para_td">&nbsp; set out2 &quot;&quot;</p>
               <p class="para_td">&nbsp; foreach i $parms {</p>
               <p class="para_td">&nbsp; set pass 0</p>
               <p class="para_td">&nbsp; if { [catch {eval [eval set ret $$i]}] } {</p>
               <p class="para_td">&nbsp; set out2 &quot;$out2 Warning &ndash; Explicit standard for $i not implemented\n&quot;</p>
               <p class="para_td">&nbsp; continue</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; set idx [lsearch $parml $i]</p>
               <p class="para_td">&nbsp; if { $idx != &ndash;1 } {</p>
               <p class="para_td">&nbsp; set retl [split $ret { }]</p>
               <p class="para_td">&nbsp; set out2 &quot;$out2[check_value [lindex $parml $idx] \</p>
               <p class="para_td">&nbsp; [lindex $parml [expr $idx+1]] [lrange $retl 1 end] pass]&quot;</p>
               <p class="para_td">&nbsp; if { $pass &amp;&amp; ([lindex $ret 0] == &quot;varnam:&quot;)} {</p>
               <p class="para_td">&nbsp; if { [catch {eval [eval set ret $[lindex $parml \</p>
               <p class="para_td">&nbsp; [expr $idx+1]]]} ]} {</p>
               <p class="para_td">&nbsp; set out2 &quot;$out2 FAIL &ndash; [lindex $parml $idx] [lindex $parml \</p>
               <p class="para_td">&nbsp; [expr $idx+1]] &ndash; DOES NOT EVAL\n&quot;</p>
               <p class="para_td">&nbsp; continue</p>
               <p class="para_td">&nbsp; } else {</p>
               <p class="para_td">&nbsp; set out2 &quot;$out2 **** checking standards for [lindex \</p>
               <p class="para_td">&nbsp; $parml [expr $idx+1]]\n&quot;</p>
               <p class="para_td">&nbsp; set retl [split $ret { }]</p>
               <p class="para_td">&nbsp; set out2 &quot;$out2[check_parm $parml $retl] **** done\n&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; } else {</p>
               <p class="para_td">&nbsp; set out2 &quot;$out2 FAIL &ndash; $i &ndash; NOT IN INPUT\n&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; set ret $out1$out2</p>
               <p class="para_td">&nbsp; } elseif { $method == &quot;set_var&quot; } {</p>
               <p class="para_td">&nbsp; set cmdl [split $cmd { }]</p>
               <p class="para_td">&nbsp; set out &quot;&quot;</p>
               <p class="para_td">&nbsp; if { [catch {eval set $varnam [lindex $cmdl 2]}] } {</p>
               <p class="para_td">&nbsp; set out &quot;error: varnam [lindex $cmdl 2] not implemented\n&quot;</p>
               <p class="para_td">&nbsp; continue</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; return $out</p>
               <p class="para_td">&nbsp; } else {</p>
               <p class="para_td">&nbsp; set ret &quot;error: invalid method or argument count&quot;</p>
               <p class="para_td">&nbsp; }</p>
            </td>
         </tr>
         <tr valign="top">
            <td colspan="1" rowspan="1" valign="middle">
               <p class="para_td">&nbsp; return $ret</p>
               <p class="para_td">}</p>
               <p class="para_td">#-----------------------------------------</p>
               <p class="para_td">#</p>
               <p class="para_td">&nbsp;proc flange</p>
               <p class="para_td">#</p>
               <p class="para_td"># This proc is used to set the flange standards for your site.</p>
               <p class="para_td"># These standards include thickness, width, length, angle, radius,</p>
               <p class="para_td"># taper and Bend Allowance Formulas (BAF).</p>
               <p class="para_td">#</p>
               <p class="para_td"># Notice that the BAF values can no longer contain whitespaces or other</p>
               <p class="para_td"># whitespace. This has changed from previous version of this</p>
               <p class="para_td"># file. The formulas are separated by one or more whitespaces.</p>
               <p class="para_td">#</p>
               <p class="para_td"># All standards will be listed in scrolled windows in the</p>
               <p class="para_td"># application in the order in which the names appear in their</p>
               <p class="para_td"># value list.</p>
               <p class="para_td">#</p>
               <p class="para_td"># The standards are further defined in the Sheet Metal Features and Forming/Flattening Help,</p>
               <p class="para_td"># but you can use the supplied standard values as a guide.</p>
               <p class="para_td">#</p>
               <p class="para_td"># You should only change &quot;set ret &quot; lines in this proc.</p>
               <p class="para_td"># Changing other lines may cause the logic of the procedure</p>
               <p class="para_td"># to change.</p>
               <p class="para_td">#</p>
               <p class="para_td">#-----------------------------------------</p>
               <p class="para_td">proc flange {cmd} { global tol set parms {BAF THICKNESS WIDTH LENGTH ANGLE RADIUS TAPER} set ret &quot;error: unknown&quot;</p>
               <p class="para_td">&nbsp; set error &quot;&quot;</p>
               <p class="para_td">&nbsp; set note &quot;&quot;# Scan the command to get the method and the parameters if { [scan $cmd &quot;%s %s %s %s %s %s&quot; method varnam c_mat mat_val \</p>
               <p class="para_td">&nbsp; c_thick thick_val ] != 6 } {</p>
               <p class="para_td">&nbsp; set method invalidarg</p>
               <p class="para_td">&nbsp; }# Set the return values for the standard parameters set THICKNESS {</p>
               <p class="para_td">&nbsp; switch $mat_val {</p>
               <p class="para_td">&nbsp; steel {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: .030 .050 .070&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; stainless_steel {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: .030 .040 .050&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; aluminum {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: .030 .040 .050 .060 .070 .080&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; default {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: .030 .040 .050 .060 .070 .080&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; } set ANGLE {</p>
               <p class="para_td">&nbsp; switch $mat_val {</p>
               <p class="para_td">&nbsp; steel {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: 30 45 90 120&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; aluminum {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: 45 90&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; default {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: 15 30 45 90 120 135&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }</p>
            </td>
         </tr>
         <tr valign="top">
            <td colspan="1" rowspan="1" valign="middle">
               <p class="para_td">&nbsp; set RADIUS {</p>
               <p class="para_td">&nbsp; switch $mat_val {</p>
               <p class="para_td">&nbsp; steel {</p>
               <p class="para_td">&nbsp; if { [expr abs($thick_val &ndash; .030)] &lt; $tol } {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: 0.125 0.25 0.5&quot;</p>
               <p class="para_td">&nbsp; } elseif { [expr abs($thick_val &ndash; .080)] &lt; $tol } {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: 0.031 .0625&quot;</p>
               <p class="para_td">&nbsp; } else {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: 0.25 .050&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; stainless_steel {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: 0.125 0.25&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; aluminum {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: 0.031 0.125 0.25&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; default {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: .200 .250 .375 .500 .625 .750&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td"># NOTE: BAF can no longer contain whitespaces as they did in previous</p>
               <p class="para_td"># versions of this file.</p>
               <p class="para_td">set BAF {</p>
               <p class="para_td">&nbsp; switch $mat_val {</p>
               <p class="para_td">&nbsp; steel {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: (Radius+(Thickness*0.44))*rad(Angle) \</p>
               <p class="para_td">&nbsp; (Radius+(Thickness*0.40))*rad(Angle) \</p>
               <p class="para_td">&nbsp; (Radius+(Thickness*0.50))*rad(Angle)&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; stainless_steel {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: (Radius+(Thickness*0.44))*rad(Angle) \</p>
               <p class="para_td">&nbsp; (Radius+(Thickness*0.40))*rad(Angle) \</p>
               <p class="para_td">&nbsp; (Radius+(Thickness*0.50))*rad(Angle)&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; aluminum {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: (Radius+(Thickness*0.44))*rad(Angle) \</p>
               <p class="para_td">&nbsp; (Radius+(Thickness*0.40))*rad(Angle) \</p>
               <p class="para_td">&nbsp; (Radius+(Thickness*0.50))*rad(Angle)&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; default {</p>
               <p class="para_td">&nbsp; set ret &quot;vallist: (Radius+(Thickness*0.44))*rad(Angle) \</p>
               <p class="para_td">&nbsp; (Radius+(Thickness*0.40))*rad(Angle) \</p>
               <p class="para_td">&nbsp; (Radius+(Thickness*0.50))*rad(Angle)&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">#== DO NOT MODIFY THE CODE BELOW THIS LINE IN THIS PROC= if { $method == &quot;ask_std&quot; } {</p>
               <p class="para_td">&nbsp; if { [catch {eval [eval set ret $$varnam]}] } {</p>
               <p class="para_td">&nbsp; set ret &quot;error: $varnam not a standard for flange&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; if { $error != &quot;&quot; } {</p>
               <p class="para_td">&nbsp; set ret &quot;error: $error&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; if { $note != &quot;&quot; } {</p>
               <p class="para_td">&nbsp; set ret &quot;$ret note: $note&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; } elseif { $method == &quot;chk_std&quot; } {</p>
               <p class="para_td">&nbsp; set cmdl [split $cmd { }]</p>
               <p class="para_td">&nbsp; set parml [lrange $cmdl 2 end]</p>
               <p class="para_td">&nbsp; set out1 &quot;[lindex $cmdl 1]:\n&quot;</p>
               <p class="para_td">&nbsp; set out2 &quot;&quot;</p>
               <p class="para_td">&nbsp; foreach i $parms {</p>
               <p class="para_td">&nbsp; set pass 0</p>
               <p class="para_td">&nbsp; if { [catch {eval [eval set ret $$i]}] } {</p>
               <p class="para_td">&nbsp; set out2 &quot;$out2 Warning &ndash; Explicit standard for $i not implemented\n&quot;</p>
               <p class="para_td">&nbsp; continue</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; set idx [lsearch $parml $i]</p>
               <p class="para_td">&nbsp; if { $idx != &ndash;1 } {</p>
               <p class="para_td">&nbsp; set retl [split $ret { }]</p>
               <p class="para_td">&nbsp; set out2 &quot;$out2[check_value [lindex $parml $idx] \</p>
               <p class="para_td">&nbsp; [lindex $parml [expr $idx+1]] [lrange $retl 1 end] pass]&quot;</p>
               <p class="para_td">&nbsp; if { $pass &amp;&amp; ([lindex $ret 0] == &quot;varnam:&quot;)} {</p>
               <p class="para_td">&nbsp; if { [catch {eval [eval set ret $[lindex $parml \</p>
               <p class="para_td">&nbsp; [expr $idx+1]]]} ]} {</p>
               <p class="para_td">&nbsp; set out2 &quot;$out2 FAIL &ndash; [lindex $parml $idx] [lindex $parml \</p>
               <p class="para_td">&nbsp; [expr $idx+1]] &ndash; DOES NOT EVAL\n&quot;</p>
               <p class="para_td">&nbsp; continue</p>
               <p class="para_td">&nbsp; } else {</p>
               <p class="para_td">&nbsp; set out2 &quot;$out2 **** checking standards for [lindex \</p>
               <p class="para_td">&nbsp; $parml [expr $idx+1]]\n&quot;</p>
               <p class="para_td">&nbsp; set retl [split $ret { }]</p>
               <p class="para_td">&nbsp; set out2 &quot;$out2[check_parm $parml $retl] **** done\n&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; } else {</p>
               <p class="para_td">&nbsp; set out2 &quot;$out2 FAIL &ndash; $i &ndash; NOT IN INPUT\n&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; set ret $out1$out2</p>
               <p class="para_td">&nbsp; } elseif { $method == &quot;set_var&quot; } {</p>
               <p class="para_td">&nbsp; set cmdl [split $cmd { }]</p>
               <p class="para_td">&nbsp; set out &quot;&quot;</p>
               <p class="para_td">&nbsp; if { [catch {eval set $varnam [lindex $cmdl 2]}] } {</p>
               <p class="para_td">&nbsp; set out &quot;error: varnam [lindex $cmdl 2] not implemented\n&quot;</p>
               <p class="para_td">&nbsp; continue</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; return $out</p>
               <p class="para_td">&nbsp; } else {</p>
               <p class="para_td">&nbsp; set ret &quot;error: invalid method or argument count&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; return $ret</p>
               <p class="para_td">}</p>
            </td>
         </tr>
         <tr valign="top">
            <td colspan="1" rowspan="1" valign="middle">
               <p class="para_td">#-----------------------------------------</p>
               <p class="para_td">#</p>
               <p class="para_td"># proc smdstd</p>
               <p class="para_td">#</p>
               <p class="para_td"># This procedure is the front end to the others. There is no</p>
               <p class="para_td"># need to modify this procedure</p>
               <p class="para_td">#</p>
               <p class="para_td">#-----------------------------------------</p>
               <p class="para_td">proc smdstd {cmd} {</p>
               <p class="para_td">&nbsp; set cmdl [split $cmd { }]</p>
               <p class="para_td">&nbsp; set out &quot;&quot;</p>
               <p class="para_td"># squeeze out any empty elements (multiple whitespaces between args)</p>
               <p class="para_td">&nbsp; while { [set idx [lsearch $cmdl {}]] != &ndash;1 } {</p>
               <p class="para_td">&nbsp; set cmdl [lreplace $cmdl $idx $idx]</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">#</p>
               <p class="para_td"># check for cmd errors</p>
               <p class="para_td">#</p>
               <p class="para_td">&nbsp; if { [catch {set out [eval [lindex $cmdl 0] {[lrange $cmdl 1 end]}] }] } {</p>
               <p class="para_td">&nbsp; set out &quot;error: object [lindex $cmdl 0] not implemented or uncaught error&quot;</p>
               <p class="para_td">&nbsp; }</p>
               <p class="para_td">&nbsp; return $out</p>
               <p class="para_td">}</p>
            </td>
         </tr>
      </table><br></body>
</html>