home *** CD-ROM | disk | FTP | other *** search
-
- REM Name: sh_2belt.cdl
- REM
- REM Date: 013089 simon izraelevitz
- REM
- REM Task: Constructs a two arcs belt shape.
- REM
- REM Note: A message is displayed for all error conditions.
- REM
- 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 + ( 0.6495190*sc)
- y = oy + ( 0.3750000*sc)
- r = 0.2500000*sc
- ARC x, y, @depth, r, 309.6153437, 470.3863582, 0, 5
-
- x = ox + (-0.6495190*sc)
- y = oy + (-0.3750000*sc)
- r = 0.5000000*sc
- ARC x, y, @depth, r, 110.4163122, 309.5940540, 0, 5
-
- x1 = ox + (-0.8239385*sc)
- y1 = oy + ( 0.0935914*sc)
- x2 = ox + ( 0.5624318*sc)
- y2 = oy + ( 0.6093413*sc)
- VLINE x1, y1, @depth, x2, y2, @depth, 0, 5
-
- x1 = ox + ( 0.8089266*sc)
- y1 = oy + ( 0.1824144*sc)
- x2 = ox + (-0.3308470*sc)
- y2 = oy + (-0.7602897*sc)
- VLINE x1, y1, @depth, x2, y2, @depth, 0, 5
-
- x1 = ox + (-0.9495190*sc)
- y1 = oy + ( 0.1446153*sc)
- x2 = ox + (-0.3495190*sc)
- y2 = oy + (-0.8946153*sc)
- VLINE x1, y1, @depth, x2, y2, @depth, 0, 5, 0, 3
-
- x1 = ox + ( 0.4745191*sc)
- y1 = oy + ( 0.6781090*sc)
- x2 = ox + ( 0.8245191*sc)
- y2 = oy + ( 0.0718912*sc)
- VLINE x1, y1, @depth, x2, y2, @depth, 0, 5, 0, 3
-
- x1 = ox + ( 0.9526280*sc)
- y1 = oy + ( 0.5500001*sc)
- x2 = ox + (-1.1691343*sc)
- y2 = oy + (-0.6750001*sc)
- VLINE x1, y1, @depth, x2, y2, @depth, 0, 5, 0, 3
-
- x1 = ox + ( 1.0301059*sc)
- y1 = oy + (-0.3750000*sc)
- x2 = ox + (-1.3922682*sc)
- y2 = oy + (-0.3750000*sc)
- VLINE x1, y1, @depth, x2, y2, @depth, 0, 5, 0, 3
-
- REM draw 'L' dimension
- ARRAY GENDAT[22]
- GENDAT[ 0] = ox + (-0.6995190*sc)
- GENDAT[ 1] = oy + (-0.2883975*sc)
- GENDAT[ 2] = ox + (-1.1091101*sc)
- GENDAT[ 3] = oy + ( 0.4210352*sc)
- GENDAT[ 4] = ox + ( 0.5995191*sc)
- GENDAT[ 5] = oy + ( 0.4616026*sc)
- GENDAT[ 6] = ox + ( 0.1899280*sc)
- GENDAT[ 7] = oy + ( 1.1710352*sc)
- GENDAT[ 8] = ox + (-0.6071204*sc)
- GENDAT[ 9] = oy + ( 0.6531241*sc)
- GENDAT[10] = ox + (-1.0841101*sc)
- GENDAT[11] = oy + ( 0.3777339*sc)
- GENDAT[12] = ox + (-0.3071204*sc)
- GENDAT[13] = oy + ( 0.8263292*sc)
- GENDAT[14] = ox + ( 0.2149280*sc)
- GENDAT[15] = oy + ( 1.1277339*sc)
- GENDAT[16] = ox + (-1.0841101*sc)
- GENDAT[17] = oy + ( 0.3777339*sc)
- GENDAT[18] = 30.0000000
- GENDAT[19] = ox + ( 0.2149280*sc)
- GENDAT[20] = oy + ( 1.1277339*sc)
- GENDAT[21] = -150.0000000
-
- x = ox + (-0.5071204*sc)
- y = oy + ( 0.6397266*sc)
-
- GENDIM 50, 4, 0, 2, GENDAT, 1, x, y, `L
- `, 0.0000000, 0.2000000*sc, 0.5000000, 0, 5
-
- REM draw 'Rot' dimension
- ARRAY GENDAT[24]
- GENDAT[ 0] = ox + ( 1.1301060*sc)
- GENDAT[ 1] = oy + (-0.3750000*sc)
- GENDAT[ 2] = ox + ( 1.3838564*sc)
- GENDAT[ 3] = oy + (-0.3750000*sc)
- GENDAT[ 4] = ox + ( 1.0392306*sc)
- GENDAT[ 5] = oy + ( 0.6000000*sc)
- GENDAT[ 6] = ox + ( 1.1114358*sc)
- GENDAT[ 7] = oy + ( 0.6416878*sc)
- GENDAT[ 8] = ox + (-0.6495190*sc)
- GENDAT[ 9] = oy + (-0.3750000*sc)
- GENDAT[10] = 1.9833754*sc
- GENDAT[11] = 0.0000000
- GENDAT[12] = 8.5417061
- GENDAT[13] = ox + (-0.6495190*sc)
- GENDAT[14] = oy + (-0.3750000*sc)
- GENDAT[15] = 1.9833754*sc
- GENDAT[16] = 20.4998951
- GENDAT[17] = 30.0000000
- GENDAT[18] = ox + ( 1.3338565*sc)
- GENDAT[19] = oy + (-0.3750000*sc)
- GENDAT[20] = 92.8900299
- GENDAT[21] = ox + ( 1.0681345*sc)
- GENDAT[22] = oy + ( 0.6166877*sc)
- GENDAT[23] = -62.8900261
-
- x = ox + ( 1.1211995*sc)
- y = oy + ( 0.0195893*sc)
-
- GENDIM 53, 2, 2, 2, GENDAT, 1, x, y, `Rot
- `, 0.0000000, 0.2000000*sc, 0.5000000, 0, 5
-
- REM draw label 'PT'
- x1 = ox + ( 0.3503735*sc)
- y1 = oy + (-0.8755332*sc)
- x2 = ox + (-0.0496265*sc)
- y2 = oy + (-0.8755332*sc)
- x3 = ox + (-0.6495190*sc)
- y3 = oy + (-0.3750000*sc)
- x = ox + ( 0.4503735*sc)
- y = oy + (-0.9755332*sc)
-
- LABEL x1, y1, x2, y2, x3, y3, 1, x, y, `PT
- `, 0.0000000, 0.2000000*sc, 0.5000000, 0, 5
-
- REM draw label 'R1'
- x1 = ox + (-0.9647385*sc)
- y1 = oy + (-1.3597043*sc)
- x2 = ox + (-1.3647385*sc)
- y2 = oy + (-1.3597043*sc)
- x3 = ox + (-0.8762745*sc)
- y3 = oy + (-0.8249927*sc)
- x = ox + (-0.8647385*sc)
- y = oy + (-1.4597043*sc)
-
- LABEL x1, y1, x2, y2, x3, y3, 1, x, y, `R1
- `, 0.0000000, 0.2000000*sc, 0.5000000, 0, 5
-
- REM draw label 'R2'
- x1 = ox + ( 0.8426620*sc)
- y1 = oy + ( 1.1669366*sc)
- x2 = ox + ( 1.2426620*sc)
- y2 = oy + ( 1.1669366*sc)
- x3 = ox + ( 0.7964553*sc)
- y3 = oy + ( 0.5746280*sc)
- x = ox + ( 0.5426620*sc)
- y = oy + ( 1.0669366*sc)
-
- LABEL x1, y1, x2, y2, x3, y3, 1, x, y, `R2
- `, 0.0000000, 0.2000000*sc, 0.5000000, 0, 5
-
- REM get data to create permanent geometry
- REM default values
- PI = 3.14159
- radang = 180/PI
- rad1 = 2.00
- rad2 = 1.00
- length = 3.00
- rot = 0
-
- REM get length
- :get_length
- GETFLT "Enter (L) distance between centers (%f):",length,length
- ON (@key + 3) GOTO exit,exit,
- length = abs(length)
- IF ((length <= .00005) || (length >= 10000))
- GOTO message1
-
- REM get first arc radius
- :get_rad1
- GETFLT "Enter (R1) first arc radius (%f):",rad1,rad1
- ON (@key + 3) GOTO exit,get_length,
- rad1 = abs(rad1)
- IF ((rad1 <= .00005) || (rad1 >= 10000))
- GOTO message1
-
- REM get second arc radius
- :get_rad2
- GETFLT "Enter (R2) second arc radius (%f):",rad2,rad2
- ON (@key + 3) GOTO exit,get_rad1,
- rad2 = abs(rad2)
- IF ((rad2 <= .00005) || (rad2 >= 10000))
- GOTO message1
- GOTO get_rot
-
- :message1
- PROMPT "Entered value is out of range ..."
- WAIT 3
- GOTO get_length
-
- :get_rot
- GETFLT "Enter (Rot) rotation angle (%f):",rot,rot
- sinrot = sin(rot)
- cosrot = cos(rot)
- ON (@key + 3) GOTO exit,get_rad2,
-
- REM construct belt shape
- :geom_constr
- MODE NORMAL
- posdef = 1
- GETPOS "Indicate (PT) arc center position",posdef
- ON (@key + 3) GOTO exit,get_rot,geom_constr,
- xc = @XVIEW
- yc = @YVIEW
- zc = @DEPTH
-
- REM tangent points calculation
- dist = abs((rad1*length) / (rad1 - rad2))
- cosang = rad1/dist
- sinang = sqrt(1 - cosang*cosang)
- CALL atan3,sinang,cosang,ang
- ang = ang*radang
-
- REM construct tangent lines
- :lines
- ax = rad1*cosang
- ay = rad1*sinang
- bx = length + rad2*cosang
- by = rad2*sinang
- lntype = 1
- DOSUB sh_drwln
-
- ax = rad1*cosang
- ay = -rad1*sinang
- bx = length + rad2*cosang
- by = -rad2*sinang
- lntype = 1
- DOSUB sh_drwln
-
- REM right arc
- x = xc + length*cosrot
- y = yc + length*sinrot
- ARC x,y,zc,rad2,(-ang + rot),(ang + rot)
-
- REM left arc
- x = xc
- y = yc
- ARC x,y,zc,rad1,(ang + rot),(-ang + rot)
-
- :do_ctrlines
- GETMENU "Do you want the slot center lines (YES) ?",\
- "YES",\
- "NO"
- ON (@key + 3) GOTO exit,get_length,yes,do_ctrlines,yes,no,
-
- :yes
- ax = 0
- ay = rad1 + .1
- bx = 0
- by = -(rad1 + .1)
- lntype = 3
- DOSUB sh_drwln
-
- ax = length
- ay = rad2 + .1
- bx = length
- by = -(rad2 + .1)
- lntype = 3
- DOSUB sh_drwln
-
- ax = -(rad1 + .1)
- ay = 0
- bx = length + rad2 + .1
- by = 0
- lntype = 3
- DOSUB sh_drwln
-
- REM back to the begining
- :no
- GOTO get_length
-
- :exit
- MODE NORMAL
- CHAIN shapes
- exit
-