Add pen holder CAD source
This commit is contained in:
parent
9702659b3b
commit
d430481834
2 changed files with 759 additions and 0 deletions
127
cad/pen_holder.scad
Normal file
127
cad/pen_holder.scad
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
use <threads.scad>
|
||||
|
||||
// Body parameters
|
||||
length_above = 25;
|
||||
top_diameter = 11.6; // Original: 11.6 mm
|
||||
|
||||
pinch_length = 8;
|
||||
pinch_gap = 1;
|
||||
pinch_diameter_difference = 0.5;
|
||||
pinch_minimum_diameter = 7;
|
||||
|
||||
screw_outer_diameter = 12;
|
||||
screw_inner_diameter = 8.5;
|
||||
screw_start_height = 9;
|
||||
screw_pitch = ThreadPitch(screw_outer_diameter);
|
||||
|
||||
// Tolerances for threads
|
||||
thread_gap = 0.3;
|
||||
|
||||
// Pen hole
|
||||
pen_hole_diameter = 6.1;
|
||||
|
||||
nut_bottom_diameter = 15;
|
||||
nut_top_diameter = 10;
|
||||
nut_knurl_height = 10; // > screw_thread_length
|
||||
nut_knurl_size = 0.5;
|
||||
nut_knurl_count = 36;
|
||||
nut_thread_extend = 1;
|
||||
|
||||
hook_width_shrink = 0.3; // Shrink original size
|
||||
hook_squeeze = 0.25;
|
||||
|
||||
$fn = 48;
|
||||
$eps = 0.1;
|
||||
|
||||
screw_thread_length = length_above - pinch_length - screw_start_height;
|
||||
|
||||
module holder() {
|
||||
difference() {
|
||||
union() {
|
||||
// Base shape
|
||||
rotate_extrude()
|
||||
polygon([
|
||||
[0, -4.8],
|
||||
[9.25 / 2, -4.8],
|
||||
[9.55 / 2, -4.8],
|
||||
[9.55 / 2, -hook_squeeze],
|
||||
[top_diameter / 2, (top_diameter - 9.55) / 2 - hook_squeeze], // 45° draft
|
||||
[top_diameter / 2, screw_start_height - nut_thread_extend],
|
||||
[screw_inner_diameter / 2, screw_start_height - nut_thread_extend],
|
||||
[screw_inner_diameter / 2, length_above - pinch_length],
|
||||
[pinch_minimum_diameter / 2 + pinch_diameter_difference / 4, length_above],
|
||||
[0, length_above]
|
||||
]);
|
||||
|
||||
// Retention hooks
|
||||
intersection() {
|
||||
rotate_extrude()
|
||||
polygon([
|
||||
[9.55 / 2, -4.8],
|
||||
[11.3 / 2, (11.3 - 9.55) / 2 - 4.8],
|
||||
[11.3 / 2, 2.4 - 4.8],
|
||||
[9.55 / 2 + 0.3, 2.4 - 4.8],
|
||||
[9.55 / 2, 2.4 - 0.3 - 4.8]
|
||||
]);
|
||||
|
||||
cube([20, 4.5 - hook_width_shrink, length_above + 4.8], true);
|
||||
}
|
||||
|
||||
// Outer thread
|
||||
translate([0, 0, screw_start_height - nut_thread_extend])
|
||||
ScrewThread(screw_outer_diameter - thread_gap / 2, screw_thread_length + nut_thread_extend, pitch = screw_pitch);
|
||||
|
||||
}
|
||||
|
||||
// Pen hole
|
||||
union() {
|
||||
translate([0, 0, -4.8 - $eps])
|
||||
cylinder(d = pen_hole_diameter, h = length_above + 4.8 - pinch_length + 2 * $eps);
|
||||
translate([0, 0, length_above - pinch_length])
|
||||
cylinder(h = pinch_length + $eps, d1 = pen_hole_diameter, d2 = pen_hole_diameter - pinch_diameter_difference / 2);
|
||||
}
|
||||
|
||||
for(angle = [0, 90]) {
|
||||
translate([0, 0, length_above + $eps])
|
||||
rotate([-90, 0, angle])
|
||||
linear_extrude(screw_outer_diameter + $eps, center = true)
|
||||
polygon([
|
||||
[pinch_gap / 2, 0],
|
||||
[0, pinch_length + $eps],
|
||||
[-pinch_gap / 2, 0]
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module nut() {
|
||||
ScrewHole(screw_outer_diameter + thread_gap / 2, screw_thread_length + nut_thread_extend, pitch=screw_pitch)
|
||||
rotate_extrude()
|
||||
polygon([
|
||||
[screw_inner_diameter / 2, 0],
|
||||
[nut_bottom_diameter / 2, 0],
|
||||
[nut_bottom_diameter / 2, nut_knurl_height],
|
||||
[nut_top_diameter / 2, screw_thread_length + pinch_length],
|
||||
[pinch_minimum_diameter / 2, screw_thread_length + pinch_length],
|
||||
[screw_outer_diameter / 2, screw_thread_length],
|
||||
[screw_inner_diameter / 2, screw_thread_length],
|
||||
]);
|
||||
for(i = [0:nut_knurl_count - 1]) {
|
||||
rotate([0, 0, i * 360 / nut_knurl_count])
|
||||
translate([-nut_knurl_size / 2, nut_bottom_diameter / 2 - nut_knurl_size / 2, 0])
|
||||
cube([nut_knurl_size, nut_knurl_size, nut_knurl_height]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// nut();
|
||||
holder();
|
||||
|
||||
//difference() {
|
||||
// union() {
|
||||
// holder();
|
||||
// translate([0, 0, screw_start_height])
|
||||
// nut();
|
||||
// }
|
||||
// cube([100, 100, 100]);
|
||||
//}
|
||||
Loading…
Add table
Add a link
Reference in a new issue