Download (as "LargeCircles.txt") LargeCircles
#!/usr/pkg/bin/perl
use strict;
use GDS2;
require './arc.pm';
require './sq_sleeve.pm';
# global variable;
my $R3 = 1.7320508;
sub unit($$) {
my $diameter = shift;
my $gds2File = shift;
my $name = sprintf ("u%03.1f", $diameter);
my $R = $diameter / 2; # inner size
my $R1 = $diameter / 2 + 0.1/2; # inner sleeving center + 0.05
my $R2 = $diameter / 2 + 0.075 + 0.1/2; # inner polygon outer + 0.07
my $R3 = $diameter / 2 + 0.25 +0.025 - 0.1/2; # outer polygon outer + 0.13
my $R4 = $diameter / 2 + 0.25 - 0.1/2; # outer sleeving center + 0.20
my @LIST;
foreach my $angle ( 0, 90, 180, 270) {
# x y start end box diameter extra count
push(@LIST,
sq_sleeve::arcCP( 0, 0, $angle, $angle + 90, 5, 0.1, $R1 * 2, 1, $gds2File));
# print __LINE__ . ' ' . $LIST[$#LIST],"\n";
push(@LIST,
sq_sleeve::arcCP( 0, 0, $angle, $angle + 90, 5, 0.1, $R4 * 2, 1, $gds2File));
# print __LINE__ . ' ' . $LIST[$#LIST],"\n";
}
$gds2File -> printBgnstr(-name => $name);
foreach my $angle ( 0, 90, 180, 270) {
my @IN = arc::arc( 0, 0, $angle, $angle + 90, $R2, 144, 'not-used', 1, $gds2File);
my @OUT = arc::arc( 0, 0, $angle, $angle + 90, $R3, 144, 'not-used', -1, $gds2File);
$gds2File -> printBoundary(
-xy => [ @IN,
@OUT
],
-layer => 10,
);
}
foreach my $ring (@LIST){
$gds2File -> printSref ( -name => $ring, -xy=>[0,0]);
}
$gds2File -> printEndstr();
# sq_sleeve::arcCP(-0.5 * $P, -0.5 * $P * 1.732, 270, 360, 5, 0.1, 19, $gds2File);
print
return $name;
}
# -----------------------------------------------------
# M A I N
# -----------------------------------------------------
my $filename = $0;
$filename =~ s/\.txt$//;
$filename .= '.gds';
my($VERSION);
$VERSION = "2018-11-01 01:20" ; # written by emacs time-stamp
## $VERSION .= ' UTC';
my $gds2File = new GDS2(-fileName => '>'. $filename);
$gds2File -> printInitLib(-name => 'array');
my $diameter = 50;
# ---------------------------------------------------------------------
# prepare CP structure ( by 1 degree step, with layer 1 and 2)
# ----------------------------------------------------------------------
foreach my $i ( 0..17 ) {
sq_sleeve::SqSIPHA(100, $i* 5, $gds2File);
};
my @RING ;
my %DEBUG;
# repeat 10 times for every ring
#foreach my $i (0..9) {
foreach my $i (0..9) {
$diameter = $i * 1 + 50;
push(@RING, unit($diameter, $gds2File));
}
$gds2File -> printBgnstr (-name =>'top');
foreach my $unit (@RING) {
$gds2File -> printSref(-name => $unit, -xy => [0,0]);
}
$gds2File -> printEndstr ();
$gds2File -> printEndlib();
__END__
See perldoc GDS2 for help
perl DrieCondPerl
; please note I have copy in ~/.emacs-sub/time-stamp-setup.el
(require 'time-stamp)
(add-hook 'write-file-hooks 'time-stamp)
(setq time-stamp-active t)
;; (setq time-stamp-time-zone "UTC")
(setq time-stamp-time-zone nil)
(setq time-stamp-format "%04y-%02m-%02d %02H:%02M");
(setq time-stamp-start "$VERSION = \"") ;
(setq time-stamp-end "\"") ;
(setq time-stamp-line-limit 20) ; ; default is 8
|