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

125 lines
3.8 KiB
OpenSCAD

/*
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). SVG and DXF-Files will work good for this.
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%), depending on source file
*/
// ##########################################
// 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
magnet_dia=11; // diameter of the magnet-recesses, 1mm bigger won't hurt..
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();
/* Distributions/OSses: */
logo("SRC/truenas-core.svg",10);
//logo("SRC/truenas-scale.svg",1.25);
//translate([5,0,0])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);
//logo("SRC/snakemake.svg",2.5);
/* 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);