mirror of
https://codeberg.org/opentrafficmap/its-g5-receiver.git
synced 2026-06-14 18:21:03 +00:00
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:
+1722835
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
+66
-20
@@ -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.
@@ -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();
|
||||
Reference in New Issue
Block a user