Merge pull request 'feature/case-revision-2' (#4) from feature/case-revision-2 into main

Reviewed-on: https://codeberg.org/opentrafficmap/its-g5-receiver/pulls/4
This commit is contained in:
peterpoetzi
2026-06-02 09:33:29 +02:00
6 changed files with 1723046 additions and 20 deletions
+1722835
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+66 -20
View File
@@ -9,11 +9,11 @@ offset_l_r=3;
front_height = board.z+18;
front_depth=2;
offset_front=20;
offset_screw=7;
offset_screw=6.5;
outer_shell = 2;
hull_extend=60;
hull_extend=45;
module dome(coords,invert=false){
@@ -29,7 +29,7 @@ module carrier(){
union(){
translate([-offset_l_r+0.25,-0,0])cube([board.x+2*offset_l_r-0.5,board.y,carrier_height]);
//pull tab
translate([board.x/2-1+4,-20,0])cube([2,20,10]);
translate([board.x/2-1+4,-14,0])cube([2,14,10]);
dome([5,board.y-73]);
dome([5,board.y-5]);
@@ -104,35 +104,56 @@ module front(){
}
}
module hull_inner(extra=0,extra_l_r=0){ // extra diameter, extra left/right
module hull_inner(extra=0,extra_l_r=0,flat=1){ // extra diameter, extra left/right
$fn=96;
hull(){
translate([-offset_l_r-extra_l_r,-hull_extend,front_height/2])rotate([-90,0,0])cylinder(d=front_height-extra,h=totallen+hull_extend);
translate([board.x+offset_l_r+extra_l_r,-hull_extend,front_height/2])rotate([-90,0,0])cylinder(d=front_height-extra,h=totallen+hull_extend);
intersection(){
hull(){
translate([-offset_l_r-extra_l_r,-hull_extend,front_height/2])rotate([-90,0,0])cylinder(d=front_height-extra,h=totallen+hull_extend);
translate([board.x+offset_l_r+extra_l_r,-hull_extend,front_height/2])rotate([-90,0,0])cylinder(d=front_height-extra,h=totallen+hull_extend);
}
left = -offset_l_r-extra_l_r-(front_height-extra)/2+3.5;
right = board.x+offset_l_r+extra_l_r + (front_height-extra)/2-3.5;
if(flat)translate([left,-100,-100])cube([-left+right,200,200]);
}
}
// hull_inner();
module hull_outer(){
render()difference(){
minkowski(){
hull_inner();
hull_inner(0,0,0);
//rotate([-90,0,0])cylinder(r=2,h=2,$fn=16);
translate([0,-outer_shell-2,0])
sphere(r=outer_shell,$fn=16);
}
hull_inner();
}
}
module screwhead(){
// M3 senkkopf
/* // M3 senkkopf
translate([-offset_l_r-front_height/2-2+0.5,-hull_extend+5+10,front_height/2]){
translate([-0.5,0,0])rotate([0,90,0])cylinder(d=5.5,h=0.5,$fn=32);
rotate([0,90,0])cylinder(d1=5.5,d2=3.3,h=1.65,$fn=32);
rotate([0,90,0])cylinder(d1=3.3,d2=3.3,h=20,$fn=32);
}*/
// M4 zylinderkopf https://www.schraubenking.at/M4-x-8mm-Zylinderschrauben-TX-niedriger-Kopf-ISO14580-Edelstahl-A2-P010998
translate([-offset_l_r-front_height/2-2+0.5,-hull_extend+5+10,front_height/2]){
translate([-0.5,0,0])rotate([0,90,0])cylinder(d=6.9,h=0.5,$fn=32);
rotate([0,90,0])cylinder(d1=6.9,d2=6.9,h=3.1,$fn=32);
rotate([0,90,0])cylinder(d1=4.3,d2=3.3,h=20,$fn=32);
}
}
module screw_for_bottom_case(){
translate([-offset_l_r-front_height/2-2+0.5,-hull_extend+5+10,front_height/2]){
translate([-0.5,0,0])rotate([0,90,0])cylinder(d=4.2,h=100,$fn=32);
translate([-0.5,0,0])rotate([0,90,0])cylinder(d=5.4,h=100,$fn=32);
//translate([-0.5,0,0])rotate([0,90,0])cylinder(d=4.2,h=100,$fn=32);
//translate([9.9-1.8,0,0])rotate([0,90,0])m4_hex_nut();
//translate([70.4,0,0])rotate([0,90,0])m4_hex_nut();
}
}
@@ -209,23 +230,28 @@ module wandhalter(){
//if(true)color("grey")translate([0,board.y,board.z])import("board.stl");
use <wandhalterv2.scad>;
if(false)render()difference(){
height_cut=front_height;
union(){
hull_outer();
intersection(){
//!difference(){
hull_outer();
// translate([-100,-100,height_cut])cube([300,300,300]);
//}
if(true)intersection(){
color("yellow")render()carrier_ext();
hull_inner(-1);
}
intersection(){
if(true)intersection(){
hull()rohre(true);
hull_inner();
}
//wandhalter
translate([board.x/2,0,-outer_shell])rotate([0,180,0])wandhalter();
//translate([board.x/2,0,-outer_shell])rotate([0,180,0])wandhalter();
translate([board.x/2,0,-outer_shell])rotate([0,180,0])wandhalterv2();
}
translate([-4.5,0,board.z+1.6])cube([4.5+0.1,50,2.5]);
union(){
@@ -238,13 +264,18 @@ if(false)render()difference(){
translate([board.x,0,0])mirror([1,0,0])screwhead();
//cut open for devlopment
//translate([-100,-100,height_cut])cube([300,300,300]);
//translate([-100,80,-100])cube(300);
}
if(true){
// carrier
if(false){
color("orange")carrier();
color("orange")render()intersection(){
hull_inner(0.7);
@@ -252,6 +283,22 @@ if(true){
}
}
module m4_hex_nut(clearance = 0.0) {
schluesselweite = 7.0;
height = 5;//3.2;
outer_r = schluesselweite / sqrt(3) + clearance;
//intersection(){
//hull(){
cylinder(h = height, r = outer_r, $fn = 6);
// translate([0,100,0])cylinder(h = height, r = outer_r, $fn = 6);
//}
//translate([-10,-10,0])cube([20,10+schluesselweite/2+clearance*sqrt(3),height+0.1]);
//}
}
//m4_hex_nut();
// bottom halterung
if(true){
$fa=1;
@@ -259,17 +306,16 @@ if(true){
difference(){
intersection(){
hull_inner(0.5); //extra diameter
hull_inner(0.5,0.2); //extra diameter
translate([-100,-hull_extend+5,-100])cube([200,20,200]);
}
intersection(){
translate([0,5+2,0])hull_inner(4,-4);
translate([0,5+2,0])hull_inner(4,-6);
}
translate([board.x/2,-100,front_height/2])rotate([-90,0,0])cylinder(d=20,h=100);
translate([board.x/2,-hull_extend+5+2,front_height/2])rotate([-90,0,0])cylinder(d=24-0.5-0.8,h=3);
translate([board.x/2+15.6,-100,front_height/2])rotate([-90,0,0])cylinder(d=20,h=100);
translate([board.x/2+15.6,-hull_extend+5+2,front_height/2])rotate([-90,0,0])cylinder(d=24-0.5-0.8,h=3);
screw_for_bottom_case();
}
}
Binary file not shown.
+145
View File
@@ -0,0 +1,145 @@
module cylinder_segment_center(r1, r2, h, center_angle, span_angle, fn=100) {
rotate([0, 0, center_angle - span_angle/2])
rotate_extrude(angle = span_angle, $fn = fn)
translate([r1, 0, 0])
square([r2 - r1, h]);
}
module smoother(smooth_r=2, smooth_fn=24) {
sphere(r=smooth_r, $fn=smooth_fn);
}
module offset_in(smooth_r=2, smooth_fn=24, box=1000) {
difference() {
cube([box, box, box], true);
render() {
minkowski() {
difference() {
cube([box, box, box], true);
children();
}
smoother(smooth_r, smooth_fn);
}
}
}
}
module smooth(smooth_r=2, smooth_fn=24) {
minkowski() {
offset_in(smooth_r=smooth_r, smooth_fn=smooth_fn)
children();
smoother(smooth_r=smooth_r, smooth_fn=smooth_fn);
}
}
module maybe_smooth(enable=false, smooth_r=2, smooth_fn=24) {
if (enable)
smooth(smooth_r=smooth_r, smooth_fn=smooth_fn)
children();
else
children();
}
module rounded_cube(l, b, h, r, center=false, fn=96) {
translate(center ? [-l/2, -b/2, -h/2] : [0, 0, 0])
hull() {
for (x = [r, l-r])
for (y = [r, b-r])
translate([x, y, 0])
cylinder(h=h, r=r, $fn=fn);
}
}
module outer(
extrah=5,
h=50,
d3=30,
w3=40
) {
translate([-w3/2, -extrah, -5])
cube([w3, h+extrah, d3+5]);
}
module mast_minus(
extrah=5,
h=50,
d4=12,
r1=20,
depth1=6,
depth=8
) {
// kabelbinder
translate([0, 5-extrah, r1+d4+3-9])
rotate([-90,0,0])
cylinder_segment_center(r1+depth/2, r1+depth1, 16, 90, 120, 360);
translate([0, h-21, r1+d4+3-9])
rotate([-90,0,0])
cylinder_segment_center(r1+depth/2, r1+depth1, 16, 90, 120, 360);
}
module mast(
extrah=5,
h=50,
d4=12,
r1=20,
angle=60,
depth=8
) {
translate([0, -extrah, r1+d4+3])
rotate([-90,0,0])
cylinder_segment_center(r1, r1+depth, h+extrah, 90, angle, 360);
}
module wandhalterv2(
extrah=5,
h=50,
d4=12,
r1=20,
angle=60,
depth1=6,
depth=8,
w3=40,
d3=30,
en_smooth=true,
smooth_r=2,
smooth_fn=24,
round_fn=96
) {
$fs=1;
$fa=1;
difference() {
maybe_smooth(enable=en_smooth, smooth_r=smooth_r, smooth_fn=smooth_fn)
difference() {
union() {
outer(extrah=extrah, h=h, d3=d3, w3=w3);
// mast(extrah=extrah, h=h, d4=d4, r1=r1, angle=angle, depth=depth);
}
translate([0,0,70-2])
rotate([0,45,0])
rotate([90,0,0])
rounded_cube(l=100, b=100, h=200, r=15, center=true, fn=round_fn);
}
translate([-100,-100,-100])
cube([200,200,99.9]);
mast_minus(
extrah=extrah,
h=h,
d4=d4,
r1=r1,
depth1=depth1,
depth=depth
);
}
}
wandhalterv2();