Main > Main Forum

New Product: SWYM: Star Wars Yoke Mount

<< < (11/11)

PL1:

--- Quote from: telengard on May 07, 2025, 05:42:11 pm ---Here are the measurements

--- End quote ---
Perfect.   :cheers:

(14mm - 20mm)  / 2 = -3mm

Add another -3mm wiggle room to allow for gravity dragging the housing down/back until the side of the housing screw holes rests against the screws.

The screw holes need to be offset -6mm on the Y-axis (toward the front) so Line 16 is now "HousingBoltYOffset = -6;".

Here's the updated code and a .zip with all of the .scad and .stl files.


--- Code: ---// Wedge for mounting metal Star Wars yoke housing by Jasonbar. v1.1

// 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 = -6; // 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
  //

--- End code ---


Scott

PL1:
Telengard tried the printed wedge and it ended up being way too tall on his cab.   :banghead:

If you have the same issue, here's a countersunk yoke mount model.
https://forum.arcadecontrols.com/index.php/topic,169763.0.html


Scott

telengard:
Huge shout out to PL1 (Scott), he did another rev of the mount and it is absolutely perfect!  The first one was totally my fault, I really needed to measure/mockup better beforehand.   :laugh2:

Navigation

[0] Message Index

[*] Previous page

Go to full version