Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

48 Zeilen
1.5KB

  1. $fn = $preview ? 16 : 72;
  2. module button_foot(height = 4, diameter = 18, hole_width = 5) {
  3. button_offset = 1;
  4. foot_length = diameter/2+16;
  5. outside = 2;
  6. foot_height = height+button_offset;
  7. foot_width = 15;
  8. hole_diameter = 3;
  9. hole_clearance = hole_width;
  10. hole_spacing = hole_clearance - hole_diameter;
  11. rim_h = 1;
  12. //bottom
  13. difference(){
  14. union(){
  15. cylinder(d=diameter+2*outside,h=foot_height);
  16. translate([-foot_width/2,0,0])
  17. cube([foot_width,foot_length,foot_height]);
  18. }
  19. //slot
  20. translate([-hole_clearance/2,-diameter,-1])
  21. cube([hole_clearance,diameter,foot_height+2]);
  22. //button insert
  23. translate([0,0,button_offset])
  24. cylinder(d=diameter,h=foot_height);
  25. //rim
  26. translate([-diameter/2-outside-2,-diameter,button_offset+rim_h])
  27. cube([diameter+2*outside+4,diameter,foot_height+2]);
  28. //wire slots
  29. hull(){
  30. translate([hole_spacing/2,0,-1])
  31. cylinder(d=hole_diameter*1.1,button_offset+2);
  32. translate([-hole_spacing/2,0,-1])
  33. cylinder(d=hole_diameter*1.1,button_offset+2);
  34. translate([0,hole_spacing/2,-1])
  35. cylinder(d=hole_diameter*1.1,button_offset+2);
  36. }
  37. // size indication
  38. translate([0,foot_length-1,foot_height]){
  39. linear_extrude(height=0.4,center = true) text(text=str(floor(diameter)),size=8,halign="center",valign="top");
  40. translate([0,-10,0])
  41. linear_extrude(height=0.4,center = true) text(text=str("mm"),size=5,halign="center",valign="top");
  42. }
  43. }
  44. }