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