Updates
This commit is contained in:
BIN
tubes/foot_cap.png
Normal file
BIN
tubes/foot_cap.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 58 KiB |
81
tubes/foot_cap_generator_v102.scad
Normal file
81
tubes/foot_cap_generator_v102.scad
Normal file
@@ -0,0 +1,81 @@
|
||||
include <BOSL/constants.scad>
|
||||
use <BOSL/shapes.scad>
|
||||
use <BOSL/masks.scad>
|
||||
use <BOSL/transforms.scad>
|
||||
|
||||
// Höhe Rohr
|
||||
h = 35; // [10:60]
|
||||
|
||||
// Innendurchmesser Rohr
|
||||
rd = 25.4;
|
||||
|
||||
// Neigungswinkel zu Senkrechten
|
||||
angel= 20; // [0:90]
|
||||
|
||||
// Wandstärke
|
||||
wall = 4; // [1:5]
|
||||
|
||||
// Form Grundplatte
|
||||
form = "r"; // [r:rund, q=:Quadrat]
|
||||
|
||||
// Höhe Grundplatte
|
||||
hg = 5; // [1:10]
|
||||
|
||||
// Durchmesser Grundplatte
|
||||
d = 60; // [10:100]
|
||||
|
||||
// Kehle Zwischen Rohr und Grundplatte
|
||||
kehle = 8; //[1:20]
|
||||
|
||||
// Riffel an der Unterseite
|
||||
radius = 2; //[0:5]
|
||||
|
||||
/* [Hidden] */
|
||||
$fa = 1;
|
||||
$fs = 0.4;
|
||||
|
||||
// Rundung
|
||||
fillet = 2; // [0:5]
|
||||
|
||||
|
||||
difference() {
|
||||
union() {
|
||||
rotate([0, -angel, 0]) {
|
||||
// Rohr gefast
|
||||
difference() {
|
||||
tube(h=2*h, id=rd, wall=wall, center=true);
|
||||
translate([0, 0, h])
|
||||
fillet_cylinder_mask(r=rd/2 + wall, fillet=fillet);
|
||||
}
|
||||
// Füllung für Rohr
|
||||
cylinder(h=tan(angel)*rd + sin(angel)*hg + hg , d=rd, center=true);
|
||||
}
|
||||
|
||||
// Grundplatte
|
||||
if(form == "r") {
|
||||
cyl(l=hg, d=d, fillet=fillet);
|
||||
} else {
|
||||
cuboid([d, d, hg], fillet=fillet);
|
||||
}
|
||||
}
|
||||
// unteren Überstand entfernen
|
||||
translate([0, 0, -(hg + h/2)])
|
||||
cylinder(d=d + tan(angel)*h , h=h+hg, center=true);
|
||||
}
|
||||
// kehle zwischen Rohr und Grundplatte
|
||||
skew_xy(xa=-angel, ya=0)
|
||||
scale([1/cos(angel), 1, 1])
|
||||
translate([0, 0, hg/2])
|
||||
rotate([180, 0, 0])
|
||||
fillet_hole_mask(d=rd + 2*wall, fillet=kehle, overage=0);
|
||||
|
||||
// Riffel an der Unterseite
|
||||
difference() {
|
||||
for (i=[1:d/radius/4]){
|
||||
translate([4*i*radius - d/2 - radius, d/2, -hg/2])
|
||||
rotate([90,0,0])
|
||||
cylinder(h=d, r=radius);
|
||||
}
|
||||
translate([0, 0, -hg/2 - radius])
|
||||
tube(h=2*radius, id2=d, id1=d-4*fillet, od=2*d);
|
||||
}
|
||||
BIN
tubes/tube_clip.png
Normal file
BIN
tubes/tube_clip.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
44
tubes/tube_clip.scad
Normal file
44
tubes/tube_clip.scad
Normal file
@@ -0,0 +1,44 @@
|
||||
// Provided under a Creative Commons Share Alike License
|
||||
// CC-BY-SA
|
||||
// Created by MacLemon
|
||||
|
||||
// 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.
|
||||
|
||||
//$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 = 23.3; //mm Diameter of the pipe the clip shall hold on to.
|
||||
outer_diameter = 29; //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.8; //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);
|
||||
}
|
||||
|
||||
// Remove pipe
|
||||
#cylinder (r = pipe_diameter / 2 + rounding, h = clip_width * 12, center = true);
|
||||
}
|
||||
sphere (r = rounding);
|
||||
}
|
||||
BIN
tubes/tube_endcap.png
Normal file
BIN
tubes/tube_endcap.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
64
tubes/tube_endcap.scad
Normal file
64
tubes/tube_endcap.scad
Normal file
@@ -0,0 +1,64 @@
|
||||
// OpenSCAD simple script for a customizable round tube endcap
|
||||
// By Magonegro JUNE-2016
|
||||
// Use your own parameters to customize your endcap.
|
||||
// Open this in OpenSCAD, then press F6 wait for it to render the CAP and export to stl.
|
||||
// At print time remember that Buildplate only support ir required tor the upper CAP external overhanging diameter.
|
||||
InnerMAXDiameter = 20; // Max inner diameter for the rings
|
||||
InnerMINDiameter = 18; // Keep same as MAX for cylindrical shape
|
||||
Rings=6; // Number of rings.
|
||||
RingHeight=3; // Max insertion height = Rings*RighHeight
|
||||
RingsRatio=1; // Each ring's diameter will be this ratio the vaule of its precedent.
|
||||
// Enter 1 for uniform rings or 0.97 (for 6 rings) for a conical shape.
|
||||
// Beware the inner hole, it should be smaller than the last ring.
|
||||
CAPOuterDiameter=24; // This should equal tube external diameter
|
||||
CAPHeight=10; // Height of the CAP, included Fillet
|
||||
Facets=100; // Resolution parameter, minimum value 3 for a triangular CAP, Defaults to 100 for smooth round CAP. Values lower than 30 could render artifacts
|
||||
InnerHoleDiameter=InnerMINDiameter/1.5; // Average value
|
||||
InnerHoleHeight=Rings*RingHeight; // Defaults till the cap
|
||||
Fillet=6; // Fillet radius for the CAP, should be less or equal than CAPHeight. Zero for no fillet. Should be also less o equal than CAPOuterDiameter/2.
|
||||
|
||||
module MakeCap()
|
||||
{
|
||||
difference()
|
||||
{
|
||||
union()
|
||||
{
|
||||
// Rings
|
||||
for(i=[0:Rings-1])
|
||||
{
|
||||
Ratio=1-((1-RingsRatio)*(Rings-i));
|
||||
translate([0,0,i*RingHeight])
|
||||
cylinder(h = RingHeight,
|
||||
r1 = Ratio*InnerMINDiameter/2,
|
||||
r2 = Ratio*InnerMAXDiameter/2,
|
||||
center = false,$fn=Facets);
|
||||
}
|
||||
// Cap
|
||||
translate([0,0,RingHeight*Rings])
|
||||
cylinder(h = CAPHeight-Fillet,
|
||||
r = CAPOuterDiameter/2,
|
||||
center = false,$fn=Facets);
|
||||
translate([0,0,RingHeight*Rings+CAPHeight-Fillet])
|
||||
cylinder(h = Fillet,
|
||||
r = CAPOuterDiameter/2-Fillet,
|
||||
center = false,$fn=Facets);
|
||||
rotate([0,0,360/2*Facets])
|
||||
translate([0, 0, RingHeight*Rings+CAPHeight-Fillet])
|
||||
rotate_extrude(convexity = 10,$fn = Facets)
|
||||
translate([CAPOuterDiameter/2-Fillet, 0, 0])
|
||||
intersection()
|
||||
{
|
||||
circle(r = Fillet, $fn = Facets);
|
||||
square(Fillet);
|
||||
}
|
||||
}
|
||||
// Hole
|
||||
cylinder(h = InnerHoleHeight,
|
||||
r = InnerHoleDiameter/2,
|
||||
center = false,$fn=Facets);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// Main
|
||||
MakeCap();
|
||||
Reference in New Issue
Block a user