Skip to content

Instantly share code, notes, and snippets.

@patmandenver
Created December 3, 2019 01:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save patmandenver/b1088d1990ca4d222fceb95fba73c409 to your computer and use it in GitHub Desktop.
Save patmandenver/b1088d1990ca4d222fceb95fba73c409 to your computer and use it in GitHub Desktop.
$fn=100;
thickness=4;
heigth=10;
heigth_brick=83;
//Part that holds to wall
grasp_depth=16;
grasp_angle=30;
//Front Arm
arm_diameter=90;
arm_angle=35;
arm_length=85;
color("#FF0000"){
linear_extrude(heigth){
front(thickness, heigth_brick);
}
}
color("#0000FF"){
linear_extrude(heigth){
arcs(thickness, heigth_brick, grasp_depth,
grasp_angle);
}
}
color("#00FF00"){
linear_extrude(heigth){
arm(thickness,heigth_brick,
grasp_depth, grasp_angle,
arm_diameter, arm_angle, arm_length);
}
}
module front(thickness, heigth){
hull(){
translate([0,heigth/2]){
circle(d=thickness);
}
translate([0,-heigth/2]){
circle(d=thickness);
}
}
}
module arcs(thickness, heigth, depth, angle){
single_arc(thickness, heigth, depth, angle);
mirror([0,1,0]){
single_arc(thickness, heigth,
depth, angle);
}
}
module single_arc(thickness, heigth, depth, angle){
r = 1/3*depth;
hull(){
translate([-r-r*sin(angle),
heigth/2 + r*cos(angle)]){
circle(d=thickness);
}
b = heigth/2
+ (r+ r*sin(angle))*sin(angle)
+ r;
translate([-depth,-depth*tan(angle) + b,0]){
circle(d=thickness);
}
}
difference(){
translate([-r,heigth/2,0]){
difference(){
circle(r+thickness/2);
circle(r-thickness/2);
}
}
polygon(points=[
[thickness,0],
[thickness,heigth/2],
[-r,heigth/2],
[-r-2*r*sin(angle),
heigth/2+2*r*cos(angle)],
[-r-2*r*sin(angle)-2*r,
heigth/2+2*r*cos(angle)],
[-r-2*r*sin(angle)-2*r,0],
]);
}
}
module arm(thickness,heigth,
depth, angle,
arm_diameter, arm_angle, arm_length){
r=1/3*(depth);
x1=-r-r*sin(angle);
y1=-(heigth/2 + r*cos(angle));
x2=x1+arm_diameter/2*sin(angle);
y2=y1+arm_diameter/2*cos(angle);
x3=arm_length;
y3=y2-(arm_diameter/2)*cos(arm_angle)
+ tan(arm_angle)*(arm_length-
(x2+(arm_diameter/2)*sin(arm_angle)));
translate([x2,y2]){
difference(){
difference(){
circle(d=arm_diameter+thickness);
circle(d=arm_diameter-thickness);
}
polygon(points=[
[0,0],
[-2*arm_diameter*sin(angle),
-2*arm_diameter*cos(angle)],
[-2*arm_diameter*sin(angle),
2*arm_diameter],
[2*arm_diameter, 2*arm_diameter],
[2*arm_diameter*sin(arm_angle),
-2*arm_diameter*cos(arm_angle)],
]);
}
}
hull(){
translate([x2+arm_diameter/2*sin(arm_angle),
y2-arm_diameter/2*cos(arm_angle)]){
circle(d=thickness);
}
translate([x3,y3]){
circle(d=thickness);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment