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.
Martin
Ignoramus7829 wrote:
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.
Martin
Ignoramus7829 wrote:
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.