Main > Main Forum

New Product: SWYM: Star Wars Yoke Mount

<< < (10/11) > >>

PL1:
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:

--- Code: ---// 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
//

--- End code ---

Telengard Wedge and Drill Template:

--- Code: ---// 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
  //

--- End code ---


Scott

PL1:
Found a problem with one of the variable values.   :embarassed:

The screw holes in the metal housing are not centered on the Y-axis.

Assume that the green rectangle covers the 125 x 130mm HousingBaseX|Y top face of the wedge.

If the metal housing's 86 x 87mm screw holes were centered in the green rectangle (no Y-axis offset), the red and blue lines would both be (130mm - 87mm) / 2 ==> 21.5mm long.

The red line is longer than the blue so the metal housing will sit further down the wedge.
- Looks like the metal housing will run into the panel when the Y-axis is shifted +5.8mm or more off-center.  i.e. the red line is 27.3mm or longer.

How long is the red line, Telengard?

To center the green rectangle on the top/back face of the wedge, put 21.5mm minus the red line length into the variable HousingBoltYOffset. (line 16)
- Looks like the correct value for HousingBoltYOffset should be somewhere around -10.  This will move the screw holes around 10mm closer to the player and keep the metal housing above the control panel surface.


Scott

telengard:
Heya, I sent a response via PM with a pic.    :cheers:

PL1:

--- Quote from: telengard on May 07, 2025, 10:44:15 am ---Heya, I sent a response via PM with a pic.    :cheers:

--- End quote ---
I cropped and edited that pic to make the image in my previous post.

I figured that anyone wanting to use this wedge model would need to know how to take certain measurements to calculate the correct value for HousingBoltYOffset. (line 16)

The critical measurement is the red line from the center of the screw hole to the furthest back that the metal housing sides stick out.

Easiest way to measure that distance is to rest a flat edge/ruler across the sides then use calipers to measure from the center of the screw hole to the ruler.

Exactly how long is the red line for your housing?


Scott

telengard:
Sorry about that, I had posted a pic with the measurements, but dropbox was serving up the older pic.

Here are the measurements

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version