Fixed leg extenders
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -34,8 +34,8 @@ module backScrew() {
|
||||
translate([0,0,25]) {
|
||||
difference() {
|
||||
cuboid([58,25,20], rounding=5);
|
||||
translate([-20,0,-7]) zcyl(l=25, d=tube_d1+delta, rounding=1);
|
||||
translate([20,0,-7]) zcyl(l=25, d=tube_d1+delta, rounding=1);
|
||||
translate([-18,0,-7]) zcyl(l=25, d=tube_d1+delta, rounding=1);
|
||||
translate([18,0,-7]) zcyl(l=25, d=tube_d1+delta, rounding=1);
|
||||
}
|
||||
rotate([-90,0,0]) {
|
||||
translate([0,-17,0]) difference() {
|
||||
|
||||
@@ -1,200 +1,51 @@
|
||||
id = 16; // inner diameter of ring
|
||||
od = id+5; // outer diameter of ring
|
||||
height = 5; // height of ring
|
||||
gap = 100; // ring opening in degrees
|
||||
ends=1; // 0 no ends, 1 round ends, 2 clamp ends
|
||||
hd=1; // mount hole diameter
|
||||
cd=7; // countersink diameter
|
||||
cdepth=3; // coutersink depth
|
||||
blobsize=1; // size of rounded ends, if ends==1
|
||||
sw=5; // mounting block width
|
||||
sdepth=14; // support depth
|
||||
nholes=1; // number of support holes.
|
||||
block_holes=[1,2,3,4,5]; // block some holes e.g. [2,3]
|
||||
sh=10; // mounting block height. NB total height is nholes x height.
|
||||
support_loc=0; // 0 = mounting block is centered, >0 centred on hole number
|
||||
support_rot=90; // support angle / clamp angle.
|
||||
flat_bottom=false; //remove all points below the bottom of the ring for ease of printing
|
||||
clamp_width=5; // width of clamp ends
|
||||
clamp_depth=10; // depth of clamp ends
|
||||
clamp_height=10; // height of clamp ends
|
||||
clamp_hole=3; // diameter of clap screw hole
|
||||
clamp_holew=1; // clamp hole width
|
||||
// Provided under a Creative Commons Share Alike License
|
||||
// CC-BY-SA
|
||||
// Created by MacLemon
|
||||
|
||||
// internal constants
|
||||
$fn=100;
|
||||
g=1/(nholes+1);
|
||||
fracs=[for (i=[g:g:(1-g)]) each i];
|
||||
sh2=sh+cd;
|
||||
// This Clip is used for mounting an LED strip to a pipe. Either place it between LEDs, or print from translucent material. I recommend using PET-G.
|
||||
|
||||
module main() {
|
||||
difference() {
|
||||
union(){
|
||||
// the clip
|
||||
clip();
|
||||
// mounting block
|
||||
if (nholes>0) {
|
||||
rotate([support_rot,0,0]) {
|
||||
if (support_loc==0) { //center
|
||||
translate([0,0,-(sh/2)*(nholes-1)]){
|
||||
support_block();
|
||||
}
|
||||
} else {
|
||||
translate([0,0,-sh*(support_loc-1)]){
|
||||
support_block();
|
||||
}
|
||||
}
|
||||
}
|
||||
//$fn=30; // Usually fine for rendering previews.
|
||||
//$fn=60; // Used for final rending to .stl. (Yes, this IS slow.)
|
||||
$fn= $preview ? 15 : 30; // uses 30 fragments for preview, 64 for rendering.
|
||||
|
||||
pipe_diameter = 16.3; //mm Diameter of the pipe the clip shall hold on to.
|
||||
outer_diameter = 23; //mm Outer diamter of the clip. (How beefy the clip is.
|
||||
clip_width = 7; //mm Thickness of the clip. Shall fit in between LEDs.
|
||||
strip_width = 12.3; //mm How wide the LED strip to be mounted is.
|
||||
strip_height = 3; //mm Thickness, or how tall is the LED strip including an optional Epoxy cover.
|
||||
|
||||
rounding = 1; //mm
|
||||
clip_thickness = outer_diameter - pipe_diameter; // mm
|
||||
|
||||
minkowski(){
|
||||
difference(){
|
||||
hull(){ // ring + LED strip holder block
|
||||
cylinder (r = outer_diameter / 2 - rounding / 2, h = clip_width - rounding, center = true); // Clip Ring
|
||||
translate ([(pipe_diameter + strip_height) / 2, 0, 0])
|
||||
cube ([ strip_height + clip_thickness - rounding, strip_width + clip_thickness, clip_width - rounding], center = true); // LED Block
|
||||
translate ([(-pipe_diameter - strip_height) / 2, 0, 0])
|
||||
cube ([ strip_height + clip_thickness - rounding, strip_width + clip_thickness, clip_width - rounding], center = true); // grip Block
|
||||
}
|
||||
|
||||
// Remove LED strip cutout
|
||||
translate ([(pipe_diameter / 2 + strip_height + rounding)/2, 0, 0])
|
||||
cube ([(pipe_diameter / 2 + strip_height + rounding), strip_width + rounding , clip_width * 2], center = true);
|
||||
|
||||
// Remove clip on section
|
||||
translate ([-sqrt(2 * pow(outer_diameter, 2))/2, 0, 0])
|
||||
rotate ([0, 0 ,135]) {
|
||||
cube ([outer_diameter, outer_diameter, clip_width * 2 ], center = true);
|
||||
}
|
||||
if(nholes>0){
|
||||
// holes go through clip and mounting block
|
||||
rotate([support_rot,0,0]) {
|
||||
if (support_loc==0) { //center
|
||||
translate([0,0,-(sh/2)*(nholes-1)]){
|
||||
holes();
|
||||
}
|
||||
} else {
|
||||
translate([0,0,-sh*(support_loc-1)]){
|
||||
holes();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Remove pipe
|
||||
#cylinder (r = pipe_diameter / 2 + rounding, h = clip_width * 12, center = true);
|
||||
}
|
||||
//flat bottom
|
||||
if (flat_bottom) {
|
||||
translate([0,0,-(od+sh)-height/2]) {
|
||||
cube(2*(od+sh),center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
} //main
|
||||
|
||||
|
||||
module end_blobs(h,d,angle,od,center=false) {
|
||||
translate([od,0,0]){
|
||||
cylinder(h=h,d=d,center=center);
|
||||
}
|
||||
rotate([0,0,angle]) {
|
||||
translate([od,0,0]){
|
||||
cylinder(h=h,d=d,center=center);
|
||||
}
|
||||
}
|
||||
} //end_blobs
|
||||
|
||||
module end_clamps(){
|
||||
translate([id/2+clamp_depth/2+(od-id)/4,-clamp_width/2,0]){
|
||||
difference(){
|
||||
cube([clamp_depth,clamp_width,clamp_height],center=true);
|
||||
translate([-clamp_holew/2,0,0]) {
|
||||
rotate([90,0,0]){
|
||||
cylinder(d=clamp_hole,h=clamp_width+2,center=true);
|
||||
}
|
||||
}
|
||||
translate([clamp_holew/2,0,0]) {
|
||||
rotate([90,0,0]){
|
||||
cylinder(d=clamp_hole,h=clamp_width+2,center=true);
|
||||
}
|
||||
}
|
||||
cube([clamp_holew,clamp_width+2,clamp_hole],center=true);
|
||||
}
|
||||
}
|
||||
|
||||
rotate([0,0,gap]) {
|
||||
translate([id/2+clamp_depth/2+(od-id)/4,clamp_width/2,0]){
|
||||
difference(){
|
||||
cube([clamp_depth,clamp_width,clamp_height],center=true);
|
||||
translate([-clamp_holew/2,0,0]) {
|
||||
rotate([90,0,0]){
|
||||
cylinder(d=clamp_hole,h=clamp_width+2,center=true);
|
||||
}
|
||||
}
|
||||
translate([clamp_holew/2,0,0]) {
|
||||
rotate([90,0,0]){
|
||||
cylinder(d=clamp_hole,h=clamp_width+2,center=true);
|
||||
}
|
||||
}
|
||||
cube([clamp_holew,clamp_width+2,clamp_hole],center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
sphere (r = rounding);
|
||||
}
|
||||
|
||||
module wedge(h,d,angle,center=false) {
|
||||
intersection(){
|
||||
cylinder(h=h,d=d,center=center);
|
||||
x = (sqrt(2*(d^2))/2)+1;
|
||||
y = 0;
|
||||
xr = x*cos(angle)-y*sin(angle);
|
||||
yr = x*sin(angle)+y*cos(angle);
|
||||
|
||||
linear_extrude(h*2,center=center){
|
||||
if (angle<=90){
|
||||
polygon([[x,0],[xr,yr],[0,0]]);
|
||||
} else if (angle<=180) {
|
||||
polygon([[x,0],[0,x],[xr,yr],[0,0]]);
|
||||
} else if (angle<=270) {
|
||||
polygon([[x,0],[0,x],[-x,0],[xr,yr],[0,0]]);
|
||||
} else {
|
||||
polygon([[x,0],[0,x],[-x,0],[0,-x],[xr,yr],[0,0]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
} //wedge
|
||||
|
||||
module support_block() {
|
||||
for (k = [g:g:(1-g)]) {
|
||||
offset=sh*((k-g)/g);
|
||||
translate([-(sdepth/2)-id/2,0,offset]){
|
||||
cube([sdepth,sw,sh],center=true);
|
||||
}
|
||||
}
|
||||
} //support_block
|
||||
|
||||
module clip(){
|
||||
rotate([0,0,-gap/2]){
|
||||
difference() {
|
||||
cylinder(h=height,d=od,center=true);
|
||||
cylinder(h=height*2,d=id,center=true);
|
||||
wedge(h=height*2,d=od+1,center=true,angle=gap);
|
||||
}
|
||||
if (ends==1) {
|
||||
end_blobs(h=height,d=((od-id)/2)+blobsize,angle=gap,od=(id+(od-id)/2)/2,center=true);
|
||||
}
|
||||
if (ends==2) {
|
||||
end_clamps();
|
||||
}
|
||||
}
|
||||
|
||||
} //clip
|
||||
|
||||
module holes(){
|
||||
|
||||
for (f = [1:nholes]) {
|
||||
k=fracs[f-1];
|
||||
if (len(search(f,block_holes))==0) {
|
||||
offset=sh*((k-g)/g);
|
||||
translate([-(sdepth/2)-id/2,0,offset]){
|
||||
// mount holes
|
||||
rotate([0,90,0]){
|
||||
cylinder(h=2*sdepth,d=hd,center=true);
|
||||
}
|
||||
// countersink
|
||||
translate([sdepth/2-cdepth,0,0]){
|
||||
rotate([0,90,0]){
|
||||
cylinder(h=2*sdepth,d=cd);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
||||
|
||||
translate([-21.5,0,3.5]) {
|
||||
rotate([90,0,-90]) {
|
||||
translate([15,0,3.5]) {
|
||||
rotate([90,0,90]) {
|
||||
linear_extrude(height = 3, center=true)
|
||||
import("../svg/name_tag_ines.svg");
|
||||
import("../svg/name_tag_nathalye.svg");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 11 KiB |
Reference in New Issue
Block a user