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;
23 main_width = spike_top_width + topwall_width*2;
25 pos_web_thick = spike_web_thick + topwall_width*2;
27 module NegativePlan(){
29 (spike_top_width - spike_botpos_width) /
30 (main_height - spike_botpos_height);
32 x0 = (spike_botpos_width - x4z * spike_botpos_height)/2;
33 x1 = spike_top_width/2;
46 module SomeMidRounding(sq_size, z_extra) {
47 translate([0,0,-z_extra])
48 linear_extrude(height= main_height + z_extra*2)
50 square( sq_size, center=true );
53 module PositiveMidRounding(){
54 SomeMidRounding(pos_web_thick*2, 0);
57 module NegativeMidRounding(){
58 SomeMidRounding(spike_web_thick*2.5, 5);
61 module PositivePlan(){
63 translate([ -w/2, 0 ])
64 square([ w, main_height ]);
67 module MultiplySolidifyPlan(th){
71 translate([0,0,-th/2])
72 linear_extrude(height=th)
77 module MultiplyForFixings(){
83 module FixingsPositive(){
88 cube([ mount_dist + mount_width/2 + 1,
93 module FixingsNegative(){
95 translate([ mount_dist, 0,0 ]) {
97 cylinder(r= mount_hole_dia/2, h= 20, $fn=20);
98 translate([0,0, mount_hole_th])
99 cylinder(r = mount_head_dia/2, h=20, $fn=20);
106 MultiplySolidifyPlan(pos_web_thick) PositivePlan();
107 PositiveMidRounding();
108 MultiplyForFixings() FixingsPositive();
110 MultiplySolidifyPlan(spike_web_thick) NegativePlan();
111 NegativeMidRounding();
112 MultiplyForFixings() FixingsNegative();
117 linear_extrude(height=2.0){
123 circle(r = spike_botpos_width/2 + 5);
124 circle(r = spike_botpos_width/2);
125 translate([-50, 0]) square([100,50]);
128 linear_extrude(height=4.0){
130 translate([ -main_width/2, 0 ]) square([ main_width, 2 ]);
136 module MainFitTest(){
138 translate([ top * (mount_dist*2 + mount_width), 0,0 ]){
140 translate([0, 0, (-main_height + 0.5) * top])
142 translate([-50,-50,0])
143 cube([100,100, spike_botpos_height + 1.5]);
150 translate([-mount_dist*3, 0,0])