Ok, here we go. This is a model in OpenSCAD - if you haven't used it, it's a free/open-source CAD program based on textual descriptions - you could say its "code" or a "script" of instructions on how the model should be formed from solids. OpenSCAD is a challenge for organic shapes ("Make me a model of a penguin!"), but it's perfect for dimensioned models and engineered pieces like this.
www.openscad.org/index.ht...
To generate a STL, just copy/paste the following text into the OpenSCAD editor pane, then hit render (Design->Render, or F6), and then select File->Export->STL when it finishes to save the STL for your 3D printer's slicing software to use.
Apologies in advance if the forum software kills the text formatting...
// ===================================================================================
// Replacement Maytag A806 Washing Machine Tub Light Window
// (Maytag Part Number 211723)
// See this formum thread for details:
// "Maytag tub light window A806"
//
https://www.automaticwasher.org/cgi-bin/TD/TD-VIEWTHREAD.cgi?81875_15~1
// ===================================================================================
// Model version: 1
// Change log:
// v1: Dave ("LowEfficiency"): Initial model based on measured dimensions by David ("d-jones").
// Constants:
inchesToMillimeters = 25.4; //Conversion factor
// Measured dimensions (converted to metric for model):
r1 = (1.05/2-0.037) * inchesToMillimeters; //Inner cutout
r2 = (1.05/2) * inchesToMillimeters; //Outer edge of inset surface that protrudes through metal tub cover
r3 = (1.215/2) * inchesToMillimeters; //Top surface flange of the window
windowThickness = 0.050 * inchesToMillimeters;
protrusionDepth = (0.227-0.050) * inchesToMillimeters;
// Calculated dimensions:
// * Shape is assumed to be a pill-shape with perfect half-circle ends
// * Spacing of rounded end center points is equal to the total length minus the end radius*2
// * Using outer edge of inset portion for calculation, as that is the surface profile that matters for tub fitment
circleCenterSpacing = (2.045 * inchesToMillimeters) - r2*2;
// Unusued dimensions:
// * Measured total length of window at flange is 2.218".
// * Calculated total length of window at flange, assuming perfectly circular ends, would be 2.045+((1.215-1.05)/2) = 2.1275"
// * This should be plenty close enough for a part that isn't fit-critical, and simplifies the model to use an equal flange width.
// * (Can be easily changed in the future if desired.)
// Modifiable parameters:
roundness = 120; //Number of facets to use for circle generation. Larger value = smoother. (Should always be a multiple of 4).
// Note: Some consumer 3D printer controllers/firmwares will stutter if given too many tiny segments. If this happens, reduce the number of facets.
// Part Seletion:
generateWindowFactoryDimensions = true;
//generateWindowClipIn = false; //Provision for a more optimized part that doesn't need heat-bending or sealant to install
if (generateWindowFactoryDimensions == true)
{
window_FactoryDimensions();
}
module window_FactoryDimensions()
{
//Window surface and flange
hull()
{
cylinder(windowThickness, r3, r3, false, $fn=roundness);
translate([circleCenterSpacing, 0, 0])
cylinder(windowThickness, r3, r3, false, $fn=roundness);
}
//Window mounting protrusion
difference()
{
//Outer dimensions, overlapping window surface by 0.1 to ensure a solid model
translate([0,0,windowThickness-0.1])
hull()
{
cylinder(0.1+protrusionDepth, r2, r2, false, $fn=roundness);
translate([circleCenterSpacing, 0, 0])
cylinder(0.1+protrusionDepth, r2, r2, false, $fn=roundness);
}
//Inner cutout, overlapping on both ends to ensure a complete cut through without co-planar surfaces
// (This does not cut into the window surface, only the protrusion portion)
translate([0,0,windowThickness-0.1])
hull()
{
cylinder(0.1+protrusionDepth+1, r1, r1, false, $fn=roundness);
translate([circleCenterSpacing, 0, 0])
cylinder(0.1+protrusionDepth+1, r1, r1, false, $fn=roundness);
}
}
}
