Perl script to compute bolt hole pattern

#!/usr/bin/perl

# If you have a mill with a DRO, and/or a rotary table then you may find # this script handy when dividing circle. To print the angles (in # degrees, minutes and seconds) you just specify the number of # divisions. # # If you want to calculate bolt hole pattern given a certain radius # (assuming that coordinate (0,0) is the center of the circle), you give # this script an optional argument --radius. # # Copyright(C) 2009, Igor Chudov. # Distributed under the terms of the GNU PUBLIC LICENSE V2 #

use strict; use warnings;

use Getopt::Long;

my $radius = undef;

GetOptions( "r|radius=f", \$radius, );

my $number = shift @ARGV || die "USAGE: $0 ";

$number =~ /^\d+$/ || die "USAGE: $0 ";;

foreach( my $i = 0; $i < $number; $i++ ) { my $angle = 360/$number*$i; my $degrees = int( $angle ); my $minutes = int( ($angle - $degrees) * 60 ); my $seconds = int( int( ($angle - $degrees - $minutes/60)*60*60 ) );

my $xy = ""; if( $radius ) { $xy = sprintf( ", x = %.4f, y = %.4f", $radius * cos( $angle/360 ), $radius * sin( $angle/360 ) ); } print sprintf( "%d: %03d %02d' %02d\" (%f) %s\n", $i+1, $degrees, $minutes, $seconds, $angle, $xy ); }

Reply to
Ignoramus7829
Loading thread data ...

scratch the old version, here's the new one

#!/usr/bin/perl

# If you have a mill with a DRO, and/or a rotary table then you may find # this script handy when dividing circles. To print the angles (in # degrees, minutes and seconds) you just specify the number of # divisions. # # If you want to calculate bolt hole pattern given a certain radius # (assuming that coordinate (0,0) is the center of the circle), you give # this script an optional argument --radius. # # Copyright(C) 2009, Igor Chudov. # Distributed under the terms of the GNU PUBLIC LICENSE V2 #

use strict; use warnings;

use Getopt::Long;

my $radius = undef; my $pi = 3.141592653589793;

GetOptions( "r|radius=f", \$radius, );

my $number = shift @ARGV || die "USAGE: $0 ";

$number =~ /^\d+$/ || die "USAGE: $0 ";;

foreach( my $i = 0; $i < $number; $i++ ) { my $angle = 360/$number*$i; my $degrees = int( $angle ); my $minutes = int( ($angle - $degrees) * 60 ); my $seconds = int( int( ($angle - $degrees - $minutes/60)*60*60 ) );

my $xy = ""; if( $radius ) { $xy = sprintf( ", x = %.4f, y = %.4f", $radius * cos( 2*$pi*$angle/360 ), $radius * sin( 2*$pi*$angle/360 ) ); } print sprintf( "%d: %03d %02d' %02d\" (%f) %s\n", $i+1, $degrees, $minutes, $seconds, $angle, $xy ); }

Reply to
Ignoramus7829

$number = quality variable name.

Reply to
Cydrome Leader

Update version

#!/usr/bin/perl

# If you have a mill with a DRO, and/or a rotary table then you may find # this script handy when dividing circles. To print the angles (in # degrees, minutes and seconds) you just specify the number of # divisions. # # If you want to calculate bolt hole pattern given a certain radius # (assuming that coordinate (0,0) is the center of the circle), you give # this script an optional argument --radius. # # Copyright(C) 2009, Igor Chudov. # Distributed under the terms of the GNU PUBLIC LICENSE V2 #

use strict; use warnings;

use Getopt::Long;

my $radius = undef; my $pi = 3.141592653589793;

GetOptions( "r|radius=f", \$radius, );

my $divisions = shift @ARGV || die "USAGE: $0 ";

$divisions =~ /^\d+$/ || die "USAGE: $0 ";;

foreach( my $i = 0; $i < $divisions; $i++ ) { my $angle = 360/$divisions*$i; my $degrees = int( $angle ); my $minutes = int( ($angle - $degrees) * 60 ); my $seconds = int( int( ($angle - $degrees - $minutes/60)*60*60 ) );

my $xy = ""; if( $radius ) { $xy = sprintf( ", x = %.4f, y = %.4f", $radius * cos( 2*$pi*$angle/360 ), $radius * sin( 2*$pi*$angle/360 ) ); } print sprintf( "%d: %03d %02d' %02d\" (%f) %s\n", $i+1, $degrees, $minutes, $seconds, $angle, $xy ); }

Reply to
Ignoramus7829

Iggy, I bet many (like myself) wouldn't know how to run this script or input data.

I have no real need as I know enough trig (Some Old Horse Caught Another Horse Taking Oats Away) to quickly sketch it out and run an excel speadsheet for the calcs.

Karl

Reply to
Karl Townsend

Don't most DROs have bolt circle calculator functions built in anyway?

Reply to
Pete C.

That's pretty much what the script does, except that you do not need to run a spreadsheet. It will work if you have Cygwin on Windows or Activeperl installed.

i
Reply to
Ignoramus7829

New ones yes. My ancient Sony DRO's only know how to resolve to the nearest

0.0001" inch.

Overkill on a mill.

Wes

Reply to
Wes

I have the first edition camel book - how close is this perl...

I have a perl to install but like ghostscript and postscript I don't write in them, but have the manual :-)

Activeperl - wow - who wrote that!

I remember ftp-ing my copy from JPL. A long time ago. Sun 3 was a hot machine.

Mart> >> Iggy, I bet many (like myself) wouldn't know how to run this script or input >> data.

Reply to
Martin H. Eastburn

Activeperl is the easiest way to get perl on windows.

i

Reply to
Ignoramus7829

For those running Windows and don't know what to do with a Perl script check out Marv Klotz's Utilities:

formatting link
He has two versions (maybe more) for doing a similar calc for bolt circles:

"BOLTCIRC.ZIP (~31 Kbytes) 10/04/05 It's often easier and more accurate to lay out holes on a boltcircle with x-y coordinates than to scribe and step off the circle, especially if the number of holes is an unusual number. This program does the work and generates a table which you can print and carry to the drill press for reference. See also CHORD."

"CHORD.ZIP (~19 Kbytes) 02/24/00 For those who insist on marking out subdivisions of a circle the old-fashioned way and don't want to use BOLTCIRC, this tool will compute the chord length needed to divide a circle of input diameter into any number of parts. See also BOLTCIRC."

Reply to
Leon Fisk

And what is wrong with Cygwin?

Wes

Reply to
Wes

In the old days it was really a neat trip to install perl on a unix box. The install was from all sources. It built it on the fly and while building - it tested and determined - oh 16 bit machine then oh - bits are reversed Lsb on the left.. and so forth. Once the library was built, it ran some test cases. Some of those were interesting to look at and figure how they worked.

We used it as a unix script writer and general good fun. That is only 25 years ago more or less.

Mart> f>> I have the first edition camel book - how close is this perl... >>

Reply to
Martin H. Eastburn

Nothing, I used Cygwin for a while when I was stuck with Windows at work. Now I use Linux as my desktop OS and can use the real thing without the pains of Windows (carriage returns, DOS window problems etc). I have nothing against Cygwin, these guys did a fabulous job.

i
Reply to
Ignoramus11962

So, did you have a T shirt that said, "Grep for it"

DOS had nothing like it at the time.

Karl

Reply to
Karl Townsend

No - Cgrep

#!/usr/bin/perl $context = 3; if ($argv[0] =~ /^-(d+)$/) { $context = $1; shift; } $pat = shift; $pat =~ S#/#\\/#g; $_ =; push($ary,$_); for (1 .. $context) { unshift(@ary,''}; } eval We used it as a unix script writer and general good fun.

Reply to
Martin H. Eastburn

PolyTech Forum website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.