Initial design
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
*.stl
|
148
marker-holder.scad
Normal file
148
marker-holder.scad
Normal file
@@ -0,0 +1,148 @@
|
||||
$fn = $preview ? 32 : 64;
|
||||
|
||||
eraser_width = 125.6;
|
||||
eraser_height = 51;
|
||||
eraser_depth = 24;
|
||||
frame_margin = 10;
|
||||
frame_thickness = 2;
|
||||
nub_diameter = 2;
|
||||
screw_holes = true;
|
||||
screw_hole_diameter = 5;
|
||||
holder_offset = 60;
|
||||
pen_diameter = 17.7;
|
||||
pen_count = 6;
|
||||
|
||||
module clasp(diameter) {
|
||||
difference() {
|
||||
cube([
|
||||
diameter + frame_thickness * 2,
|
||||
frame_margin,
|
||||
diameter * 0.74 + frame_thickness * 2 + nub_diameter / 2
|
||||
]);
|
||||
translate([
|
||||
frame_thickness,
|
||||
-1,
|
||||
frame_thickness + diameter / 2
|
||||
]) cube([
|
||||
diameter,
|
||||
frame_margin * 4 + 2,
|
||||
diameter
|
||||
]);
|
||||
translate([
|
||||
diameter / 2 + frame_thickness,
|
||||
-1,
|
||||
diameter / 2 + frame_thickness
|
||||
]) rotate([-90, 0, 0]) cylinder(
|
||||
h=frame_margin + 2,
|
||||
r=diameter / 2
|
||||
);
|
||||
}
|
||||
translate([
|
||||
frame_thickness,
|
||||
frame_margin / 2,
|
||||
frame_thickness + diameter * 0.74
|
||||
]) sphere(nub_diameter / 2);
|
||||
translate([
|
||||
frame_thickness + diameter,
|
||||
frame_margin / 2,
|
||||
frame_thickness + diameter * 0.74
|
||||
]) sphere(nub_diameter / 2);
|
||||
}
|
||||
|
||||
// Eraser shelf
|
||||
difference() {
|
||||
cube([
|
||||
eraser_width + frame_thickness * 2,
|
||||
eraser_height + frame_thickness * 2,
|
||||
eraser_depth + frame_thickness * 2
|
||||
]);
|
||||
translate([
|
||||
frame_thickness,
|
||||
frame_thickness,
|
||||
frame_thickness
|
||||
]) cube([
|
||||
eraser_width,
|
||||
eraser_height + frame_thickness + 1,
|
||||
eraser_depth + frame_thickness + 1
|
||||
]);
|
||||
if (screw_holes) {
|
||||
translate([
|
||||
frame_thickness + frame_margin,
|
||||
eraser_height + frame_thickness * 2 - frame_margin,
|
||||
-1
|
||||
]) cylinder(
|
||||
h=frame_thickness + 2,
|
||||
r=screw_hole_diameter / 2
|
||||
);
|
||||
translate([
|
||||
eraser_width + frame_thickness - frame_margin,
|
||||
eraser_height + frame_thickness * 2 - frame_margin,
|
||||
-1
|
||||
]) cylinder(
|
||||
h=frame_thickness + 2,
|
||||
r=screw_hole_diameter / 2
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Pen holder frame
|
||||
difference() {
|
||||
translate([
|
||||
0,
|
||||
-holder_offset,
|
||||
0
|
||||
]) cube([
|
||||
eraser_width + frame_thickness * 2,
|
||||
holder_offset,
|
||||
frame_thickness
|
||||
]);
|
||||
translate([
|
||||
frame_margin,
|
||||
-holder_offset + frame_margin,
|
||||
-1
|
||||
]) cube([
|
||||
eraser_width + frame_thickness * 2 - frame_margin * 2,
|
||||
holder_offset - frame_margin,
|
||||
frame_thickness + 2
|
||||
]);
|
||||
}
|
||||
|
||||
// Lower screw bar
|
||||
difference() {
|
||||
union() {
|
||||
translate([
|
||||
0,
|
||||
-holder_offset * 0.618 + frame_margin * 0.375,
|
||||
0,
|
||||
]) cube([
|
||||
eraser_width,
|
||||
frame_margin / 2,
|
||||
frame_thickness
|
||||
]);
|
||||
translate([
|
||||
eraser_width / 2 + frame_thickness,
|
||||
-holder_offset * 0.618 + frame_margin * 0.625,
|
||||
0,
|
||||
]) cylinder(
|
||||
h=frame_thickness,
|
||||
r=frame_margin / 2
|
||||
);
|
||||
}
|
||||
translate([
|
||||
eraser_width / 2 + frame_thickness,
|
||||
-holder_offset * 0.618 + frame_margin * 0.625,
|
||||
-1,
|
||||
]) cylinder(
|
||||
h=frame_thickness + 2,
|
||||
r=screw_hole_diameter / 2
|
||||
);
|
||||
}
|
||||
|
||||
// Pen holder clasps
|
||||
translate([
|
||||
(eraser_width - pen_count * (pen_diameter + frame_thickness) + frame_thickness) / 2,
|
||||
-holder_offset,
|
||||
0
|
||||
]) for(i = [0:pen_count - 1]) {
|
||||
translate([(pen_diameter + frame_thickness) * i, 0]) clasp(pen_diameter);
|
||||
}
|
Reference in New Issue
Block a user