// -*- C -*-
+include <commitid.scad>
+
cable_maxdia = 12;
cable_mindia = 6;
strap_width = 4 + 0.5;
// calculated
-outerdia = cable_maxdia / cos(30) + wallmin*2;
delta_shift = 1 - delta_ellipse;
+roundoff_rad = cable_maxdia/2 * sqrt(delta_shift)
+ + cable_mindia/2 * (1-sqrt(delta_shift));
+
+outerdia = 2*(roundoff_rad / cos(30) + wallmin);
+
delta_shift_gap = (cable_maxdia-cable_mindia) * delta_shift;
+writing_dx = outerdia * sin(30);
+writing_dz = total_len / 3;
+
module CrossSection(plus=0) {
difference(){
for (dx = [-plus, 0, plus])
scale([cable_maxdia,
cable_maxdia * delta_shift + cable_mindia * delta_ellipse])
circle(r= sqrt(0.5) * delta_shift + 0.5 * delta_ellipse, $fn=4);
- circle(r= cable_maxdia/2 * sqrt(delta_shift)
- + cable_mindia/2 * (1-sqrt(delta_shift)),
- $fn=20);
+ circle(r= roundoff_rad, $fn=20);
}
square(center=true, [40, delta_shift_gap]);
}
module CompleteClamp(){ ////toplevel
- linear_extrude(height=total_len)
- CrossSection();
-
- for (i=[0 : strap_count]){
- if (i*2 != strap_count) {
- translate([0, 0,
- total_len * (i + 0.5) / (strap_count + 1)])
- for (m=[0,1]){
- mirror([0,0,m])
- translate([0,0, strap_width/2])
- linear_extrude(height=strap_wall_l)
- CrossSection(strap_wall_h);
+ difference(){
+ union(){
+ linear_extrude(height=total_len)
+ CrossSection();
+
+ for (i=[0 : strap_count]){
+ if (i*2 != strap_count) {
+ translate([0, 0,
+ total_len * (i + 0.5) / (strap_count + 1)])
+ for (m=[0,1]){
+ mirror([0,0,m])
+ translate([0,0, strap_width/2])
+ linear_extrude(height=strap_wall_l)
+ CrossSection(strap_wall_h);
+ }
}
+ }
+ }
+
+ for (my = [0,1]) {
+ mirror([0,my,0])
+ translate([-writing_dx/2,
+ cos(30) * outerdia/2,
+ (total_len - writing_dz)/2])
+ rotate([90,0,0])
+ Commitid_BestCount([writing_dx, writing_dz]);
+ }
+ }
+}
+
+module HalfPrint(){ ////toplevel
+ rotate([0,180,0]){
+ intersection(){
+ rotate([-90,0,-90])
+ CompleteClamp();
+ translate([-100,-100,0]) cube([1000,200,200]);
}
}
}
-CrossSectionDemo();
+//CrossSectionDemo();
//CompleteClamp();
+HalfPrint();