I've just never designed anything from scratch, so hoping to find someone here who has
That bartop shell design is not that hard once you find examples/code samples to adapt.
Some people like Tinkercad and there are lots of good YouTube tutorials that can help you get started if you choose to go that route.
I like
OpenSCAD.
Check out
this blog post for a quick overview and example of how OpenSCAD works.
The Instructable
here is a must-read IMHO with info on Constructive Solid Geometry (CSG) -- making parts by adding/subtracting geometric shapes -- and OpenSCAD syntax that makes it easier to understand and apply the user manual.
There's a very useful cheat sheet
here with links to the user manual.
Here's an example with the basic code elements (cube, cylinder, difference, hull, etc.) that you can use to make your bartop shell.
"//" indicates a comment.
// Williams Drop Target Guide P/N 03-7479 or 3B-7479
// v 0.03 - Narrowed columns, adjusted ramp, adjusted position of wall near ramp, enlarged bottom screw hole 10 Apr 18
// v 0.02 - Changed default screw hole sizes 27 Mar 2018
// v 0.01 - First draft 27 Mar 2018
// This SCAD file recreates and remixes [url]https://www.thingiverse.com/thing:2792174[/url]
// - Corrections to that part are based on measurements of original parts
// - PCB columns changed to ovals for greater strength
// - Inspected by PBJ for accuracy and suitability
// This part is used in Williams System 3-6 tables.
// Planetary Pinball has online copies of Bally and Williams parts catalogs: http://www.planetarypinball.com/mm5/merchant.mvc?Screen=BOOK
// The Williams 1980 catalog contains related parts diagrams: http://www.planetarypinball.com/reference/partsmanuals/WMS_Parts_1980/index.html
// Drop target assemblies are on pages 113-118 -- they all use the 03-7479 guide.
// The D-8362 assembly diagram on page 116 shows PCB screws that are the same P/N as the horseshoe screws. (4104-1001-06)
// Drop target assemblies that use the 03-7479 guide:
// D-7931-#s - # = number of targets (between 1 and 5)
// D-8362 - 5 targets
// D-8442 - 3 targets
// D-9355 - 3 targets
/////////////////////////////
// Screw sizes:
// - #6-32 x 3/4" machine screw
// - #4 sheet metal screw
/////////////////////////////
/////////////////////////////
// Define variables
/////////////////////////////
MachineScrewHoleDiameter = 3.9; // Default = 3.9 for 3.45
PCBScrewHoleDiameter = 3.14; // Default = 3.14 for 2.77
PCBBottomScrewHoleDiameter = 3.4; // Default = 3.4
// The diameter values may need to be *very slightly* larger to account for the 180-sided polygon used to render circles -- see "undersized holes" at [url]https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids#cylinder[/url]
$fn=180; // Number of fragments (polygon sides) used to render a circle
/////////////////////////////
// Make the part
/////////////////////////////
// Make the Machine Screw Column near the ramp
difference() {
// Column hull
hull() {
// Hull cylinder 1
translate ([2.7, 0, 0])
cylinder (14.1, d = 5.4, center=false);
// Hull cylinder 2
translate ([6.3, 0, 0])
cylinder (14.1, d = 5.4, center=false);
}
// Remove screw hole
translate ([4.5, 0, -1])
cylinder (16.1, d = MachineScrewHoleDiameter, center=false);
}
difference() {
// Crosspiece
translate ([3.43, -10.2, 0])
cube ([2.14, 20.4, 4], center=false);
// Remove screw hole
translate ([4.5, 0, -1])
cylinder (16.1, d = MachineScrewHoleDiameter, center=false);
}
//
//////////
// Make the PCB Screw Column near the ramp
difference() { // Column
hull() { // Oval hull
// Cylinder
translate ([25.05, 0, 3])
cylinder (15.3, d = 5.1, center=false);
// Cylinder
translate ([28.05, 0, 3])
cylinder (15.3, d = 5.1, center=false);
}
// Remove screw hole
translate ([26.55, 0, -1])
cylinder (20.3, d = PCBScrewHoleDiameter, center=false);
// Enlarge bottom screw hole
translate ([26.55, 0, -1])
cylinder (8, d = PCBBottomScrewHoleDiameter, center=false);
}
difference() { // Circle base
// Circle body
translate ([26.55, 0, 0])
cylinder (2, d = 8.2, center=false);
// Remove screw hole
translate ([26.55, 0, -1])
cylinder (20.3, d = PCBBottomScrewHoleDiameter, center=false);
}
difference() { // Crosspiece
// Crosspiece body
translate ([25.4, -10.2, 0])
cube ([2.3, 20.4, 2], center=false);
// Remove screw hole
translate ([26.55, 0, -1])
cylinder (20.3, d = PCBBottomScrewHoleDiameter, center=false);
}
//
//////////
// Make the PCB Screw Column away from the ramp
difference() { // Column
hull() { // Oval hull
// Cylinder
translate ([51.65, 0, 3])
cylinder (14.3, d = 5.1, center=false);
// Cylinder
translate ([54.65, 0, 3])
cylinder (14.3, d = 5.1, center=false);
}
// Remove screw hole
translate ([53.15, 0, -1])
cylinder (20.3, d = PCBScrewHoleDiameter, center=false);
}
//
//////////
// Make the Machine Screw Column away from the ramp
difference() {
// Column hull
hull() {
// Hull cylinder 1
translate ([65.7, 0, 0])
cylinder (10.9, d = 5.4, center=false);
// Hull cylinder 2
translate ([69.3, 0, 0])
cylinder (10.9, d = 5.4, center=false);
}
// Remove screw hole
translate ([67.5, 0, -1])
cylinder (12.9, d = MachineScrewHoleDiameter, center=false);
}
difference() { // Crosspiece
// Crosspiece hull
hull() {
// Hull cylinder
translate ([67.5, 10.2, 4.5])
rotate ([90, 0, 0]) translate ([0, 0, 0]) cylinder (20.4, d = 2.9, center=false);
// Hull cube
translate ([66.05, -10.2, 0])
cube ([2.9, 20.4, 2], center=false);
}
// Remove screw hole
translate ([67.5, 0, -1])
cylinder (16.1, d = MachineScrewHoleDiameter, center=false);
}
//
//////////
// Make walls
// Near the ramp
translate ([6.7, -1.06, 0])
cube ([18, 2.12, 12.26], center=false);
// Middle
translate ([29, -1.06, 0])
cube ([22, 2.12, 12.4], center=false);
// Away from the ramp
translate ([50.5, -1.06, 0])
cube ([14, 2.12, 9.3], center=false);
//
//////////
// Make ramp flat top
difference() {
// Flat top
translate ([0, -10.2, 3])
cube ([6, 20.4, 3], center=false);
// Remove screw hole
translate ([4.5, 0, -1])
cylinder (16.1, d = MachineScrewHoleDiameter, center=false);
}
// Make ramp slope
difference() {
// Slope hull
hull() {
// Hull cube 1
translate ([3, -10.2, 3])
cube ([3, 20.4, 3], center=false);
// Hull cube 2
translate ([14.32, -10.2, 1.4])
cube ([3, 20.4, 3], center=false);
}
// Remove screw hole 1
translate ([4.5, 0, -1])
cylinder (16.1, d = MachineScrewHoleDiameter, center=false);
}
// Make ramp flat bottom
difference() {
// Flat bottom
translate ([14.32, -10.2, 1.4])
cube ([57.7, 20.4, 3], center=false);
// Remove screw hole 1
translate ([26.55, 0, -1])
cylinder (20.3, d = PCBBottomScrewHoleDiameter, center=false);
// Remove screw hole 2
translate ([67.5, 0, -1])
cylinder (16.1, d = MachineScrewHoleDiameter, center=false);
}
//
Resulting part:
For your bartop design, I would recommend starting with the left panel -- positioned 20mm left of center in this simplified example. (translate = move).
//left side panel
translate([-20,0,4]) cube([5,15,8], center=true);
Once you get the left side panel looking the way you want it to look, copy the code and change the position -- 20mm right of center here -- to perfectly mirror the other panel.
//left side panel
translate([-20,0,4]) cube([5,15,8], center=true);
//right side panel
translate([20,0,4]) cube([5,15,8], center=true);
LMK if you have any questions.
Scott