#! /usr/bin/perl
use strict;
use warnings;
if( @ARGV < 2 ) {
print( STDERR "usage: $0 <length (10mil)> <width (10mil)>\n" );
exit( -1 );
}
my $length = int( abs( $ARGV[0] ) );
my $width = int( abs( $ARGV[1] ) );
my $pad_width_factor = 1.1;
my $pad_inner_ext = 20;
my $pad_outer_ext = 20;
my $silk_dist = 10;
my $pcb_clearance = 3000;
my $pcb_solder_add = 600;
my $pcb_silk_width = 700;
sub mil2pcb
{
my $mil = shift;
my $pcb = $mil / 0.01;
my $pcb_i = $pcb < 0 ? int( $pcb - 0.5 ) : int( $pcb + 0.5 );
return $pcb_i;
}
sub pad
{
my ($x1, $y1, $x2, $y2, $no) = @_;
my $dx = abs( $x2 - $x1 );
my $dy = abs( $y2 - $y1 );
my $width = $dx < $dy ? $dx : $dy;
my $width2 = $width / 2;
my $cx = ($x1 + $x2) / 2;
my $cy = ($y1 + $y2) / 2;
my $dx1 = $x1 - $cx;
my $dx2 = $x2 - $cx;
my $dy1 = $y1 - $cy;
my $dy2 = $y2 - $cy;
$x1 += $dx1 < 0 ? $width2 : -$width2;
$x2 += $dx2 < 0 ? $width2 : -$width2;
$y1 += $dy1 < 0 ? $width2 : -$width2;
$y2 += $dy2 < 0 ? $width2 : -$width2;
my $pcb_width = mil2pcb( $width );
printf( "\tPad[%d %d %d %d %d %d %d \"%d\" \"%d\" \"square\"]\n",
mil2pcb( $x1 ), mil2pcb( $y1 ),