Did a small test print to confirm the fit for sheet metal screws.
Here are the latest updates:
- Changed the suggested mounting hardware to commonly available #12 x 3/4" sheet metal screws.
- Made a screw test print with straight and angled screw holes for anyone who wants to check their printer or use different hardware.
- Attached .zip file has the two .scad files and four .stl files.
Wedge Screw Test:
// Wedge Screw Test print. v1.0
// Use #12 x 3/4" sheet metal screws.
// If you change variables WedgeAngle, BoltDia or BoltDepth, transfer the new values to Telengard Wedge.scad lines 29, 33, and 34.
/////////////////////////////
// Define the variables
/////////////////////////////
WedgeAngle = 55; // Wedge angle
BoltDia = 5.2; // Bolt hole diameter -- default = 5.2
BoltDepth = 19; // Bolt hole depth -- default = 19
CubeX = 14;
CubeY = 14;
CubeZ = 20;
AngledYOffset = 8.6;
AngledZOffset = 2;
SideThick = 1.6;
SideY = 29.0;
SideZ = 7.8;
// Number of fragments (polygon sides) used to render a full circle.
$fn = 180; // Default = 180 Typical range = 6 - 360
// 6 will render a circular hole as a hexagon, 8 will render a circular hole as an octagon.
// Lower the number for faster rendering, raise the number for smoother rendering.
/////////////////////////////
// Make the part
/////////////////////////////
difference(){ // Upright cube minus screw hole
translate([0, 0, CubeZ/2])
cube([CubeX, CubeY, CubeZ], center=true); // Upright cube
translate([0, 0, CubeZ - BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Screw hole
} // End upright cube minus screw hole
//
difference(){ // Angled cube and sides minus screw hole and bottom flat
union(){ // Angled cube and sides
translate([0, AngledYOffset, AngledZOffset])
rotate ([-WedgeAngle, 0,0])
translate([0, 0, CubeZ/2])
cube([CubeX, CubeY, CubeZ], center=true); // Angled cube
translate([(-CubeX/2) + SideThick/2, SideY/2, SideZ/2])
cube([SideThick, SideY, SideZ], center=true); // Left side
translate([(CubeX/2) - SideThick/2, SideY/2, SideZ/2])
cube([SideThick, SideY, SideZ], center=true); // Right side
} // End angled cube and sides
//
translate([0, AngledYOffset, AngledZOffset])
rotate ([-WedgeAngle, 0,0])
translate([0, 0, CubeZ - BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Screw hole
translate([0, SideY/2, - CubeZ/2])
cube([CubeX + 2, SideY + 2, CubeZ], center=true); // Bottom flat
} // End angled cube and sides minus screw hole and bottom flat
//
Telengard Wedge and Drill Template:
// Wedge for mounting metal Star Wars yoke housing by Jasonbar. v1.0
// Use #12 x 3/4" sheet metal screws.
/////////////////////////////
// Define the variables
/////////////////////////////
HousingBaseX = 125; // Metal housing mount base X-axis width (top face of the wedge)
HousingBaseY = 130; // Metal housing mount base Y-axis depth (top face of the wedge)
///////////// Rendered in red /////////////
HousingBoltX = 86; // Metal housing mount bolt hole center-to-center X-axis distance
HousingBoltY = 87; // Metal housing mount bolt hole center-to-center Y-axis distance
HousingBoltXOffset = 0; // Metal housing mount bolt pattern X-axis offset distance from center
HousingBoltYOffset = 0; // Metal housing mount bolt pattern Y-axis offset distance from center
BasePlateX = 125; // Base plate X-axis width (bottom face of the wedge)
BasePlateY = 150; // Base plate Y-axis depth (bottom face of the wedge)
///////////// Rendered in blue /////////////
BasePlateBoltX = 100; // Base plate diamond mount bolt pattern X-axis center-to-center distance
BasePlateBoltY = 120; // Base plate diamond mount bolt pattern Y-axis center-to-center distance from center
BasePlateBoltXOffset = 0; // Base plate diamond mount bolt pattern X-axis offset distance from center
BasePlateBoltYOffset = 0; // Base plate diamond mount bolt pattern Y-axis offset distance
FrontDrop = 70; // Right angle drop height at front of wedge
BackHeight = 3; // Height at back of wedge
WedgeAngle = 55; // Wedge angle
RoundoverDia = 6; // Edge roundover diameter
BoltDia = 5.2; // Bolt hole diameter
BoltDepth = 19; // Bolt hole depth
///////////// Rendered in white /////////////
HollowDia = 50; // Center hollow diameter
HollowScaleX = 1; // X-axis scale for HollowDia
HollowScaleY = 1.5; // Y-axis scale for HollowDia
HollowHeight = 200; // Hollow height
HollowAngle = 30; // Hollow angle
///////////// Rendered in purple /////////////
FrontHollowDia = 35; // Front hollow diameter
FrontHollowScaleX = 1; // X-axis scale for FrontHollowDia
FrontHollowScaleY = 1.6; // Y-axis scale for FrontHollowDia
FrontHollowHeight = 68; // Front hollow height
FrontHollowOffsetX = 40; // Front hollow X-axis offset from center hollow
FrontHollowOffsetY = -34; // Front hollow Y-axis offset from center hollow
///////////// Rendered in limegreen /////////////
BackHollowDia = 32; // Back hollow diameter
BackHollowScaleX = 1; // X-axis scale for BackHollowDia
BackHollowScaleY = 1.4; // Y-axis scale for BackHollowDia
BackHollowHeight = 35; // Back hollow height
BackHollowOffsetX = 42; // Back hollow X-axis offset from center hollow
BackHollowOffsetY = 28; // Back hollow Y-axis offset from center hollow
DrillTempThick = 3.1; // Drill template thickness
// Number of fragments (polygon sides) used to render a full circle.
$fn = 180; // Default = 180 Typical range = 6 - 360
// 6 will render a circular hole as a hexagon, 8 will render a circular hole as an octagon.
// Lower the number for faster rendering, raise the number for smoother rendering.
/////////////////////////////
// Define modules
/////////////////////////////
module SquareHoles(){
translate([-HousingBoltX/2, -HousingBoltY/2, -BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Front left
translate([HousingBoltX/2, -HousingBoltY/2, -BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Front rightt
translate([HousingBoltX/2, HousingBoltY/2, -BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Back right
translate([-HousingBoltX/2, HousingBoltY/2, -BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Back left
} // End SquareHoles module
//
module DiamondHoles(){
translate([0, -BasePlateBoltY/2, BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Front
translate([0, BasePlateBoltY/2, BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Back
translate([-BasePlateBoltX/2, 0, BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Left
translate([BasePlateBoltX/2, 0, BoltDepth/2])
cylinder (BoltDepth + 0.1, d = BoltDia, center=true); // Right
} // End DiamondHoles module
//
module Label(letter, size=12) {
rotate ([0, 0, 0]) {
color("black")
linear_extrude(height=DrillTempThick/2 + 0.01, convexity=4)
text(letter,
size=size*22/30,
font="Bitstream Vera Sans",
halign="center",
valign="center");
}
} // End Label module
//
/////////////////////////////
// Make the part
/////////////////////////////
difference(){ // Wedge body minus holes and hollows
hull(){ // Wedge body
translate([RoundoverDia/2,RoundoverDia/2, RoundoverDia/8])
cylinder (RoundoverDia/4, d = RoundoverDia, center=true); // Front left lower corner
translate([BasePlateX - RoundoverDia/2, RoundoverDia/2, RoundoverDia/8])
cylinder (RoundoverDia/4, d = RoundoverDia, center=true); // Front right lower corner
translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, RoundoverDia/8])
cylinder (RoundoverDia/4, d = RoundoverDia, center=true); // Back right lower corner
translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, RoundoverDia/8])
cylinder (RoundoverDia/4, d = RoundoverDia, center=true); // Back left lower corner
translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
sphere (d = RoundoverDia); // Back right upper corner
translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
sphere (d = RoundoverDia); // Back left upper corner
translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
rotate([-WedgeAngle, 0, 0])
translate([0, -HousingBaseY, 0])
sphere (d = RoundoverDia); // Top right upper corner
translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
rotate([-WedgeAngle, 0, 0])
translate([0, -HousingBaseY, 0])
sphere (d = RoundoverDia); // Top left upper corner
translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
rotate([-WedgeAngle, 0, 0])
translate([0, -HousingBaseY, -FrontDrop])
sphere (d = RoundoverDia); // Front right drop corner
translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, BackHeight])
rotate([-WedgeAngle, 0, 0])
translate([0, -HousingBaseY, -FrontDrop])
sphere (d = RoundoverDia); // Front left drop corner
} // End wedge body
//
color("red")
translate([BasePlateX/2, BasePlateY - RoundoverDia/2, BackHeight])
rotate([-WedgeAngle, 0, 0])
translate([HousingBoltXOffset, HousingBoltYOffset - HousingBaseY/2, RoundoverDia/2])
SquareHoles(); // Call SquareHoles module
color("blue")
translate([BasePlateX/2 + BasePlateBoltXOffset, BasePlateY/2 + BasePlateBoltYOffset, 0])
DiamondHoles(); // Call the DiamondHoles module
color("white")
translate([BasePlateX/2 + BasePlateBoltXOffset, BasePlateY/2 + BasePlateBoltYOffset, 0])
rotate([-HollowAngle, 0, 0])
translate([0, 0, HollowHeight/4])
scale([HollowScaleX, HollowScaleY, 1])
cylinder (HollowHeight + 0.01, d = HollowDia, center=true); // Center hollow
color("purple")
translate([BasePlateX/2 + BasePlateBoltXOffset - FrontHollowOffsetX, BasePlateY/2 + BasePlateBoltYOffset + FrontHollowOffsetY, FrontHollowHeight/2])
scale([FrontHollowScaleX, FrontHollowScaleY, 1])
cylinder (FrontHollowHeight + 0.01, d = FrontHollowDia, center=true); // Front left hollow
color("purple")
translate([BasePlateX/2 + BasePlateBoltXOffset + FrontHollowOffsetX, BasePlateY/2 + BasePlateBoltYOffset + FrontHollowOffsetY, FrontHollowHeight/2])
scale([FrontHollowScaleX, FrontHollowScaleY, 1])
cylinder (FrontHollowHeight + 0.01, d = FrontHollowDia, center=true); // Front right hollow
color("limegreen")
translate([BasePlateX/2 + BasePlateBoltXOffset - BackHollowOffsetX, BasePlateY/2 + BasePlateBoltYOffset + BackHollowOffsetY, BackHollowHeight/2])
scale([BackHollowScaleX, BackHollowScaleY, 1])
cylinder (BackHollowHeight + 0.01, d = BackHollowDia, center=true); // Back left hollow
color("limegreen")
translate([BasePlateX/2 + BasePlateBoltXOffset + BackHollowOffsetX, BasePlateY/2 + BasePlateBoltYOffset + BackHollowOffsetY, BackHollowHeight/2])
scale([BackHollowScaleX, BackHollowScaleY, 1])
cylinder (BackHollowHeight + 0.01, d = BackHollowDia, center=true); // Back right hollow
} // End wedge body minus holes and hollows
//
translate([-BasePlateX-20, 0, 0]) { // Drill template
difference(){ // Template base minus drill holes and labels
hull(){ // Template base
translate([RoundoverDia/2,RoundoverDia/2, DrillTempThick/2])
cylinder (DrillTempThick, d = RoundoverDia, center=true); // Front left lower corner
translate([BasePlateX - RoundoverDia/2, RoundoverDia/2, DrillTempThick/2])
cylinder (DrillTempThick, d = RoundoverDia, center=true); // Front right lower corner
translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, DrillTempThick/2])
cylinder (DrillTempThick, d = RoundoverDia, center=true); // Back right lower corner
translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, DrillTempThick/2])
cylinder (DrillTempThick, d = RoundoverDia, center=true); // Back left lower corner
} // End template base
//
color("blue")
translate([BasePlateX/2 + BasePlateBoltXOffset, BasePlateY/2 + BasePlateBoltYOffset, 0])
DiamondHoles(); // Call the DiamondHoles module
translate([BasePlateX/2, BasePlateY/2 + 20, DrillTempThick/2])
Label("SW Yoke Wedge"); // Call the label module for SW Yoke Wedge
translate([BasePlateX/2, RoundoverDia, DrillTempThick/2])
Label("Player"); // Call the label module for Player
translate([BasePlateX/2, BasePlateY - RoundoverDia, DrillTempThick/2])
Label("Monitor"); // Call the label module for Monitor
} // End template base minus drill holes and labels
//
} // End drill template
//
Scott