// Phasenmodell — gemeinsame Logik fuer die 5 Einzelteile (1:1 aus phasenmodell.svg). // Jedes Teil = sein Segment-Umriss (extrudiert) MINUS die gesamte Text+Icon-Gravur. // Nur was auf dem Segment liegt, schneidet -> kein Aufteilen der Schrift noetig. // Aufruf: use phase_part("seg_design.svg", "#2f80c9"); part_h = 5; // Teil-Dicke (flache Kachel) text_dep = 1.2; // Gravurtiefe Text + Icons $fn = 96; // SVG-Doku ist 300 mm breit -> Mitte bei (150,150). // offset()-Roundtrip raeumt die importierten Pfade auf. 0,1 mm noetig, weil die Icon- // Pfade (Zahnrad etc.) Selbstueberschneidungen haben, die 0,02 mm nicht schliesst. module svg2d(file) { translate([-150,-150]) offset(delta=0.1) offset(delta=-0.1) import(file); } module phase_part(seg_svg, col) { color(col) difference() { linear_extrude(part_h) svg2d(seg_svg); translate([0,0,part_h-text_dep]) linear_extrude(text_dep+0.1) svg2d("pm_engrave.svg"); } }