--keyway1.prg --program for loading a symbol containing the dimensioned outline of a keyed --shaft with a BS keyway errpau off errmes off endm key1 -- just check that the user hasn't dropped out of the program and left it set errmes on begm key1 defm mi1 '0' defm mi2 '0' defm mi3 '0' defm mi4 '0' defm mi5 '0' defm mi6 '0' defm mi7 '0' defm pos '0' -- let symt = '2' prompt 'Place the symbol with dimensions (else just geometry) ' dimy chr 1 def 'N' if ((upcase(dimy)) .eq. 'Y') then let symt = '1' else let symt = '2' endif -- set up the size splits for the key size selection let lens = 8.1 10.1 12.1 17.1 22.1 30.1 38.1 44.1 50.1 58.1 65.1 75.1 85.1 write '' prompt 'Shaft keyway ? ' key1 chr1 def 'Y' write '' if ((upcase(key1)) .eq. 'Y') then let kd = 1.2 1.8 2.5 3 3.5 4 5 5 5.5 6 7 7.5 9 let dlt = -0.1 -0.1 -0.1 -0.1 -0.1 -0.2 -0.2 -0.2 -0.2 -0.2 -0.2 -0.2 let dut = 0 0 0 0 0 0 0 0 0 0 0 0 0 let kw = 2 3 4 5 6 8 10 12 14 16 18 20 22 let wut = 0.02 0.02 0.03 0.03 0.03 0.04 0.04 0.04 0.04 0.04 0.04 0.05 0.05 let wlt = 0 0 0 0 0 0 0 0 0 0 0 0 0 let sgn = '-' else prompt 'Internal keyway ? ' key2 chr1 def 'Y' if ((upcase(key2)) .eq. 'Y') then let kd = 1 1.4 1.8 2.3 2.8 3.3 3.3 3.3 3.8 4.3 4.4 4.9 5.4 let dut = 0.1 0.1 0.1 0.1 0.1 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 let dlt = 0 0 0 0 0 0 0 0 0 0 0 0 0 let kw = 2 3 4 5 6 8 10 12 14 16 18 20 22 let wut = 0.06 0.06 0.08 0.08 0.08 0.10 0.10 0.12 0.12 0.12 0.15 0.15 let wlt = 0.02 0.02 0.03 0.03 0.03 0.04 0.04 0.05 0.05 0.05 0.06 0.06 let sgn = '+' else endm key1 endrun endif endif prompt 'Enter Diameter > ' mi3 rea if (mi3 .gt. 85) then write "Only shafts/bores of 85mm dia or less are supported" endm key1 endrun endif let a = (todec(mi3;0)) --get whole number (lose the decimal places) let len = (eval(a)) let sel = 1 --let lens = 8.1 10.1 12.1 17.1 22.1 30.1 38.1 44.1 50.1 58.1 65.1 75.1 85.1 loop select if (len .lt. (lens[@vsel])) then break select else let sel = (sel+1) endif endloop select LET tmo = (kd[@vsel]) let mi1 = (mi3 @vsgn tmo) let mi2 = (kw[@vsel]) let mi4 = (wut[@vsel]) let mi5 = (wlt[@vsel]) let mi6 = (dut[@vsel]) let mi7 = (dlt[@vsel]) prompt 'probe posn' pos chr autcp let pos = @vprobu$ --find the symbol mxe search (sym$2d;'key@vsymt.sym') as sym$ if ( typeof(sym$) .eq. "UNSET" ) then write "Could not find the symbol key@vsymt.sym Please see MRN" endm key1 endrun endif -- load the symbol onto the sheet in the correct size parloa @vsym$ @E-arg X = @vpos @E-arg A = @vmi1 @E-arg B = @vmi2 @E-arg C = @vmi3 @E-arg D = @vmi4 @E-arg E = @vmi5 @E-arg F = @vmi6 @E-arg G = @vmi7 @E-cal @E-endm KEY1