opening_width = 8;
inner_block = 12;
-major_block_corner_diameter = 4;
-major_block_corner_radius = major_block_corner_diameter / 2;
-
-corner_block_inner = (30 - 16.5) / 2;
+outer_block = (30 - 16.5) / 2;
wall = 2;
-$fn = 40;
+$fn = 100;
+
+module 3030_arm_half(){
+ // inner block
+ square(inner_block / 2);
+
+ // diagonal arms connecting inner block to outer blocks
+ rotate(45) {
+ square([diagonal - wall, wall / 2]); }
+
+ // outer block, without the wall part since wall has rounded corner
+ translate([x / 2 - outer_block, y / 2 - outer_block]) {
+ square(outer_block - wall); }
+
+ // outer arms covering the opening
+ translate([(opening_width + wall) / 2, y / 2 - wall]) {
+ square([(x - opening_width - wall) / 2 - wall, wall]); }
+ // rounded part at entrace to inside
+ translate([(opening_width + wall) / 2, (y - wall) / 2]){
+ circle(d = wall); }
+ // rounded part around outside of extrusion
+ corner_squish = 0.1;
+ translate([x / 2 - wall + corner_squish, y / 2 - wall + corner_squish]) {
+ circle(wall - corner_squish); } }
+
+module 3030_profile(){
+ arms = 4;
+ for(arm = [0:arms - 1]) {
+ rotate(arm * 360 / arms) {
+ 3030_arm_half();
+ mirror(){ 3030_arm_half(); } } } }
+
+module 3030_sleeve_profile(){
+ difference() {
+ minkowski() {
+ square(30, true);
+ circle(5); }
+ minkowski() {
+ 3030_profile();
+ circle(0.2);} } }
+
+module fillet(r) {
+ offset(-r) {
+ offset(r) {
+ children(); } } }
+
+module upper_arm_profile(){
+
+ a = [20, -20];
+ b = [34.1, 0];
+ c = [6.25, 20];
+ points = [a, b, c];
+
+ arm_radius = 11.35;
+ arm_center = [61.8, 140.4];
+ hull() {
+ polygon(points);
+ translate(arm_center) {
+ circle(arm_radius); } } }
+
+module forearm_profile() {
+ fillet(-5) {
+ difference() {
+ upper_arm_profile();
+ translate([-20, -20]) {
+ square(151); } } } }
-intersection(){
+module shoulder_hull() {
+ hull() {
+ translate([-15, -15, 5]) {
+ minkowski(){
+ cube([30, 30, 25]);
+ sphere(5); } }
+ difference() {
+ upper_arm_hull();
+ translate([-30, 30, -10]) {
+ cube(300); } } } }
+
+module upper_arm_hull() {
+ linear_extrude(height = 15) {
+ upper_arm_profile(); } }
+
+module elbow_hull() {
+ hull(){
+ difference() {
+ upper_arm_hull();
+ translate([-50, -300 + 120, -1]) {
+ cube(300); } }
+ difference() {
+ forearm_hull();
+ translate([0, 0, 30]) {
+ cube(300); } } } }
+
+module forearm_hull() {
+ linear_extrude(height = 120.5) {
+ forearm_profile(); } }
+
+module hand_profile() {
minkowski() {
- square(x - major_block_corner_diameter, center=true);
- circle(major_block_corner_radius); }
-
- union(){
- arms = 4;
- for(arm = [0:arms - 1]) {
- rotate(arm * 360 / arms) {
- square(inner_block / 2);
- rotate(45) {
- translate([diagonal/2, 0]) {
- square([diagonal, wall], center=true); } }
- translate([x / 2-corner_block_inner, y / 2 - corner_block_inner]) {
- square([corner_block_inner, corner_block_inner]); }
- translate([opening_width / 2, y/2 - wall]) {
- square([(x - opening_width) / 2, wall]); }
- translate([x / 2 - wall, opening_width / 2]) {
- square([wall, (y - opening_width) / 2]); } } } } }
+ polygon([[0, 0],
+ [14, 0],
+ [19.5, 20],
+ [7, 20]]);
+ circle(5); } }
+
+module hand_hull() {
+ hull() {
+ difference() {
+ forearm_hull();
+ translate([-30, -30, -300 + 106]) {
+ cube(300); } }
+ translate([53, 135, 115.6]) {
+ linear_extrude(height = 5) {
+ hand_profile(); } } } }
+
+module 3030_spool_holder() {
+ difference() {
+ union() {
+ shoulder_hull();
+ upper_arm_hull();
+ elbow_hull();
+ forearm_hull();
+ hand_hull(); }
+ translate([0, 0, -1]) {
+ linear_extrude(height = 40) {
+ minkowski() {
+ 3030_profile();
+ circle(0.2); } } } } }
+
+3030_spool_holder();
+
+module original_forearm_profile() {
+ %projection(true) {
+ translate([-315, 0, -80]) {
+ import("Spool-holder.stl"); } } }
+
+module original_upper_arm_profile() {
+ %projection(true) {
+ translate([-315, 0, -2]) {
+ import("Spool-holder.stl"); } } }
+
+module original_spool_holder() {
+ %translate([-315, 0, 0]) {
+ import("Spool-holder.stl"); } }
+
+module original_hand_profile() {
+ %projection(true) {
+ translate([-368, -135, -117]) {
+ import("Spool-holder.stl"); } } }
/*
This file is part of 3d-printables.