3d-stuff/openscad/own/hex-rackpanels/hexpanel.scad

124 lines
3.7 KiB
OpenSCAD
Raw Normal View History

2022-09-24 11:25:05 +02:00
/*
hexagonal magnetic panels for serverracks or fridges
by zeus - 2022-09-23 - CC-BY-SA-NC-4.0
https://git.kostianix.de/zeus/3d-stuff/src/branch/main/openscad/own/hex-rackpanels
howto: edit the variables to your liking and needs. Then uncomment one of the models in the end of this file, or add your own
(images have to be in the folder SRC for the provided models).
Syntax is as following:
translate([0,-10,0]) logo("SRC/icinga.svg",3.5);
^ move logo [x,y,z](optional) ^ filename ^ scaling-factor (1==100%)
*/
2022-09-23 23:10:52 +02:00
// ##########################################
// VARS:
$fn=100;
q=0.01; // only used to get rid of visual glitches
sides=6; // whyever you want to change this...
panel_dia=125; // overall diameter (largest diameter, not the distance of the parallel sides!)
mt=3; // material thickness, NOT overall thickness in case of a rim!
rim_t=mt; // thickness of the surrounding rim
rim_h=2; // height of the surroundig rim
logo_d=rim_h; // thickness of the embossing
magnet_count=4; // count of magnets
2022-09-24 11:25:05 +02:00
magnet_dia=11; // diameter of the magnet-recesses, 1mm bigger won't hurt..
2022-09-23 23:10:52 +02:00
magnet_h=1; // height of the magnets
// ##########################################
// MODULES:
module panel(){
difference(){
cylinder(d=panel_dia,h=mt+rim_h,$fn=sides);
translate([0,0,mt+q])cylinder(d=panel_dia-2*rim_t,h=rim_h,$fn=sides);
if (magnet_count==1){
translate([0,0,-q])cylinder(d=magnet_dia,h=magnet_h);
}
if (magnet_count>1){
for (m=[1:360/magnet_count:359]){
rotate([0,0,m]){
translate([panel_dia/4,0,-q]){
cylinder(d=magnet_dia,h=magnet_h);
}
}
}
}
}
}
module logo(path,scale){
translate([0,0,mt]){
scale([scale,scale,1]){
linear_extrude(logo_d){
import(path,center=true);
}
}
}
}
// ##########################################
// DRAW MODEL:
panel();
2022-09-24 11:25:05 +02:00
/* Distributions/OSses: */
//logo("SRC/truenas-core.svg",10);
//logo("SRC/truenas-scale.svg",1.25);
//logo("SRC/freenas.svg",0.5);
//logo("SRC/pfsense.svg",8.5);
logo("SRC/proxmox.svg",7);
//translate([-7,0,0])logo("SRC/ubuntu.svg",0.5);
//translate([0,5,0])logo("SRC/homeassistant.svg",0.45);
//logo("SRC/debian.svg",12.5);
//logo("SRC/mint.svg",6.5);
//translate([0,10,0])logo("SRC/arch.svg",0.15);
//translate([0,5,0])logo("SRC/tux.svg",0.65);
//logo("SRC/windows.svg",0.4);
//logo("SRC/freebsd.svg",17);
/* container-stuff */
//logo("SRC/kubernetes.svg",0.175);
//logo("SRC/docker.svg",7.5);
//logo("SRC/openwrt.svg",10);
/* Venors/Hardware */
//logo("SRC/ubiquity.svg",1.5);
//logo("SRC/raspberry-pi.svg",0.5);
//logo("SRC/cisco.svg",8);
//logo("SRC/cisco-alt.svg",22);
/* VPNs */
//logo("SRC/openvpn.svg",0.15);
//logo("SRC/wireguard.svg",7.5);
/* Programming Languages/Projects */
//logo("SRC/python-alt.svg",20);
//logo("SRC/python.svg",0.31);
//logo("SRC/rust.svg",4);
//logo("SRC/r.svg",0.17);
//logo("SRC/go.svg",0.45);
//logo("SRC/nodejs.svg",22);
/* Services/Software */
//logo("SRC/grafana.svg",8);
//logo("SRC/ansible.svg",8);
//logo("SRC/ansible_alt.svg",0.125);
//logo("SRC/discord.svg",10);
//translate([0,5,0])logo("SRC/jellyfin.svg",0.4);
//logo("SRC/plex.svg",8);
//translate([5,0,0])logo("SRC/plex-alt.svg",8);
//logo("SRC/nextcloud.svg",7.5);
//logo("SRC/github.svg",0.75);
//logo("SRC/gitlab.svg",15);
//translate([-5,-5,0])logo("SRC/gitea.svg",10);
//logo("SRC/pi-hole.svg",12);
//translate([0,-5,0])logo("SRC/bitwarden.svg",3);
//logo("SRC/nginx.svg",8);
//logo("SRC/nginx-alt.svg",0.2);
//logo("SRC/nginx-alt2.svg",23);
//logo("SRC/wordpress.svg",0.75);
//translate([-3,-3,0])logo("SRC/wordpress-alt.svg",0.4);
//translate([0,-10,0])logo("SRC/icinga.svg",3.5);