spike_web_thick = 2.52 + 0.5;
-spike_top_width = 21.04;
+spike_top_width = 21.04 + 1.0;
spike_botpos_height = 9.5;
-spike_botpos_width = 11.68;
+spike_botpos_width = 11.68 + 0.50;
topwall_width = 1.5;
main_width = spike_top_width + topwall_width*2;
+pos_web_thick = spike_web_thick + topwall_width*2;
+
module NegativePlan(){
x4z =
(spike_top_width - spike_botpos_width) /
[-x0, -5]]);
}
+module SomeMidRounding(sq_size, z_extra) {
+ translate([0,0,-z_extra])
+ linear_extrude(height= main_height + z_extra*2)
+ rotate(45)
+ square( sq_size, center=true );
+}
+
+module PositiveMidRounding(){
+ SomeMidRounding(pos_web_thick*2, 0);
+}
+
+module NegativeMidRounding(){
+ SomeMidRounding(spike_web_thick*2.5, 5);
+}
+
module PositivePlan(){
w = main_width;
translate([ -w/2, 0 ])
module Main(){
difference(){
union(){
- MultiplySolidifyPlan(spike_web_thick + topwall_width*2) PositivePlan();
+ MultiplySolidifyPlan(pos_web_thick) PositivePlan();
+ PositiveMidRounding();
MultiplyForMount() Mount();
}
MultiplySolidifyPlan(spike_web_thick) NegativePlan();
+ NegativeMidRounding();
MultiplyForMount() MountHole();
}
}
}
}
-//PlanTest();
+module MainFitTest(){
+ for (top = [0,1]) {
+ translate([ top * (mount_dist*2 + mount_width), 0,0 ]){
+ intersection(){
+ translate([0, 0, (-main_height + 0.5) * top])
+ Main();
+ translate([-50,-50,0])
+ cube([100,100,0.5]);
+ }
+ }
+ }
+}
+
+module Tests(){
+ translate([-mount_dist*3, 0,0])
+ PlanTest();
+ MainFitTest();
+}
+
+//Tests();
Main();