added own OpenScad models

main
zeus86 2020-10-11 02:27:48 +02:00
parent c03b4f7da6
commit c0c916ae12
237 changed files with 860987 additions and 0 deletions

View File

@ -1,2 +1,4 @@
# 3d-stuff
3d-printing stuff
---
some random 3d-printing stuff like own scad-models, firmware configurations and slicer-setups

9
filaments.md Normal file
View File

@ -0,0 +1,9 @@
# Filaments
| Make | Material | Color/Code | Dia/Volume | Price | Notes |
|--- |--- |--- |--- |--- |
| Noulei | PLA | Silk Black / #24 | 1.75mm/1kg | 26,99€ | |
| ~ | PLA | Silk Blue / #11 | 1.75mm/1kg | 26,99€ | 190°C, Shiny Türkis |
| ~ | PLA | Silk Silver Blue /#14 | 1.75mm/1kg | 26,99€ | 190°C, Shiny Lila |
| GEEETECH | PLA | Black / 700-001-0426 / Y2005 | 1.75mm/1kg | 24,99€ | |

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,28 @@
//The inside hole size (diameter) of your filament spool in MM
spool_inside_diameter = 38; //min/step/max: [0:0.5:100]
//The total height of the spool adapter
total_height=8.5; //min/step/max: [0:0.5:100]
//The brim width -- how much lip to hold your spool
brim_width=85; //min/step/max: [0:0.5:100]
// the brim height -- how thick to the make the lip
brim_height=3; //min/step/max: [0:0.5:100]
//the size (diameter) of your HDD spindle / bearing -- what you mount the adapter to
spindle_size=25; //min/step/max: [0:0.5:100]
$fn=100;
module main_spool() {
union() {
cylinder(r=brim_width/2, h=brim_height);
cylinder(r=spool_inside_diameter/2, h=total_height);
}
}
module hollow_center() {
translate([0,0,-.5]) {
cylinder(r=spindle_size/2, h=total_height+1);
}
}
difference() {
main_spool();
hollow_center();
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,83 @@
// TP-Link 1043N/ND (v1) Wall mount
// by zeus - zeus@ctdo.de - CC-BY-NC-4.0
// -> https://www.thingiverse.com/zeus
// -> https://github.com/zeus86
// 2015-01-17
// =====================================================================
// Variables
// material thickness
material_t=3;
// "thickness" of switch
thickness=25.5;
// overall depth
d=thickness+material_t*2;
// width of holder
w=15+material_t;
// length of holder
l=50;
// screwhole diameter
hole_d=4.5;
big_hole_d=8.5;
//screwhole slider (set to hole_d to disable; requires printing bridges)
hole_slider=10;
big_hole_slider=hole_slider+(big_hole_d-hole_d);
//lip height
lip_h=4;
//lip offset
lip_offset=5;
// radius of switch corner
corner_r=15;
$fn=50;
// =====================================================================
// Code
module carving(dia,carving_h){
hull(){
cylinder(r=dia,h=carving_h,center=true);
translate([-dia,0,0]){cylinder(r=dia,h=carving_h,center=true);}
translate([0,d,0]){cylinder(r=dia,h=carving_h,center=true);}
}
}
module hole(hole_dia,hole_h,slider){
hull(){
translate([-slider/2+hole_dia/2,0,0])cylinder(r=hole_dia/2,h=hole_h+0.1,center=true);
translate([slider/2-hole_dia/2,0,0])cylinder(r=hole_dia/2,h=hole_h+0.1,center=true);
}
}
module holder(){
difference(){
cube([w,l,d],center=true);
translate([-corner_r+w/2-material_t,corner_r-l/2+material_t,0]){
carving(corner_r,thickness+0.1);
}
hull(){
translate([-corner_r+w/2-material_t,corner_r-l/2+material_t,d/2-lip_h+1]){
carving(corner_r,1);
}
translate([-corner_r+w/2-material_t,corner_r-l/2+material_t,d/2-0.4]){
carving(corner_r-lip_offset,1);
}
}
translate([-material_t/2,l/4,-d/2+material_t/2])hole(hole_d,material_t,hole_slider);
translate([-material_t/2,l/4,-d/2+material_t])hole(big_hole_d,material_t,big_hole_slider);
translate([-material_t/2,-l/8,-d/2+material_t/2])hole(hole_d,material_t,hole_slider);
translate([-material_t/2,-l/8,-d/2+material_t])hole(big_hole_d,material_t,big_hole_slider);
}
}
mirror([0,0,0]){
holder();
}

View File

@ -0,0 +1,14 @@
// some basic 2d-to-2d-extrusion of DXF-Vectorfiles
// by zeus - zeus@ctdo.de - CC-BY-NC-4.0
// -> https://www.thingiverse.com/zeus
// -> https://github.com/zeus86
// 2015-05-05
h=5;
$fn=100;
translate([92.5,115,-h/2*1]){
scale([1.0,1.5,1]) cylinder(r=90.0, h=h/2*1);
}
scale([0.4,0.4,1])#linear_extrude(height = h/2*1) import("rose2.dxf");

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,47 @@
// rostock igus/traxxas-mod with customized front-belt assembly
// front clamp
// by zeus - zeus@ctdo.de - CC-BY-NC-4.0
// -> https://www.thingiverse.com/zeus
// -> https://github.com/zeus86
//2014-10-01
// ---
// some vars:
height = 24;
hole = 3.5;
thickness = 1.5;
// model
module holes() {
union() {
translate([0, 0, 5]){
rotate([90, 0, 0]){
cylinder(r=hole/2, h=thickness*2, center=true, $fn=12);}}
translate([0, 0, -5]){
rotate([90, 0, 0]){
cylinder(r=hole/2, h=thickness*2, center=true, $fn=12);}}
}
}
module blocko() {
intersection() {
translate([0, 0, 0])
cube([10, thickness, height-3], center=true);
rotate([90,0,0]){
cylinder(r=height/2-height*0.1, h=10, center=true, $fn=64);
}
}
}
translate([0, 0, 0]){
difference() {
blocko();
holes();
}
}

View File

@ -0,0 +1,114 @@
// rostock igus/traxxas-mod with customized front-belt assembly
// by zeus - zeus@ctdo.de - CC-BY-NC-4.0
// -> https://www.thingiverse.com/zeus
// -> https://github.com/zeus86
//2014-10-01
Fmotor_end_height=44;
idler_end_height=28;
carriage_height=24;
rod_length=120;
smooth_rod_length=300;
tower_radius = 120;
platform_hinge_offset=33;
carriage_hinge_offset=22;
width = 67;
height = carriage_height;
offset = 20;
cutout = 15;
middle = 2*offset - width/2;
module parallel_joints(reinforced) {
difference() {
union() {
intersection() {
cube([width, 20, 8], center=true);
rotate([0, 90, 0]) cylinder(r=5, h=width, center=true);
}
intersection() {
translate([0, 18, 4]) rotate([45, 0, 0])
cube([width, reinforced, reinforced], center=true);
translate([0, 0, 20]) cube([width, 35, 40], center=true);
}
translate([0, 8, 0]) cube([width, 16, 8], center=true);
}
rotate([0, 90, 0]) cylinder(r=1.55, h=80, center=true, $fn=12);
for (x = [-offset, offset]) {
translate([x, 6.6, 0])
cylinder(r=cutout/2, h=100, center=true, $fn=36);
translate([x, -3.8, 0])
cube([cutout, 20, 100], center=true);
translate([x, 0, 0]) rotate([0, 90, 0]) rotate([0, 0, 30])
cylinder(r=3.5, h=19, center=true, $fn=6);
}
translate([0, 4, 0])
cube([2*offset+7, 20, 100], center=true);
//translate([0, 2, 0]) cylinder(r=middle, h=100, center=true);
//translate([0, -8, 0]) cube([2*middle, 20, 100], center=true);
}
}
module lm8uu_mount(d, h) {
union() {
difference() {
intersection() {
cylinder(r=11, h=h, center=true);
translate([0, -8, 0]) cube([22, 13, h+1], center=true);
}
cylinder(r=16/2, h=h+1, center=true);
}
}
}
module carriage() {
translate([0, 0, height/2])
union() {
for (x = [-30, 30]) {
translate([x, 0, 0]) lm8uu_mount(d=15, h=24);
}
difference() {
union() {
translate([0, -5.6, 0])
cube([50, 5, height], center=true);
translate([0, -carriage_hinge_offset, -height/2+4])
parallel_joints(16);
// endstop column
translate([15, -10, -height/2+4])
cube([6, 5, 8], center=true);
translate([15, -15.5, -height/2+4])
intersection() {
}
}
translate([-9, -5.6, 5]){
rotate([90, 0, 0]){
cylinder(r=1.75, h=10, center=true, $fn=12);}}
translate([-9, -5.6, -5]){
rotate([90, 0, 0]){
cylinder(r=1.75, h=10, center=true, $fn=12);}}
// Screw hole for adjustable top endstop.
translate([15, -8, -height/2+4])
cylinder(r=1.5, h=15, center=true, $fn=12);
for (x = [-30, 30]) {
translate([x, 0, 0])
cylinder(r=8, h=height+1, center=true);
// Zip tie tunnels.
for (z = [-height/2+4, height/2-4])
translate([x, 0, z])
cylinder(r=13, h=3, center=true);
}
}
}
}
carriage();

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,84 @@
// Stanley Tool Organizer Drawers/Separators for the side-panel
// by zeus - zeus@ctdo.de - CC-BY-NC-4.0
// -> https://www.thingiverse.com/zeus
// -> https://github.com/zeus86
// 2014-11-25
// =================================
//inner width
wi=60;
//overall width
wo=64;
//height
h=54;
//end-cylinder-diameter
cd=6.3;
//material thickness
mt=3;
//drawer height
dh=h/4;
//drawer width
dw=wi;
$fn=50;
// =================================
module inner_wall(){
translate([0,0,h/2]){
cube([wi-mt,mt,h],center=true);
}
translate([0,0,dh/2]){
cube([dw-mt,mt*2,dh],center=true);
}
}
module outer_half_circle(){
translate([0,0,h/2]){
difference(){
cylinder(r=cd/2+mt,h=h,center=true);
cylinder(r=cd/2,h=h+1,center=true);
}
}
}
module cut_edge(){
translate([0,0,h/2]){
cube([wo,cd*3,h],center=true);
}
}
// =================================
module drawer(){
intersection(){
union(){
inner_wall();
for (x=[wi/2+cd/4,-wi/2-cd/4]){
translate([x,0,0]){
outer_half_circle();
}
}
}
cut_edge();
}
}
module drawer_flat(){
intersection(){
union(){
inner_wall();
translate([wi/2+cd/4,0,0]){
outer_half_circle();
}
translate([-wi/2,0,h/2]){
cube([cd/2,cd*3,h],center=true);
}
}
cut_edge();
}
}
//drawer_flat();
drawer();

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,198 @@
solid OpenSCAD_Model
facet normal -1 0 0
outer loop
vertex -35 -1 0
vertex -35 -1 10
vertex -35 11 0
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -35 11 0
vertex -35 -1 10
vertex -35 11 10
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -35 -1 10
vertex -35 -1 0
vertex 35 -1 0
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 35 -1 10
vertex -35 -1 10
vertex 35 -1 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 33 1 0
vertex 35 -1 0
vertex -33 1 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -35 -1 0
vertex -35 11 0
vertex -33 1 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -35 -1 0
vertex -33 1 0
vertex 35 -1 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 35 -1 0
vertex 33 1 0
vertex 33 11 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 35 -1 0
vertex 33 11 0
vertex 35 11 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -33 1 0
vertex -35 11 0
vertex -33 11 0
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -35 11 0
vertex -35 11 10
vertex -33 11 0
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -33 11 0
vertex -35 11 10
vertex -33 11 10
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -33 1 10
vertex -35 -1 10
vertex 35 -1 10
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -33 1 10
vertex -33 11 10
vertex -35 11 10
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 35 11 10
vertex 33 11 10
vertex 35 -1 10
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 33 11 10
vertex 33 1 10
vertex 35 -1 10
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -35 11 10
vertex -35 -1 10
vertex -33 1 10
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 33 1 10
vertex -33 1 10
vertex 35 -1 10
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 35 -1 10
vertex 35 -1 0
vertex 35 11 0
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 35 11 10
vertex 35 -1 10
vertex 35 11 0
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 33 11 0
vertex 33 11 10
vertex 35 11 0
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 35 11 0
vertex 33 11 10
vertex 35 11 10
endloop
endfacet
facet normal -1 0 0
outer loop
vertex 33 11 10
vertex 33 11 0
vertex 33 1 10
endloop
endfacet
facet normal -1 0 0
outer loop
vertex 33 1 10
vertex 33 11 0
vertex 33 1 0
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -33 1 0
vertex -33 1 10
vertex 33 1 0
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 33 1 0
vertex -33 1 10
vertex 33 1 10
endloop
endfacet
facet normal 1 0 0
outer loop
vertex -33 11 0
vertex -33 11 10
vertex -33 1 10
endloop
endfacet
facet normal 1 0 0
outer loop
vertex -33 1 0
vertex -33 11 0
vertex -33 1 10
endloop
endfacet
endsolid OpenSCAD_Model

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,101 @@
// socket outlet mount / steckdosenleistenhalter
// by zeus - zeus@ctdo.de - CC-BY-NC-4.0
// -> https://www.thingiverse.com/zeus
// -> https://github.com/zeus86
// 2014-11-04
// ==============================================
holder_w=55; // real size of steckdosenleiste, not holder!
holder_h=41; // as above; better add 1mm or so here for not to tight fit
holder_d=15;
hole_dia=5;
material_t=4;
$fn=50;
// ==============================================
// define which clamp to draw
//endclamp_closed_flange();
//endclamp_closed();
endclamp_halfopen();
//midclamp_open();
//midclamp_allopen();
// ==============================================
module endclamp_closed(){
difference(){
//walls
translate([0,0,holder_d/2+material_t/2]){
cube([holder_w+2*material_t,holder_h+2*material_t,holder_d+material_t],center=true);}
translate([0,0,holder_d/2+material_t]){
cube([holder_w,holder_h,holder_d+0.1],center=true);}
//holes
for (N = [-holder_w/4, holder_w/4]){
translate([N,-material_t/2,holder_d/2+material_t/2]){rotate([90,0,0]){
cylinder(r=hole_dia,h=holder_h+2*material_t+0.1,center=true);}}
translate([N,holder_h/2+material_t/2,holder_d/2+material_t/2]){rotate([90,0,0]){
cylinder(r=hole_dia/2,h=material_t+0.1,center=true);}}
}
}
}
module endclamp_closed_flange(){
rotate([0,90,0]){
difference(){
union(){
rotate([0,180,0]){ translate([0,0,-holder_h/2+material_t/3]){ endclamp_closed();}}
translate([0,holder_h/2+material_t/2,holder_h/1.5-material_t/4]){
cube([holder_w+2*material_t,material_t,holder_d],center=true);
}
}
for (N = [-holder_w/4, holder_w/4]){
translate([N,-material_t/2,holder_d*1.5+material_t]){rotate([90,0,0]){
cylinder(r=hole_dia,h=holder_h+2*material_t+0.1,center=true);}}
translate([N,holder_h/2+material_t/2,holder_d*1.5+material_t]){rotate([90,0,0]){
cylinder(r=hole_dia/2,h=material_t+0.1,center=true);}}
}
}
}
}
module midclamp_open(){
difference(){
endclamp_closed();
translate([0,0,material_t/2]){
cube([holder_w,holder_h,2*material_t+0.1],center=true);
}
}
}
module midclamp_allopen(){
difference(){
endclamp_closed();
translate([0,0,material_t/2]){
cube([holder_w,holder_h,material_t+0.1],center=true);}
translate([0,-holder_h/2-material_t/2,holder_d/2+material_t/2])
cube([holder_w-material_t*3.5,material_t*2,holder_d+material_t+0.1],center=true); }
}
module endclamp_halfopen(){
difference(){
endclamp_closed();
translate([0,0,material_t/2]){
cylinder(r=holder_h/2,h=material_t+0.1,center=true);
}
for ( A = [-20 : 20] ){
translate([0,-holder_h/2-material_t/2,holder_d/2+material_t/2]){ rotate([0,A,0]){
cube([hole_dia*1.5,material_t*2,holder_d+2*material_t+0.1],center=true); }}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 861 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,67 @@
// by zeus - zeus@ctdo.de - CC-BY-NC-4.0
// -> https://www.thingiverse.com/zeus
// -> https://github.com/zeus86
// 2014-11-05
// remix of "Ashtray" by TrevM 29/04/2014
/* [Global] */
// What quality?
$fn = 100; // [20,40,60,80,100,120,140,160,180]
// Outside radius?
or = 65; // [20:100]
// Inside radius?
ir = 59; // [20:100]
// Height?
hi = 35; // [10:50]
// Number of slots?
num = 5; // [2:10]
// Base bevel height?
bh = 4; // [2:5]
/* [Hidden] */
ang = 360/num;
thk = or-ir+2;
fr = 3.5;
fr2 = fr * 2;
module extinguisher(){
difference(){
translate([0,0,bh]){cylinder(r1 = 12, r2 = 7, h = hi);}
translate([0,0,bh+0.6]){cylinder(r1 = 4.5, r2 = 5.25, h = hi-0.5);}
}
}
// base
cylinder( r1 = or-bh/2, r2 = or, h = bh);
translate([0,0,bh-0.1])
difference()
{
// outside
cylinder(r = or, h = hi);
// inside
translate([0,0,-0.1]) cylinder(r = ir, h = hi+0.2);
// fag slots
translate([0,0,hi-7]) for (n=[1:num])
rotate([0,0,(n-1)*ang]) slot();
}
module slot()
translate([ir-1,0,0])
{
rotate([0,90,0]) cylinder(r=3.5,h=thk);
translate([0,-fr,0]) rotate([-8,0,0]) cube([thk,fr2,10]);
translate([0,-fr,0]) rotate([8,0,0]) cube([thk,fr2,10]);
}
extinguisher();

Binary file not shown.

After

Width:  |  Height:  |  Size: 827 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 980 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,188 @@
// =====================================================
// Seidenstrasse Specs according to CCC-Congress-Wiki:
// minimal: maximal: optimal:
// Diameter:75mm 90mm 85mm
// Length: 100mm 220mm 180mm
// Weight: >0g 550g 250g
//=====================================================
// by zeus - zeus@ctdo.de - CC-BY-NC-4.0
// -> https://www.thingiverse.com/zeus
// -> https://github.com/zeus86
// 2015-08-05
// =====================================================
// DEFINITIONS
// =====================================================
// Capsule itself
h_overall=200;
h_velcro=15;
h_bulk=30;
d_bulk=85;
d_middle=67;
mt=3;
d_inner=d_middle-2*mt;
// holes for mounting some LED-Stripes
led_pos_t=1; //ledstripe near top
led_pos_m=0; //ledstripe near middle
led_pos_b=1; //ledstripe near bottom
cable_holes=1; // 1=yes, 0=no
cablehole_dia=3;
cablehole_width=2; // multiplicator to the diameter, e.g. 3 means the hole is 9 wide when its height it 3, must be >=1
ziptie_holes=1; // 1=yes, 0=no
ziptiehole_dia=2;
ziptiehole_width=3; // multiplicator to the diameter, e.g. 3 means the hole is 9 wide when its height it 3 , must be >=1
ledstripe_width=12; // in mm
// Screws
scr_hole_num=3;
scr_bighole_dia=8;
scr_body_dia=4;
scr_top_dia=4.3;
scr_block_w=11+mt;
scr_block_d=scr_block_w;
// Insert
insert=1; //1=yes
ins_gap=2.5;
ins_mt=1.5;
ins_wall_offset=4;
ins_height=105; //should be enought for raspberry PIs and most arduinos
ins_h_offset=40; //z-offset from middle
ins_v_offset=10; //vertical offset from middle (i assume otherwise a PI won't fit without because of its height)
// Top
h_top=50;
top_cam_hole=1; // 1=yes
top_cam_hole_dia=12;
// Modules
// ====================================================
module bulk(){
$fn=100;
difference(){
hull() {
cylinder(r=d_middle/2+(mt*1.5),h=1,center=true);
translate([0,0,h_bulk/2])cylinder(r=d_bulk/2,h=h_velcro,center=true);
translate([0,0,h_bulk])cylinder(r=d_middle/2,h=1,center=true);
}
translate([0,0,h_bulk/2+mt/2])cylinder(h=h_bulk,r=d_inner/2,center=true);
}
}
// ====================================================
module blockring(){
$fn=100;
intersection(){
hull() {
cylinder(r=d_middle/2,h=1,center=true);
translate([0,0,h_bulk/2])cylinder(r=d_bulk/2,h=h_velcro,center=true);
}
for (x = [0,120,240]){
rotate([0,0,x]){
translate([d_bulk/2-scr_block_w/2,0,((h_bulk-h_velcro)/2+h_velcro)/2]){
difference(){
cube([scr_block_w,scr_block_d,(h_bulk-h_velcro)/2+h_velcro],center=true);
translate([0,0,(h_bulk-h_velcro)/3]) cylinder(r=scr_body_dia/2,h=h_velcro,center=true);
}
}
}
}
}
}
// ====================================================
module top(){
$fn=100;
difference(){
bulk();
translate([0,0,h_bulk/2+h_velcro/2+mt/4]) cylinder(h=h_bulk,r=d_middle/2+1.5,center=true);
for (x = [0, 120,240])rotate([0,0,x]){
translate([d_bulk/2-scr_block_w/2,0,((h_bulk-h_velcro)/2+h_velcro)/2]) cylinder(r=scr_top_dia/2,h=h_bulk,center=true);
translate([d_bulk/2-scr_block_w/2,0,mt/2]) cylinder(r=scr_bighole_dia/2,h=(h_bulk-h_velcro)/2,center=true);
translate([d_bulk/2-scr_block_w/2,0,(h_bulk-h_velcro/2-3)]) cube([scr_block_w,scr_block_d+0.5,h_bulk-h_velcro/2],center=true);
}
}
}
// ====================================================
module insert(){
difference(){
union(){
hull(){
translate([d_inner/2-ins_wall_offset,0,0])cube([1,2*ins_mt+ins_gap,ins_height+1],center=true);
translate([d_inner/2,0,-ins_wall_offset])cube([1,2*ins_mt+ins_gap,ins_height+1+ins_wall_offset*2],center=true);
}
hull(){
translate([-d_inner/2+ins_wall_offset,0,0])cube([1,2*ins_mt+ins_gap,ins_height+1],center=true);
translate([-d_inner/2,0,-ins_wall_offset])cube([1,2*ins_mt+ins_gap,ins_height+1+ins_wall_offset*2],center=true);
}
}
translate([0,0,1])cube([d_inner,ins_gap,ins_height],center=true);
}
}
//insert();
// ====================================================
module cableholes(){
$fn=50;
rotate([90,0,0]){
hull(){
translate([0,-cablehole_dia*(cablehole_width-1)/2,0])cylinder(r=cablehole_dia/2,h=d_bulk,center=true);
translate([0,cablehole_dia*(cablehole_width-1)/2,0])cylinder(r=cablehole_dia/2,h=d_bulk,center=true);
}
}
}
// ====================================================
module singletie(){
$fn=50;
rotate([90,90,0]){
hull(){
translate([ledstripe_width/2,-ziptiehole_dia*(ziptiehole_width-1)/2,0])cylinder(r=ziptiehole_dia/2,h=d_bulk,center=true);
translate([ledstripe_width/2,ziptiehole_dia*(ziptiehole_width-1)/2,0])cylinder(r=ziptiehole_dia/2,h=d_bulk,center=true);
}
hull(){
translate([-ledstripe_width/2,-ziptiehole_dia*(ziptiehole_width-1)/2,0])cylinder(r=ziptiehole_dia/2,h=d_bulk,center=true);
translate([-ledstripe_width/2,ziptiehole_dia*(ziptiehole_width-1)/2,0])cylinder(r=ziptiehole_dia/2,h=d_bulk,center=true);
}
}
}
// ====================================================
module ziptieholes(){
rotate([0,0,45])singletie();
rotate([0,0,-45])singletie();
}
// ====================================================
module holes(){
if (cable_holes == 1) { cableholes(); }
if (ziptie_holes == 1) { ziptieholes(); }
}
// ====================================================
module centerpart(){
$fn=50;
translate([0,0,-(h_overall/2-mt/2)]) bulk();
difference(){
union(){
cylinder(r=d_middle/2,h=h_overall-mt,center=true);
translate([0,0,h_overall/2-h_bulk*0.8]) blockring();
}
translate([0,0,mt/2]) cylinder(r=d_inner/2,h=h_overall-mt*2+0.1,center=true, $fn=32);
if (led_pos_t == 1){
translate([0,0,h_overall/4+ledstripe_width/2])holes(); }
if (led_pos_b == 1){
translate([0,0,-h_overall/4+ledstripe_width/2])holes(); }
if (led_pos_m == 1){
translate([0,0,ledstripe_width/2])holes(); }
}
if (insert == 1){
for (x = [ins_v_offset, -ins_v_offset]){
translate([0,x,ins_h_offset])insert();
}
}
}
// ====================================================
translate([0,0,h_overall/2-mt/2]) centerpart();
translate([0,0,h_overall+50])mirror([0,0,1]) top();

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN