home *** CD-ROM | disk | FTP | other *** search
- REM Name: sh_raslt.cdl
- REM
- REM Date: 010989 simon izraelevitz
- REM
- REM Task: Constructs a radial slot given the width, the sweep
- REM angle, and the center line radius.
- REM The user has the option to create the slot centerlines.
- REM
- REM Note: A message is displayed for all error conditions.
- REM
- REM -----------------------------------------------
-
- CLEAR
-
- REM define icon scale factor
- sc = 1.5 / @scale
-
- REM compute icon oval origin
- xinc = (@xmax - @xmin)/10
- yinc = (@ymax - @ymin)/10
- ox = @xmax - 3*xinc
- oy = @ymax - 3*yinc
-
- REM create icon geometry
- MODE DRAW
-
- x = ox + (-1.1248783*sc)
- y = oy + (-1.3405778*sc)
- r = 1.5000000*sc
- ARC x, y, @depth, r, 20.0000000, 80.0000000, 0, 5
-
- x = ox + (-1.1248783*sc)
- y = oy + (-1.3405778*sc)
- r = 2.0000000*sc
- ARC x, y, @depth, r, 20.0000000, 80.0000000, 0, 5
-
- x = ox + (-1.1248783*sc)
- y = oy + (-1.3405778*sc)
- r = 1.7500000*sc
- ARC x, y, @depth, r, 8.5216591, 91.4783432, 0, 5, 0, 3
-
- x = ox + (-0.8209940*sc)
- y = oy + ( 0.3828357*sc)
- r = 0.2500000*sc
- ARC x, y, @depth, r, 80.0000000, 260.0000000, 0, 5
-
- x = ox + ( 0.5195838*sc)
- y = oy + (-0.7420426*sc)
- r = 0.2500000*sc
- ARC x, y, @depth, r, 200.0000000, 380.0000000, 0, 5
-
- x1 = ox + ( 1.3418933*sc)
- y1 = oy + (-1.3405778*sc)
- x2 = ox + ( 0.2751217*sc)
- y2 = oy + (-1.3405778*sc)
- VLINE x1, y1, @depth, x2, y2, @depth, 0, 5, 0, 3
-
- x1 = ox + ( 0.1906914*sc)
- y1 = oy + (-0.8617496*sc)
- x2 = ox + ( 0.8484762*sc)
- y2 = oy + (-0.6223356*sc)
- VLINE x1, y1, @depth, x2, y2, @depth, 0, 5, 0, 3
-
- x1 = ox + (-0.2249756*sc)
- y1 = oy + (-0.2681156*sc)
- x2 = ox + ( 0.2249756*sc)
- y2 = oy + ( 0.2681154*sc)
- VLINE x1, y1, @depth, x2, y2, @depth, 0, 5, 0, 3
-
- x1 = ox + (-0.8817708*sc)
- y1 = oy + ( 0.0381529*sc)
- x2 = ox + (-0.7602171*sc)
- y2 = oy + ( 0.7275183*sc)
- VLINE x1, y1, @depth, x2, y2, @depth, 0, 5, 0, 3
-
- x1 = ox + (-1.1248783*sc)
- y1 = oy + (-1.3405778*sc)
- VPOINT x1, y1, @depth, 0, 5
-
- REM draw 'W' dimension
- ARRAY GENDAT[22]
- GENDAT[ 0] = ox + (-0.9628868*sc)
- GENDAT[ 1] = oy + ( 0.1539986*sc)
- GENDAT[ 2] = ox + (-1.4866660*sc)
- GENDAT[ 3] = oy + ( 0.2463550*sc)
- GENDAT[ 4] = ox + (-0.8760627*sc)
- GENDAT[ 5] = oy + ( 0.6464024*sc)
- GENDAT[ 6] = ox + (-1.3998418*sc)
- GENDAT[ 7] = oy + ( 0.7387589*sc)
- GENDAT[ 8] = ox + (-1.5068849*sc)
- GENDAT[ 9] = oy + (-0.1562505*sc)
- GENDAT[10] = ox + (-1.4374256*sc)
- GENDAT[11] = oy + ( 0.2376726*sc)
- GENDAT[12] = ox + (-1.2811421*sc)
- GENDAT[13] = oy + ( 1.1239995*sc)
- GENDAT[14] = ox + (-1.3506014*sc)
- GENDAT[15] = oy + ( 0.7300764*sc)
- GENDAT[16] = ox + (-1.4374256*sc)
- GENDAT[17] = oy + ( 0.2376726*sc)
- GENDAT[18] = 260.0000000
- GENDAT[19] = ox + (-1.3506014*sc)
- GENDAT[20] = oy + ( 0.7300764*sc)
- GENDAT[21] = 80.0000000
-
- x = ox + (-1.4380946*sc)
- y = oy + ( 0.4174420*sc)
-
- GENDIM 50, 4, 0, 2, GENDAT, 1, x, y, `W
- `, 0.0000000, 0.2000000*sc, 0.5000000, 0, 5
-
- REM draw 'Ang' dimension
- ARRAY GENDAT[24]
- GENDAT[ 0] = ox + ( 0.9424455*sc)
- GENDAT[ 1] = oy + (-0.5881335*sc)
- GENDAT[ 2] = ox + ( 1.1897597*sc)
- GENDAT[ 3] = oy + (-0.4981185*sc)
- GENDAT[ 4] = ox + (-0.7428523*sc)
- GENDAT[ 5] = oy + ( 0.8259991*sc)
- GENDAT[ 6] = ox + (-0.6971505*sc)
- GENDAT[ 7] = oy + ( 1.0851871*sc)
- GENDAT[ 8] = ox + (-1.1248783*sc)
- GENDAT[ 9] = oy + (-1.3405778*sc)
- GENDAT[10] = 2.4131863*sc
- GENDAT[11] = 20.0000000
- GENDAT[12] = 43.6258888
- GENDAT[13] = ox + (-1.1248783*sc)
- GENDAT[14] = oy + (-1.3405778*sc)
- GENDAT[15] = 2.4131863*sc
- GENDAT[16] = 57.9254532
- GENDAT[17] = 80.0000000
- GENDAT[18] = ox + ( 1.1427751*sc)
- GENDAT[19] = oy + (-0.5152195*sc)
- GENDAT[20] = 112.3749542
- GENDAT[21] = ox + (-0.7058328*sc)
- GENDAT[22] = oy + ( 1.0359467*sc)
- GENDAT[23] = -12.3749619
-
- x = ox + ( 0.2565772*sc)
- y = oy + ( 0.4243921*sc)
-
- GENDIM 53, 2, 2, 2, GENDAT, 1, x, y, `Ang
- `, 0.0000000, 0.2000000*sc, 0.5000000, 0, 5
-
- REM draw 'Rot' dimension
- ARRAY GENDAT[24]
- GENDAT[ 0] = ox + ( 0.1751217*sc)
- GENDAT[ 1] = oy + (-1.3405778*sc)
- GENDAT[ 2] = ox + (-0.1883723*sc)
- GENDAT[ 3] = oy + (-1.3405778*sc)
- GENDAT[ 4] = ox + (-0.2892544*sc)
- GENDAT[ 5] = oy + (-0.3447201*sc)
- GENDAT[ 6] = ox + (-0.5229039*sc)
- GENDAT[ 7] = oy + (-0.6231727*sc)
- GENDAT[ 8] = ox + (-1.1248782*sc)
- GENDAT[ 9] = oy + (-1.3405778*sc)
- GENDAT[10] = 0.9865059*sc
- GENDAT[11] = 0.0000000
- GENDAT[12] = 11.8160295
- GENDAT[13] = ox + (-1.1248782*sc)
- GENDAT[14] = oy + (-1.3405778*sc)
- GENDAT[15] = 0.9865059*sc
- GENDAT[16] = 37.6069603
- GENDAT[17] = 50.0000000
- GENDAT[18] = ox + (-0.1383723*sc)
- GENDAT[19] = oy + (-1.3405778*sc)
- GENDAT[20] = 95.8179474
- GENDAT[21] = ox + (-0.4907645*sc)
- GENDAT[22] = oy + (-0.5848705*sc)
- GENDAT[23] = -45.8179398
-
- x = ox + (-0.3739384*sc)
- y = oy + (-1.0385711*sc)
-
- GENDIM 53, 2, 2, 2, GENDAT, 1, x, y, `Rot
- `, 0.0000000, 0.2000000*sc, 0.5000000, 0, 5
-
- REM draw label 'R'
- x1 = ox + (-1.1247880*sc)
- y1 = oy + (-0.6431985*sc)
- x2 = ox + (-0.7247881*sc)
- y2 = oy + (-0.6431985*sc)
- x3 = ox + (-0.5661268*sc)
- y3 = oy + ( 0.3131930*sc)
- x = ox + (-1.3247881*sc)
- y = oy + (-0.7431985*sc)
-
- LABEL x1, y1, x2, y2, x3, y3, 1, x, y, `R
- `, 0.0000000, 0.1500000*sc, 0.5000000, 0, 5
-
- REM draw label 'PT'
- x1 = ox + (-0.5166867*sc)
- y1 = oy + (-1.5990208*sc)
- x2 = ox + (-0.9166868*sc)
- y2 = oy + (-1.5990208*sc)
- x3 = ox + (-1.1248783*sc)
- y3 = oy + (-1.3405778*sc)
- x = ox + (-0.4166867*sc)
- y = oy + (-1.6990209*sc)
-
- LABEL x1, y1, x2, y2, x3, y3, 1, x, y, `PT
- `, 0.0000000, 0.1500000*sc, 0.5000000, 0, 5
-
- REM get data to create permanent geometry
- REM default values
- rad = 3.00
- width = 1.00
- angx = 60
- rot = 0
-
- REM get center line radius
- :get_radius
- GETFLT "Enter (R) center line radius (%f):",rad,rad,
- ON (@key + 3) GOTO exit,exit,
- rad = abs(rad)
- IF ((rad <= .00005) || (rad >= 10000))
- GOTO message1
- GOTO get_width
-
- REM get width
- :get_width
- GETFLT "Enter (W) slot width (%f):",width,width
- ON (@key + 3) GOTO exit,get_radius,
- rad2 = abs(width/2)
- IF ((rad2 <= .00005) || (rad2 >= 10000))
- GOTO message1
- GOTO get_ang
-
- :message1
- PROMPT "Entered value is out of range ..."
- WAIT 3
- GOTO get_radius
-
- REM get included angle
- :get_ang
- GETFLT "Enter (Ang) including angle (%f):",angx,angx
- ON (@key + 3) GOTO exit,get_width,
- ang = abs(angx/2)
-
- :get_rot
- GETFLT "Enter (Rot) rotation angle (%f):",rot,rot
- ON (@key + 3) GOTO exit,get_ang,
-
- REM construct slot
- :geom_constr
- MODE NORMAL
- posdef = 1
- GETPOS "Indicate (PT) slot center position",posdef
- ON (@key + 3) GOTO exit,get_rot,geom_constr,
- xc = @XVIEW
- yc = @YVIEW
- zc = @DEPTH
-
- sinang = sin(ang)
- cosang = cos(ang)
- sinrot = sin(rot)
- cosrot = cos(rot)
-
- REM construct arcs
-
- a = rad*cosang
- b = -rad*sinang
- x = xc + a*cosrot - b*sinrot
- y = yc + a*sinrot + b*cosrot
- ARC x,y,zc,rad2,(rot - ang - 180),(rot - ang)
-
- a = rad*cosang
- b = rad*sinang
- x = xc + a*cosrot - b*sinrot
- y = yc + a*sinrot + b*cosrot
- ARC x,y,zc,rad2,(rot + ang),(rot + ang + 180)
-
- ARC xc,yc,zc,(rad - rad2),(rot - ang),(rot + ang)
-
- ARC xc,yc,zc,(rad + rad2),(rot - ang),(rot + ang)
-
- :do_ctrlines
- GETMENU "Do you want the slot center lines (YES) ?",\
- "YES",\
- "NO"
- ON (@key + 3) GOTO exit,get_radius,yes,do_ctrlines,yes,no,
-
- :yes
- ax = (rad + rad2 + .1)*cosang
- ay = -(rad + rad2 + .1)*sinang
- bx = (rad - rad2 - .1)*cosang
- by = -(rad - rad2 - .1)*sinang
- lntype = 3
- DOSUB sh_drwln
-
- ax = (rad + rad2 + .1)*cosang
- ay = (rad + rad2 + .1)*sinang
- bx = (rad - rad2 - .1)*cosang
- by = (rad - rad2 -.1)*sinang
- lntype = 3
- DOSUB sh_drwln
-
- ARC xc,yc,zc,rad,(rot - ang - atan2(1.25*rad2,rad)),\
- (rot + ang + atan2(1.25*rad2,rad)),0,0,0,3
-
- REM back to the begining
- :no
- GOTO get_radius
-
- :exit
- MODE NORMAL
- CHAIN shapes
- exit
-