%  Cribbage.  C 2009  Jim Haliburton and Kevin Vickers
%  You use guage labelled Cribbage to set drill depth. 
%  Click on screen to reference all to home.
%  Install fixture on table 
%  Move X axis and Y axis to center electric drill over first workpiece.  Do NOT move Z axis.
%  Put Workpieces in fixture labelled Cribbage
%  Stand Cribbage guage on workpiece.
%  Drill bit is Brad point 1/8 inch  diameter.
%  Drill tip rests on top of standing drill guage.
%  Tighten chuck key.
%  Recheck drill height.
%  Reference all home.
%  Remark  Feed 40 ipm  F40
%  Remark  Inch measurements G20
%  ABSOLUTE DISTANCE MODE G90
%  G0 RAPID POSITIONING
F40 G20 G90 G0 X0 Y0 Z0 G28.1
G10 L2 P10 X0 Y0
G59 P10
#24=0            ( SETS PARAMETER FOR X AXIS TO ZERO )
#25=0            ( SETS PARAMETER FOR Y AXIS TO ZERO )
#26=0            ( SETS PARAMETER FOR Z AXIS TO ZERO )
#40=0.0000
#41=0.0000
#42=0.0000
#43=0.0000
#44=0.0000
#45=0.0000
#46=0.0000
#47=0.0000
#30=0.268071
%%%%%  #30=[[9.750-[6*#31]]/28]      ( DISTANCE BETWEEN HOLES IN A TRACK WAS 2812 THEN 2801 NOW 2790 IS GAP BETWEEN TRACK HOLES)

%  NOTE:  DISTANCE BETWEEN HOLES IS AS FOLLOWS: TRACK LENGTH 9.750 MINUS 6 TIMES SPACING BETWEEN GROUPS ALL DIVIDED BY
%         THE NUMBER OF SPACES BETWEEN HOLES WHICH IS 28 GAPS.  4 GAPS PER GROUP 7 GROUPS

#31=0.3740       ( GAP BETWEEN GROUPS OF HOLES WAS 3750 NOW 3740 )
#32=0.3125       ( GAP BETWEEN TRACKS .3125 AS OF 19 aUG 09 )
#33=0.0000
#34=0.0000
#35=4.4375       ( BOARD WIDTH  4-7/16THS  19 AUG 2009  CHANGE AS REQD IF BLANKS ARE DIFFERENT )
#36=[#35/2]      ( MAIN TRACK CENTRE LINE )
#37=0.6875       ( DISTANCE, ROW EDGE TO BOARD EDGE NOT THE C/L OF TRACKS FROM EDGE. SEE #39 )
#38=1.5625       ( Y DISTANCE FROM BOARD END TO START OF TRACK HOLES.  IGNORE PARKING HOLES )
#39=0.0000       ( X DISTANCE FROM EDGE OF BOARD TO C/L OF TRACKS NOT USED)

%   ARC INFORMATION IS DEFINED HERE STARTING HERE

#40=[#35/2]                     ( X VALUE FOR CENTER OF LARGE ARC IS BOARD WIDTH DIVIDED BY 2 )
#41=[9.750+#38]                 ( Y VALUE FOR CENTER OF LARGE ARC IS LENGTH OF PEGGING PLUS START OFFSET OF #38 )
#43=[[#35/2]-#37]               ( LARGE RADIUS FOR LARGE ARC IS C/L MINUS DISTANCE TO EDGE OF BOARD )
#42=[#43-#30]                   ( SMALL RADIUS FOR LARGE ARC )
#44=[[#35/2]+[[#42+[#32/2]]/2]] ( X VALUE FOR CNTR OF SMALL ARC IS 1/2 WAY BETWEEN C/L AND C/L OF EDGE TRACKS)
#45=[#38-0.0625]          ( Y VALUE FOR CENTER OF SMALL ARC  IS SAME AS END OF BOARD TO FIRST HOLE OR #38 MINUS 1/16TH)
#46=0.5735       ( SMALL RADIUS FOR SMALL ARC )
#47=[#46+#30]    ( LARGE RADIUS FOR SMALL ARC )
#48=16           ( ANGLE TO CHANGE IN LARGE ARC )
#49=30           ( ANGLE TO CHANGE IN SMALL ARC )

% DRILL INFORMATION IS DEFINED HERE 

#50=-4.6         ( Z DRILL DEPTH )
#51=[#50+0.600]  ( RETRACT OR CLEARANCE FOR DRILLING )
#52=12           (  FEED RATE FOR DRILLING HOLES )

% ANGLES OF ROTATION ARE DEFINED HERE 
#60=[180.00-#48]     ( STARTING ANGLE FOR LARGE ARCS JUST ABOVE 9 OCLOCK POSITION LEAVE ?? DEG GAP FROM 180 )
#61=[360.00-#49]     ( STARTING ANGLE FOR SMALL ARCS JUST BELOW 3 OCLOCK POSITION 30 DEG PER  ) 

%%%%%%%%%%%%%%   MAIN PROGRAM STARTS HERE    %%%%%%%%%%%%%%%%%%%

G28.1             ( GO TO LIMIT SWITCHES AND MAKE SURE THAT ALL AXES ARE SET TO 0 )
G10 L2 P10 X0 Y0  ( MAKES HOME = 0 POSITION)
G59 P10           ( USE THE OFFSET OF 0 ON THE X AXIS AND START )
M98 P100          ( GO TO MAIN PART BUILDER AND DO THE FIRST OF 3 IN THE FIXTURE )

% G30             (  GO TO 0,0 REMMED OUT FOR 2ND AND 3RD BOARD )
% M30             (  THIS LINE IS WHERE THE PROGRAM STOPS WITH ONLY 1 BOARD )

%   SECOND PART IN FIXTURE 

G10 L2 P11 X6 Y0  ( MOVES X 0 POSITION TO 6 INCHES ALONG X-AXIS FOR 2ND PART STARTING POINT.  CALLED BY G59 P11 )
G59 P11           ( USE THE OFFSET OF 6 ON THE X AXIS AND START AGAIN )
M98 P100          ( GO TO MAIN PART BUILDER AND DO THE FIRST OF 3 IN THE FIXTURE )

%   THIRD PART IN FIXTURE

G10 L2 P12 X12 Y0 ( MOVES X 0 POSITION TO 12 INCHES ALONG X -AXIS FOR 3RD PART STARTING POINT CALLED BY G59 P12 )
G59 P12           ( USE THE OFFSET OF 6 ON THE X AXIS AND START AGAIN )
M98 P100          ( GO TO MAIN PART BUILDER AND DO THE FIRST OF 3 IN THE FIXTURE )

% NOTE THE PARAMETERS #24, #25, AND #26 ARE THE VALUES OF X, Y, AND Z.
%  THE PARAMETER #30 IS THE INCREMENT  VALUE FOR THE DISTANCE BETWEEN HOLES
%  THE PARAMETER #31 IS THE SPACING BETWEEN GROUPS OF HOLES

% LOGIC IS TO GOTO G59 P10  MAKE 4 START HOLES.  SET X FOR FIRST HOLE OF 10 GROUP.  GO TO SUBROUTINE AND DRILL 10 HOLES
% RETURN AND INCREMENT X BY SPACING BETWEEN GROUPS. USE L FOR REPEAT 6 TIMES.  
% UNTIL FIRST 35 HOLE PAIRS ARE DRILLED.
% STEP THROUGH FIRST ARC BY SETTING RADIUS AND START POINT AND GOSUB TO DRILL HOLES ON ARC. RETURN
% SET X START FOR SCORE 46 AND ONWARD.  GOSUB TO REVERSE GROUP DRILL. DECREMENT X PER GROUP. CHECK X VALUE FOR MINIMUM
% REPEAT UNTIL SCORE 80 REACHED
% SET NEW VALUES FOR SMALLER ARC AND GOSUB TO DRILL ARC.
% SET NEW START FOR X AND Y OF SCORE 86 TO END.  USE SAME GOSUB AND LOGIC AS FOR FIRST TRACK OF HOLES.  
% DRILL FINISH HOLE
% SET G59 P11 AND START BOARD AGAIN.
% SET G59 P12 AND START 3RD BOARD
% ON COMPLETION SET G59 P10.
% HOME.  END.
G92.1
G59 P10
G28.1
G30
M30
%%%%%%    PROGRAM SHOULD STOP HERE.  EVERYTHING BELOW SHOULD BE SUBROUTINES   %%%%%%%


% SUBROUTINE MAIN BODY STARTS NEXT 
O100
%  WE DO THE 4 START OR PARKING HOLES FIRST
#24=[#37]
#25=0.8125
G81 X#24 Y#25 Z#50 R#51  F#52 #24=[#24+#32]
X#24 #25=[#25+#30]
Y#25 #24=[#24-#32]
X#24

% FINISH OF PARKING HOLES.
G80        ( CANCEL MODAL MODE )
F40 G20 G90 G0

%  SET START OF FIRST GROUP OF HOLES  THE X VALUE STARTS AT 
#25=#38
#24=#37 
M98 P110 L7   ( THIS LINE CALLS THE DRILL 10 HOLE SUBROUTINE AND REPEATS IT 7 TIMES TO DO THE TWO TRACKS OF 35 HOLES )
% G30           ( TO TEST THE LOOP IN THE 10 HOLE PATTERN AND STOP HERE )
% M30           ( TO TEST THE FIRST GROUP OF 10 HOLE 6 TIMES OVER )

% THE LARGE ARC  PATTERN HERE.  THIS DRILLS TWO CIRCULAR ROWS OF HOLES ONE INNER, ONE OUTER AT SAME ANGLES

G0 X#40 Y#41      (SETS THE PIVOT POINT )
G16
G81 x#42 y#60 Z#50 R#51 F#52
X#43 Y#60 #60=[#60-#48]   ( WE ARE DECREMENTING THE ANGLE BY #48 DEGREES AFTER EVERY 2 HOLES )
X#42 Y#60
X#43 Y#60 #60=[#60-#48]
X#42 Y#60  
X#43 Y#60 #60=[#60-#48]
X#42 Y#60  
X#43 Y#60 #60=[#60-#48]
X#42 Y#60 
X#43 Y#60 #60=[#60-[2*[#60-90]]]  (  WE SKIP THE 90 DEG BY 2* THE DIFF BETWEEN 90 AND ANGLE TO MOST RECENT HOLE )
X#42 Y#60 
X#43 Y#60 #60=[#60-#48]
X#42 Y#60 
X#43 Y#60 #60=[#60-#48]
X#42 Y#60 
X#43 Y#60 #60=[#60-#48]
X#42 Y#60 
X#43 Y#60 #60=[#60-#48]
X#42 Y#60 
X#43 Y#60 #60=[180.00-#48]      ( DRILL LAST HOLES AND RESET START TO 180 DEG - #48 FOR NEXT BOARD)
 
G15
G80     



%  THIS NEXT GROUP OF LINES STARTS THE REVERSE RUN FROM SCORE 46 TO 80
%  THE ONLY DIFFERENCE IS THE Y IS DECREMENTED BETWEEN GROUPS AND HOLES

G80 #24=[[#35/2]+#42] #25=#41  ( SET SCORE 46 INSIDE TRACK POSITION Y IS PEG LEN + END GAP X IS C/L PLUS SMALL RADIUS )
M98 P120 L7    ( GO DRILL NEXT GROUP OF HOLES SCORE 46-80 )


% THE SMALL ARC DRILL PATTERN.
G0 X#44 Y#45
G16
G81 X#46 Y#61 Z#50 R#51 
X#47 Y#61 #61=[#61-#49]    ( DECREMENT BY 30 DEG EACH TIME )
X#46 Y#61
X#47 Y#61 #61=[#61-#49]
X#46 Y#61
X#47 Y#61 #61=[#61-#49]
X#46 y#61
X#47 Y#61 #61=[#61-#49]
X#46 y#61
X#47 Y#61 #61=[360.0000-#49]   (  DRILL LAST HOLES AND RESET START TO DESIRED START ANGLE FOR NEXT BOARD ) 
G15
G80



%  SET START OF LAST TRACK OF HOLES  SCORE FROM 86 TO 120
#25=#38 #24=[[#35/2]-[#30/2]]   ( BASED ON CENTER LINE MINUS 1/2 OF HOLE SPACING SO IF HOLE SPACING CHANGES SO DOES THIS )
M98 P110 L7


% THE FINISH HOLE POSITION
G81 X[#35/2] Y[#41+0.625] Z#50 R#51
%   END OF PART
M99   ( RETURN FOR NEXT PART  )
G30
%  Go Home
%

O110   ( DRILL GROUP OF 10 HOLES MOVING ACROSS +Y AXIS )
G81 X#24 Y#25 Z#50 R#51  F#52 #24=[#24+#32]  ( AND INCREMENT X AS LAST STEP )
X#24 #25=[#25+#30]    ( DRILL HOLE 2 INC Y )
Y#25 #24=[#24-#32]    ( DRILL HOLE 3 DEC X )
X#24 #25=[#25+#30]    ( DRILL HOLE 4 INC Y )
Y#25 #24=[#24+#32]    ( DRILL HOLE 5 INC X )
X#24 #25=[#25+#30]    ( DRILL HOLE 6 INC Y )
Y#25 #24=[#24-#32]    ( DRILL HOLE 7 DEC X )
X#24 #25=[#25+#30]    ( DRILL HOLE 8 INC Y )
Y#25 #24=[#24+#32]    ( HOLE 9 AND INC X TO LAST HOLE )
X#24 #24=[#24-#32]    ( HOLE 10 AND DEC X TO LEFT HAND TRACK VALUE FOR RETURN )
#25=[#25+#31]
G80 
M99 


O120   ( DRILL GROUP OF 10 HOLES MOVING ACROSS -Y AXIS )
G81 X#24 Y#25 Z#50 R#51  F#52 #24=[#24+#32]  ( DRILL HOLE 1 AND INC X )
X#24  #25=[#25-#30]       ( DRILL HOLE 2 AND DEC Y )
Y#25  #24=[#24-#32]       ( DRILL HOLE 3 AND DEC X )
X#24  #25=[#25-#30]       ( DRILL HOLE 4 AND DEC Y )
Y#25  #24=[#24+#32]       ( DRILL HOLE 5 AND INC X )
X#24  #25=[#25-#30]       ( DRILL HOLE 6 AND DEC Y )
Y#25  #24=[#24-#32]       ( DRILL HOLE 7 AND DEC X )
X#24  #25=[#25-#30]       ( DRILL HOLE 8 AND DEC Y )
Y#25  #24=[#24+#32]       ( DRILL HOLE 9 AND INC X )
X#24  #24=[#24-#32]       ( DRILL HOLE 10 AND DEC X FOR NEXT 10 PATTERN )
#25=[#25-#31]             ( DEC Y FOR NEXT GROUP OF HOLES )
G80
M99

%    END OF FILE 

% STUFF BELOW HERE IS WHAT HAS BEEN REMMED OUT AND PULLED OUT OF THEMAIN LINE

% G30             (  GO TO 0,0 REMMED OUT FOR 2ND AND 3RD BOARD )
% M30               (  THIS LINE IS WHERE THE PROGRAM STOPS WITH ONLY 1 BOARD )

%G0 X6 Y0          (  GOT TO THE X = 6 AND Y = 0 FOR 2ND PART ) 
%G92 X6            (  SET WORK OFFSET TO CURRENT X = 6.  FUNCTIONALLY ZEROS SYSTEM WITH 6" OFFSET )
%M98 P100          (  GOT TO SUBROUTINE TO MAKE PART )
%G0 X12 Y0         (  GOT TO THE X = 6 AND Y = 0 FOR 2ND PART ) 
%G92 X12           (  SET WORK OFFSET TO CURRENT X = 6.  FUNCTIONALLY ZEROS SYSTEM WITH 6" OFFSET )
%M98 P100          (  GOT TO SUBROUTINE TO MAKE PART )


%G0 X6 Y0          (  GOT TO THE X = 6 AND Y = 0 FOR 2ND PART ) 
%G92 X6            (  SET WORK OFFSET TO CURRENT X = 6.  FUNCTIONALLY ZEROS SYSTEM WITH 6" OFFSET )
%M98 P100          (  GOT TO SUBROUTINE TO MAKE PART )
%G0 X12 Y0         (  GOT TO THE X = 6 AND Y = 0 FOR 2ND PART ) 
%G92 X12           (  SET WORK OFFSET TO CURRENT X = 6.  FUNCTIONALLY ZEROS SYSTEM WITH 6" OFFSET )
%M98 P100          (  GOT TO SUBROUTINE TO MAKE PART )
