From 74bb13b86aa22c07e706b1fa92fab3389044f71f Mon Sep 17 00:00:00 2001 From: djerun Date: Mon, 3 Jun 2024 11:51:35 +0200 Subject: [PATCH] catear-pedestal v0.1 --- catear_headband.scad | 6 ++++-- catear_pedestal.scad | 49 ++++++++++++++++++++++++++++++++++++++++++++ headband.scad | 6 +++--- 3 files changed, 56 insertions(+), 5 deletions(-) create mode 100644 catear_pedestal.scad diff --git a/catear_headband.scad b/catear_headband.scad index 093b749..a2fe08e 100644 --- a/catear_headband.scad +++ b/catear_headband.scad @@ -1,6 +1,7 @@ include ; use ; +use ; module catear(height, thickness, fractal=0, side_len=30, bend_factor=0.5, stretch_factor=1.2, debug=false, chamfer=CHAMFER, chamfer_shape=CHAMFER_SHAPE) { $A=[0, side_len/2]; @@ -69,7 +70,7 @@ module catear(height, thickness, fractal=0, side_len=30, bend_factor=0.5, stretc } } -module catear_headband(debug=DEBUG, size=SIZE, height=HEIGHT, thickness=THICKNESS, part=PART, stretch_len=STRETCH_LEN, tip_len=TIP_LEN, tip_bend=TIP_BEND, ear_scale=1.5, ear_bend_factor=0.15, ear_stretch_factor=1.2, ear_angle=42, chamfer=CHAMFER, chamfer_shape=CHAMFER_SHAPE) { +module catear_headband(debug=DEBUG, size=SIZE, height=HEIGHT, thickness=THICKNESS, part=PART, stretch_len=STRETCH_LEN, tip_len=TIP_LEN, tip_bend=TIP_BEND, ear_scale=1.5, ear_bend_factor=0.15, ear_stretch_factor=1.2, ear_angle=42, chamfer=CHAMFER, chamfer_shape=CHAMFER_SHAPE, with_rake=true) { $a=size/2*ear_scale; $delta=2*(acos($a/(size*2))-90); @@ -107,7 +108,8 @@ module catear_headband(debug=DEBUG, size=SIZE, height=HEIGHT, thickness=THICKNES part=part, stretch_len=stretch_len, tip_len=tip_len, - tip_bend=tip_bend + tip_bend=tip_bend, + with_rake=with_rake ); }; } diff --git a/catear_pedestal.scad b/catear_pedestal.scad new file mode 100644 index 0000000..ad0bf7f --- /dev/null +++ b/catear_pedestal.scad @@ -0,0 +1,49 @@ +include + +use + +SCALE_FACTOR=SIZE/9; + +echo("scale factor: ", SCALE_FACTOR); +echo("bottom diameter: ", SIZE/SCALE_FACTOR); + + +difference() { + union() + for (i=[-1,1]) + translate([i*2, 0, 0]) + rotate(i*90, [0, 1, 0]) + scale(1/SCALE_FACTOR) + union() { + translate([0, 0, SIZE+20+60]) + rotate(90, [0, 1, 0]) + scale(1.6) + catear_headband(thickness=5, with_rake=false); + translate([0, 0, 20]) + cylinder(h=10, r=SIZE, $fn=360); + cylinder(h=20, d=SIZE, $fn=360); + } + translate([0, 0, -SIZE*(1/SCALE_FACTOR)*5]) + cube(SIZE*10*(1/SCALE_FACTOR), center=true); +} + +/* +scale(1/SCALE_FACTOR) { +translate([0, 0, 30]) +scale([1, 1, -1]) +difference() { + union() { + translate([0, 0, 20]) + cylinder(h=10, r=SIZE, $fn=360); + cylinder(h=20, d=SIZE, $fn=360); + } + translate([0, 0, SIZE+20+60]) + rotate(90, [0, 1, 0]) + scale(1.6) + catear_headband(thickness=5, with_rake=false); +} +scale(1.6) + translate([0, 0, HEIGHT/2]) + catear_headband(thickness=5, with_rake=false); +} +*/ \ No newline at end of file diff --git a/headband.scad b/headband.scad index 6d3302d..07e02b2 100644 --- a/headband.scad +++ b/headband.scad @@ -1,5 +1,5 @@ -include include +use module partial_ring(part, radius, thickness, height) { rotate(180-180*part, [0, 0, 1]) @@ -8,7 +8,7 @@ module partial_ring(part, radius, thickness, height) { square([thickness, height], center=true); } -module headband(debug=DEBUG, size=SIZE, height=HEIGHT, thickness=THICKNESS, part=PART, stretch_len=STRETCH_LEN, tip_len=TIP_LEN, tip_bend=TIP_BEND, rake_depth=RAKE_DEPTH, rake_width=RAKE_WIDTH, rake_stretch=RAKE_STRETCH, rake_chamfer=RAKE_CHAMFER, chamfer=CHAMFER, chamfer_shape=CHAMFER_SHAPE) { +module headband(debug=DEBUG, size=SIZE, height=HEIGHT, thickness=THICKNESS, part=PART, stretch_len=STRETCH_LEN, tip_len=TIP_LEN, tip_bend=TIP_BEND, rake_depth=RAKE_DEPTH, rake_width=RAKE_WIDTH, rake_stretch=RAKE_STRETCH, rake_chamfer=RAKE_CHAMFER, chamfer=CHAMFER, chamfer_shape=CHAMFER_SHAPE, with_rake=true) { union() { chamfer(size=chamfer, child_h=height, child_bot=-height/2, shape=chamfer_shape) union() { color("purple") @@ -41,7 +41,7 @@ module headband(debug=DEBUG, size=SIZE, height=HEIGHT, thickness=THICKNESS, part ); } } - for (i=[-size/2:size/2]) { + if (with_rake) for (i=[-size/2:size/2]) { rotate(i*2-rake_width/2, [0, 0, 1]) intersection() { scale([1, 1, rake_stretch/(rake_depth/height)])