5 spike_web_thick = 2.52 + 0.75;
7 spike_top_width = 21.04 + 1.5;
9 spike_botpos_height = 9.5;
10 spike_botpos_width = 11.68 + 0.00;
21 strap_height = main_height * 0.5;
26 strap_fixing_height = 4.0;
27 strap_fixing_slope = 1.0;
31 main_width = spike_top_width + topwall_width*2;
33 pos_web_thick = spike_web_thick + topwall_width*2;
35 module NegativePlan(){
37 (spike_top_width - spike_botpos_width) /
38 (main_height - spike_botpos_height);
40 x0 = (spike_botpos_width - x4z * spike_botpos_height)/2;
41 x1 = spike_top_width/2;
54 module SomeMidRounding(sq_size, z_extra) {
55 translate([0,0,-z_extra])
56 linear_extrude(height= main_height + z_extra*2)
58 square( sq_size, center=true );
61 module PositiveMidRounding(){
62 SomeMidRounding(pos_web_thick*2, 0);
65 module NegativeMidRounding(){
66 SomeMidRounding(spike_web_thick*2.5, 5);
69 module PositivePlan(){
71 translate([ -w/2, 0 ])
72 square([ w, main_height ]);
75 module MultiplySolidifyPlan(th){
79 translate([0,0,-th/2])
80 linear_extrude(height=th)
85 module MultiplyForFixings(){
91 module FixingsPositive(){
96 cube([ mount_dist + mount_width/2 + 1,
101 for (m=[0,1]) mirror([0,m,0]) {
102 translate([main_width/2, 0, strap_height]) {
104 translate([ -strap_around,
106 -(strap_thick + strap_around) / strap_fixing_slope ])
108 pos_web_thick/2 - strap_width/2,
110 translate([ -strap_around,
111 -(strap_around + strap_width/2),
113 cube([ strap_around*2 + strap_thick,
115 strap_fixing_height ]);
118 translate([ strap_thick,
122 strap_around + strap_width,
123 strap_fixing_height ]);
128 module FixingsNegative(){
130 translate([ mount_dist, 0,0 ]) {
132 cylinder(r= mount_hole_dia/2, h= 20, $fn=20);
133 translate([0,0, mount_hole_th])
134 cylinder(r = mount_head_dia/2, h=20, $fn=20);
141 MultiplySolidifyPlan(pos_web_thick) PositivePlan();
142 PositiveMidRounding();
143 MultiplyForFixings() FixingsPositive();
145 MultiplySolidifyPlan(spike_web_thick) NegativePlan();
146 NegativeMidRounding();
147 MultiplyForFixings() FixingsNegative();
152 linear_extrude(height=2.0){
158 circle(r = spike_botpos_width/2 + 5);
159 circle(r = spike_botpos_width/2);
160 translate([-50, 0]) square([100,50]);
163 linear_extrude(height=4.0){
165 translate([ -main_width/2, 0 ]) square([ main_width, 2 ]);
171 module MainFitTest(){
173 translate([ top * (mount_dist*2 + mount_width), 0,0 ]){
175 translate([0, 0, (-main_height + 0.5) * top])
177 translate([-50,-50,0])
178 cube([100,100, spike_botpos_height + 1.5]);
185 translate([-mount_dist*3, 0,0])
190 module StrapFixingTest(){
193 translate([ -10, -10, 40 ])
194 cube([ 20, 40, 15 ]);