home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 March / Chip_1998-03_cd.bin / tema / MINICAD / MC7DEMO / MINICAD.1 / SLOTS.MPC < prev    next >
Text File  |  1997-04-30  |  914b  |  48 lines

  1. PROCEDURE Slots;
  2. {
  3. ⌐1997, Diehl Graphsoft, Inc.
  4.  
  5. This procedure draws slots.
  6. Developed by Tom Urie.
  7. }
  8. LABEL 5,10,99;
  9.  
  10. VAR
  11.     L,r,x0,y0,x1,y1,x2,y2,Theta : REAL;
  12.  
  13. BEGIN
  14.     5:r:=RealDialog('Slot Width:','1/2')/2;
  15.     IF DidCancel THEN GOTO 99;
  16.     IF r <= 0 THEN
  17.     BEGIN
  18.         SysBeep;
  19.         GOTO 5;
  20.     END;
  21.     Message('Click center points of slot. Double-click to quit.');
  22.     10:GetLine(x1,y1,x2,y2);
  23.     If (x1 = x2) AND (y1 = y2) THEN GOTO 99;
  24.     L:=Distance(x1,y1,x2,y2);
  25.     Theta:=ArcCos((x2-x1)/L);
  26.     IF y2 < y1 THEN
  27.         Theta:=2*PI-Theta;
  28.     x0:=x1-r*Cos(Theta)-r*Sin(Theta);
  29.     y0:=y1-r*Sin(Theta)+r*Cos(Theta);
  30.     Theta:=Rad2Deg(Theta);
  31.     Absolute;
  32.     MoveTo(x0,y0);
  33.     Relative;
  34.     AngleVar;
  35.     ClosePoly;
  36.     BeginPoly;
  37.         ArcTo((L+2*r),#Theta,r);
  38.         ArcTo((2*r),#(Theta-90),r);
  39.         ArcTo(-(L+2*r),#Theta,r);
  40.         ArcTo(-(2*r),#(Theta-90),r);
  41.     EndPoly;
  42.     NoAngleVar;
  43.     Redraw;
  44.     GOTO 10;
  45.     99:ClrMessage;
  46. END;
  47.  
  48. RUN(Slots);