Updated the code to add a tilt angle variable for the center hollow (white) and a drill template with labels.
WIP 2 Telengard wedge OpenSCAD code
// Wedge for mounting metal Star Wars yoke housing by Jasonbar.
// Use 1/4" wood or sheet metal screws.
/////////////////////////////
// Define the variables
/////////////////////////////
HousingBaseX = 120; // Metal housing mount base X-axis width (top face of the wedge)
HousingBaseY = 160; // Metal housing mount base Y-axis depth (top face of the wedge)
///////////// Rendered in red /////////////
HousingBoltX = 80; // Metal housing mount bolt hole center-to-center X-axis distance
HousingBoltY = 120; // 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 = 130; // Base plate X-axis width (bottom face of the wedge)
BasePlateY = 170; // Base plate Y-axis depth (bottom face of the wedge)
///////////// Rendered in blue /////////////
BasePlateBoltX = 70; // Base plate diamond mount bolt pattern X-axis center-to-center distance
BasePlateBoltY = 100; // 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 = 80; // Right angle drop height at front of wedge
BackHeight = 10; // Height at back of wedge
WedgeAngle = 55; // Wedge angle
RoundoverDia = 10; // Edge roundover diameter
BoltDia = 6.5; // Bolt hole diameter
BoltDepth = 12; // 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 = 25; // 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 = 100; // 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 = 30; // Back hollow diameter
BackHollowScaleX = 1; // X-axis scale for BackHollowDia
BackHollowScaleY = 1.6; // Y-axis scale for BackHollowDia
BackHollowHeight = 32; // Back hollow height
BackHollowOffsetX = 40; // Back hollow X-axis offset from center hollow
BackHollowOffsetY = 35; // 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/2])
cylinder (RoundoverDia, d = RoundoverDia, center=true); // Front left lower corner
translate([BasePlateX - RoundoverDia/2, RoundoverDia/2, RoundoverDia/2])
cylinder (RoundoverDia, d = RoundoverDia, center=true); // Front right lower corner
translate([BasePlateX - RoundoverDia/2, BasePlateY - RoundoverDia/2, RoundoverDia/2])
cylinder (RoundoverDia, d = RoundoverDia, center=true); // Back right lower corner
translate([RoundoverDia/2, BasePlateY - RoundoverDia/2, RoundoverDia/2])
cylinder (RoundoverDia, 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