This might help. It's the source-code for 3D-printed collar for IN-18 tubes and I have 14 tubes of different manufacturing dates that fit just fine.
//
// Copyright (c) 2016 Greg Ebert
//
// Generate pin-collar for IN-18 tubes
// By setting nrow & ncol, any number of copies can
// be created in a single print.
// Setting both to 1 gives a single object
//
// Dimensions are millimeters
//
outer_radius = 29.5/2; // Disk diameter
hole_radius = 5; // Interior center-hole for tube nib
pin_radius = 1.4; // For socket pins
pinring_radius = 17.40/2; // Location of socket pins
disk_thickness = 6.84; // Millimeters
chamfer = 1.5; // Top angled section
spacing = 0.3; // spacing when replicating
nrow = 5; // Number of rows (X direction)
ncol = 5; // Number of columns (Y direction)
disk_color = [0,1,0];
hole_color = [1,0,1];
chamfer_color = [1,0.6,0.5];
for(j=[1:1:ncol]) {
for(i=[1:1:nrow]) {
xoffset = i*(2*outer_radius + spacing);
yoffset = j*(2*outer_radius + spacing);
difference () {
translate([xoffset,yoffset,(-disk_thickness/2)]) color([chamfer_color]) cylinder(h=(chamfer), r2=outer_radius, r1=(outer_radiu
s - chamfer), center=true, $fn=90); // Top chamfer
translate([xoffset,yoffset,0]) color([hole_color]) cylinder(h=2*disk_thickness, r=hole_radius, center=true, $fn=20); // Cent
er hole
for(npin=[1:1:14]) {
x = xoffset + pinring_radius * cos(npin*360/15);
y = yoffset + pinring_radius * sin(npin * 360/15);
translate([x,y,0] )
color([hole_color]) cylinder(h=2*disk_thickness, r=pin_radius,$fn=40,center=true); // Pin holes
} // loop
} // difference
difference () {
translate([xoffset,yoffset,0]) color(disk_color) cylinder(h=(disk_thickness-chamfer), r=outer_radius, center=true, $fn=90); //
Main disk
translate([xoffset,yoffset,0]) color([hole_color]) cylinder(h=2*disk_thickness, r=hole_radius, center=true, $fn=20); // Center h
ole
for(npin=[1:1:14]) {
x = xoffset + pinring_radius * cos(npin*360/15);
y = yoffset + pinring_radius * sin(npin * 360/15);
translate([x,y,0] ) color([hole_color]) cylinder(h=disk_thickness, r=pin_radius,$fn=40,center=true); // Pin holes
} // loop
} // difference
} // Nrow
} // Ncol