Main > Main Forum |
New Product: SWYM: Star Wars Yoke Mount |
<< < (8/11) > >> |
telengard:
Awesome, thanks so much for that! I'm so excited that I will be able to get this thing going, I've had my cab now for 25 years and have yet to play SW on it. :applaud: So, I filled in the variables. I made HousingBaseX|Y the same as BasePlateX|Y, mostly because I didn't understand the difference. Taking into account the angle of the mount I have (10 degrees up), and the angle of my control panel (20 degrees down), to get a 45 degree up for the yoke, I put in 55 degrees. I think that's right? The bottom has a lip in the Y direction on each side of maybe 1 or 2 mm wide and the same height, so I choise my HousingBaseX to fit between there with a little wiggle room to spare. Also, I get these warnings, not sure if they are important: WARNING: variable center not specified as parameter in file sw_yoke.scad, line 125 WARNING: variable center not specified as parameter in file sw_yoke.scad, line 128 WARNING: variable center not specified as parameter in file sw_yoke.scad, line 133 WARNING: variable center not specified as parameter in file sw_yoke.scad, line 138 WARNING: variable center not specified as parameter in file sw_yoke.scad, line 143 WARNING: variable center not specified as parameter in file sw_yoke.scad, line 148 Here are some pics, the wedge seems super steep, but taking into account my control panel angle, it is probably OK. |
PL1:
1. What values did you plug into the variables from HousingBaseX (line 9) thru BoltDepth (line 34)? - There are some variable adjustments that will improve the hollows, but I need to know where you're starting from to fine-tune them so they don't punch through the front of the wedge they do in your screencap. 2. Would you like a drill template for the bottom (blue) screw holes? - It's mostly just copy/pasting some code from the current model, making a few adjustments, and adding some text to indicate which end of the template goes toward the player. --- Quote from: telengard on April 10, 2025, 09:18:54 pm ---Awesome, thanks so much for that! I'm so excited that I will be able to get this thing going, I've had my cab now for 25 years and have yet to play SW on it. :applaud: --- End quote --- Glad to assist. :cheers: --- Quote from: telengard on April 10, 2025, 09:18:54 pm ---So, I filled in the variables. I made HousingBaseX|Y the same as BasePlateX|Y, mostly because I didn't understand the difference. --- End quote --- HousingBaseX|Y variables are for the top face of the wedge where it meets the base of the metal yoke housing that Jasonbar made. (the face with red screw holes) BasePlateX|Y variables are for the bottom face of the wedge where it meets the control panel aluminum plate. (the face with blue screw holes) --- Quote from: telengard on April 10, 2025, 09:18:54 pm ---Taking into account the angle of the mount I have (10 degrees up), and the angle of my control panel (20 degrees down), to get a 45 degree up for the yoke, I put in 55 degrees. I think that's right? --- End quote --- It's steeper than I expected, but your math sounds right. +55 (wedge angle) = +20 (from control panel to level) + +45 (desired angle) + -10 (from mount to level) You might want to check if that wedge angle adds too much height (~6" above the panel?) for good ergonomics. --- Quote from: telengard on April 10, 2025, 09:18:54 pm ---Also, I get these warnings, not sure if they are important: WARNING: variable center not specified as parameter in file sw_yoke.scad, line 125 WARNING: variable center not specified as parameter in file sw_yoke.scad, line 128 WARNING: variable center not specified as parameter in file sw_yoke.scad, line 133 WARNING: variable center not specified as parameter in file sw_yoke.scad, line 138 WARNING: variable center not specified as parameter in file sw_yoke.scad, line 143 WARNING: variable center not specified as parameter in file sw_yoke.scad, line 148 --- End quote --- Sorry about that. I'm running an older version of OpenSCAD that doesn't throw those errors, but they don't cause any problems with the model. To get rid of those messages, delete ", center=true" from the lines mentioned in the error. - Bad code: sphere (d = RoundoverDia, center=true); - Good code: sphere (d = RoundoverDia); The "center=true|false" option works for cylinders and cubes. - The default is "false", but the math in this model needs it to be "true", so don't delete it from the cylinders. https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids Cylinder center=false (Z-axis increases from starting position [0,0,0]) Cylinder center=true (Z-axis centered on starting position [0,0,0]) Scott EDIT: Fixed the code for spheres in the earlier post. |
PL1:
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 --- 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 // --- End code --- Scott |
telengard:
Awesome, thank you! This looks very good. The hole pattern on the bottom (that attaches to my cp) doesn't really matter as I'll be attaching everything to an aluminum plate (a module). One thing I noticed when measuring tonight is I have about 160mm or so of useable Y on the module (it could probably go to 180 if it had to). The 2 center holes on the bottom seem to be well within that on viewing the "bottom". I tried making the base smaller than 170mm, but the render got a little weird looking. It's OK if it takes up the entire Y of the module, I was just futzing around. I re-measured again just to be sure now that I understand what the parameter names map to, and did this in your updated script. These were my changes: 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) 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 BasePlateX = 125; // Base plate X-axis width (bottom face of the wedge) BasePlateY = 150; // Base plate Y-axis depth (bottom face of the wedge) <--- this one could be larger, but if it works at this it would be ideal The angle on the render seems to be > 55, but I'm not really good at gauging this kind stuff. |
PL1:
Thanks for those variable values. :cheers: --- Quote from: telengard on April 14, 2025, 08:54:03 pm ---BasePlateY = 150; // Base plate Y-axis depth (bottom face of the wedge) <--- this one could be larger, but if it works at this it would be ideal --- End quote --- It looks pretty good at 150. - If you go larger, you'll be adding print time and filament. - With the original estimates, it was a 2+ day print. With the latest code below, the wedge by itself is a 125 x 150 x 112.49mm print. - At 30% infill, it would take about 38 hours 19 minutes and 396 grams of filament on my old printer. I usually use 30% infill for mechanical prints like this. - At 20% infill, it would take about 31 hours 53 minutes and 304 grams of filament. This is the lowest I would recommend. - At 3% infill, it would take about 20 hours 50 minutes and 147 grams of filament. A print like this would only be good to verify fit and ergonomics. The 8 pound SW yoke and gameplay forces would likely crush it. :scared ---------------------------------------------------- I think we're down to the fine tuning stage with the current code, but it might be worth it to completely change how the part is made (i.e. make the solid outer faces and add a grid of internal walls) to increase the amount of hollow space, improve print speed, and reduce the amount of filament. If we don't do that complete changeup, we could do some more adjustments to FrontDrop (line 27) and the hollows code to reduce the print volume, but we're almost at the point of diminishing returns. WIP 3 Telengard wedge OpenSCAD code - Updated with the provided variables. - Increased the bottom screw pattern X + Y size to make the wedge slightly more torque resistant. - Changed RoundoverDia and updated the code so the wedge is 7mm shorter than before. - Decreased FrontDrop (line 27) so there's less total volume to the print. - Adjusted the position, size, and angle of the hollows. --- Code: ---// Wedge for mounting metal Star Wars yoke housing by Jasonbar. // Use 1/4" wood or 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 = 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 = 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 |
Navigation |
Message Index |
Next page |
Previous page |