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 |
Message Index |
Next page |
Previous page |