The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use CNC::Cog;
use CNC::Cog::Gdcode; 
use CNC::Cog::Gcode; 

# process options. Use getopts if you like. 
my %opt; 
$opt{allowed}='p'; 
@ARGV=grep { s/^-([$opt{allowed}])//?(($opt{$1}=1)&&0):1 } @ARGV; # set options allowed in opt
grep { m/^-/ } @ARGV and die "Illegal option in @ARGV"; 

my ($g);
if ($opt{p})
{
  $g=new Gdcode("test.png",1.5,300,300);   # this uses the GD module to generate a .png file size 1950 pixels square. 
}
else
{
   my $feed=3.0;                           # feed rate for cut. 
   $g=new Gcode("test.ngc",$feed);         # and this produces gcode in the file test.ngc. 
}

$c=newcogpair Cog(1.6,7,16); # Creates a pair of meshing wheels, with teeth module 1.6 (mm) one with 7 teeth, one with 16. 
$c->{wheel}->hole(0.16); 
$c->{wheel}->cutset(0.0625,4,-0.015); # cuttersize, passes, passdepth 

$c->{wheel}->trepan(5,0.2,0.175,0.35,0.05,1.0,0.05);
#		$spoken, # number of spokes
#		$wos,	 # total width of spokes
#		$bsf,    # boss radius in inches
#		$rsf,    # rim size factor as proportion of pitch radius. 
#		$roe,    # radius of window edge for trepan
#		$wobf,   # width at base factor, > 1 for narrower at spoke rim 
#       $rot,    # rotation factor for inside of spokes relative to outside 1= 1 revolution 0 to 0.2 are good. 

$c->{wheel}->bossindent(0.25,-0.01,1); # diameter of indent, depth of indent, how many passes, feedrate

$g->ginit(); 
$c->{wheel}->cut($g,0.0,0.0,0.0); 
$g->gend();