/* 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);