Please visit http://OpenSCAD.DIY3DTech.com for more information on this and many other projects! As in this episode we will be looking at programing the Ultimate Widget as I was surfing the YouTube InterWeb and found Keith’s Test Garage (https://www.youtube.com/channel/UCiANfkB8tb8V3QnN9zvES6g ) and a video he created caught me eye and I got thinking, I can design this in OPEN-SCAD and also why does it need to be limited to only router bits! So lacking a name, the ultimate widget was born!
Looking for the best deals on 3D Printers or maybe just want to see what new, this link is for you: http://diy3dtech.com/Current_GearBest_3D_Printer_Deals
For more information as well as the complete source code, please visit http://openscad.diy3dtech.com/the-ultimate-widget/
I have put several STL of this design on Thingiverse here: https://www.thingiverse.com/thing:3564878
If your looking for looking 3D Printer, Laser Cutter and CNC Swag (T-Shirts, Hats, Mugs, etc), please support the channel by visiting our online shop at: http://swag.DIY3DTech.com
Also subscribe to our parent YouTube Channel DIY3DTech.com YouTube Channel for 3D Printing, Laser Manufacturing and CNC Machining: http://YouTube.DIY3DTech.com
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
/* Open SCAD Name.: ultimate_widget_v1.scad * Copyright (c)..: 2019 www.DIY3DTech.com * * Creation Date..: 04/11/2019 * Description....: bit hold design * * Rev 1: Develop Model * Rev 2: * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ /*------------------Customizer View-------------------*/ // preview[view:north, tilt:top] /*---------------------Parameters---------------------*/ //define bit/slot size bit_dia = 6.0; //bit dia in mm reduce_dia = 0.5; //reduce bit dia in mm //result = bit_dia-reduce_dia //define size of block block_x = 100.0; //x dim of block in mm block_y = 100.0; //y dim of block in mm block_z = 15.0; //z dim of block in mm //define inside block and lip block_lip_xy = 10.0; //lip of block in mm block_lip_Z = 5.0; //lip of block in mm //define block chamfer lip_curl = 3.0; //chamfer of curl in mm //manual adjust for center cuts adjust_x = 4.0; //adjust for rounding in mm adjust_y = 4.0; //adjust for rounding in mm //multiple cuts to provde more sepration multiply = 2.0; //multiply bit spacing in count /*-----------------------Execute----------------------*/ main_module(); /*-----------------------Modules----------------------*/ module main_module(){ //create module difference() { union() {//start union //create base translate ([0,0,0]) rotate ([0,0,0]) rounded (block_x+block_lip_xy,block_y+block_lip_xy,block_lip_Z,lip_curl,true); //create lip block //un-comment to create rounded top section //translate ([0,0,(block_z/2)+(block_lip_Z/2)-1]) rotate ([0,0,0]) rounded (block_x,block_y,block_z+1,lip_curl,true); //create square top block (better for smaller prints) translate ([0,0,(block_z/2)+(block_lip_Z/2)-1]) rotate ([0,0,0]) cube([block_x,block_y,block_z+1],true); } //end union //start subtraction of difference //cut grove in x direction cut_shift_y = (block_y/2)-(bit_dia-(reduce_dia+adjust_y)); for (i=[0:(bit_dia*2)*multiply:round(block_x)]) translate ([0,cut_shift_y-i,(block_z/2)+(block_lip_Z/2)+1]) rotate ([0,0,0]) cube([block_x+10,(bit_dia-reduce_dia),block_z],true); //cut grove in y direction cut_shift_x = (block_x/2)-(bit_dia-(reduce_dia+adjust_x)); for (i=[0:(bit_dia*2)*multiply:round(block_x)]) translate ([cut_shift_x-i,0,(block_z/2)+(block_lip_Z/2)+1]) rotate ([0,0,0]) cube([(bit_dia-reduce_dia),block_y+10,block_z],true); //start subtraction of difference } //end difference }//end module module rounded(x,y,z,c,center) { //create rounded block /* variables: * x = X Axis length * y = Y Axis Length * z = Z Axis Height * c = Chamfer amount this will add (in mm) to each axis */ //create overlapping cubes //cube one overlapps in the X axis with chamfer "c" being doubled cube ([x+(c*2),y,z],true); //cube two overlapps in the Y axis with chamfer "c" being doubled cube ([x,y+(c*2),z],true); //end overlapping cubes //create corner circles translate ([-(x/2),-(y/2),0]) { cylinder( z,c,c,$fn=60,true); } translate ([-(x/2),(y/2),0]) { cylinder( z,c,c,$fn=60,true); } translate ([(x/2),-(y/2),0]) { cylinder( z,c,c,$fn=60,true); } translate ([(x/2),(y/2),0]) { cylinder( z,c,c,$fn=60,true); } //end coner circle } //end module /*----------------------End Code----------------------*/ |
More Ideas!
OpenSCAD – Designing a Compression Cover!
OpenSCAD – Designing a Pressure Fit Endcap!
Open SCAD – Complex Flange Designer!