This commit is contained in:
breitenbach76 2026-06-09 12:24:01 +02:00
parent 1eb215c52e
commit a504511ba4
4 changed files with 33 additions and 29 deletions

View file

@ -25,13 +25,13 @@ Er dient als **Maß-Referenz** und liefert per Render eine **saubere, neutrale V
## Spec (Maße — der „Vertrag", gilt in jedem Tool) ## Spec (Maße — der „Vertrag", gilt in jedem Tool)
| Element | Wert | | Element | Wert |
|---|---| |---|---|
| Board | **rund Ø180 × 12 mm**, Rand gefast | | Board | **rund Ø208 × 14 mm**, Rand gefast |
| Chip-Mulde (Mitte) | Ø **40,6** × Tiefe **1,8** mm (+ Greifkerbe Ø12) — Acryl-Chip Ø40 × 2 mm | | Mittelmulde (Chip) | Ø **50** × Tiefe **2,2** mm (+ Greifkerbe Ø14) |
| Figuren-Sockel | **10×** Ø **25,3** × Tiefe **1,5** mm (Sockel Ø24,5) | | Figuren-Sockel | **10×** Ø **32,8** × Tiefe **2,0** mm (Figuren-Sockel Ø32 + Spiel) |
| Sockel-Ring-Radius | 62 mm; 4 Sektoren über **Lücken** getrennt | | Sockel-Ring-Radius | 72 mm; 4 Sektoren über **Lücken** getrennt |
| RACI-Verteilung | **R 3 · A 1 · C 4 · I 2** (= 10) | | RACI-Verteilung | **R 3 · A 1 · C 4 · I 2** (= 10) |
| Labels | RESPONSIBLE/ACCOUNTABLE/CONSULTED/INFORMED **gleich groß**; Phasenname (z. B. **DESIGN**) in der Chip-Mulde | | Labels | RESPONSIBLE/ACCOUNTABLE/CONSULTED/INFORMED **gleich groß**; Phasenname (z. B. **DESIGN**) in der Chip-Mulde |
| Action-Card-Halter | Steh-Schlitz **63 × 4 mm**, ~12° nach hinten geneigt (Karte 60 × 90), oben | | Action-Card-Halter | Steh-Schlitz **63 × 7 mm, 15 mm tief**, ~12° nach hinten geneigt (Karte 60 × 90), oben |
| Druck | **6×** je Phasenfarbe (Design/Transition/Operation/Support/Review + Gate-Rot) | | Druck | **6×** je Phasenfarbe (Design/Transition/Operation/Support/Review + Gate-Rot) |
## Ehrliche Einordnung ## Ehrliche Einordnung

View file

@ -22,19 +22,22 @@ Single isolated 3D-printable board-game part, centered, filling ~80% of the fram
### B1) Objekt-Block — MIT Beschriftung ### B1) Objekt-Block — MIT Beschriftung
``` ```
The object is a single ROUND flat disc board, ~180 mm diameter, ~12 mm thick, with a softly chamfered rim. In the EXACT CENTER: one large recessed circular well (~40 mm) for a round token; the word "DESIGN" is engraved on the FLOOR of this central well, centered inside it (and nowhere else). Around the center: ONE ring of ten shallow identical circular sockets, grouped into FOUR sectors separated by clear empty gaps — 3, 1, 4 and 2 sockets (total 10). The TOP edge has an upright thin rectangular CARD-HOLDER SLOT (empty, slightly tilted back); the single ACCOUNTABLE socket sits at the top, its label engraved directly BELOW the card-holder slot. All FOUR sector labels — RESPONSIBLE, ACCOUNTABLE, CONSULTED, INFORMED — engraved in the SAME small, subtle font size, each near its own sector. No other text anywhere. Empty board: no tokens, no figures, no card inserted. The object is a single ROUND flat disc board (thin: thickness ≈ 1/15 of its diameter), ~210 mm across, with a softly chamfered rim. KEEP PROPORTIONS ACCURATE. In the EXACT CENTER: one large recessed circular WELL whose diameter is about ONE QUARTER of the board; the word "DESIGN" is engraved on the FLOOR of this central well, centered (and nowhere else). Around the center: ONE ring of ten shallow identical circular sockets — each socket LARGE, about TWO-THIRDS the diameter of the central well — grouped into FOUR sectors separated by clear empty gaps: 3, 1, 4 and 2 sockets (total 10). The TOP edge has an upright thin rectangular CARD-HOLDER SLOT (empty, slightly tilted back); the single ACCOUNTABLE socket sits at the top, its label engraved directly BELOW the card-holder slot. All FOUR sector labels — RESPONSIBLE, ACCOUNTABLE, CONSULTED, INFORMED — engraved in the SAME small, subtle font size, each near its own sector. No other text anywhere. Empty board: no tokens, no figures, no card inserted.
``` ```
### B2) Objekt-Block — TEXTFREI (für Meshy; Schriften später im CAD) ### B2) Objekt-Block — TEXTFREI (für Meshy; Schriften später im CAD)
``` ```
The object is a single ROUND flat disc board, ~180 mm diameter, ~12 mm thick, with a softly chamfered rim. In the EXACT CENTER: one large recessed circular well (~40 mm) for a round token, completely smooth and blank inside. Around the center: ONE ring of ten shallow identical circular sockets, grouped into FOUR sectors separated by clear empty gaps — 3, 1, 4 and 2 sockets (total 10). The TOP edge has an upright thin rectangular CARD-HOLDER SLOT (empty, slightly tilted back). Absolutely NO text, NO letters, NO numbers, NO engraved words or symbols anywhere — all surfaces completely blank. Empty board: no tokens, no figures, no card inserted. The object is a single ROUND flat disc board (thin: thickness ≈ 1/15 of its diameter), ~210 mm across, with a softly chamfered rim. KEEP PROPORTIONS ACCURATE. In the EXACT CENTER: one large recessed circular WELL whose diameter is about ONE QUARTER of the board, smooth and blank inside. Around the center: ONE ring of ten shallow identical circular sockets — each socket LARGE, about TWO-THIRDS the diameter of the central well — grouped into FOUR sectors separated by clear empty gaps: 3, 1, 4 and 2 sockets (total 10). The TOP edge has an upright thin rectangular CARD-HOLDER SLOT (empty, slightly tilted back). Absolutely NO text, NO letters, NO numbers, NO engraved words or symbols anywhere — all surfaces completely blank. Empty board: no tokens, no figures, no card inserted.
``` ```
### Kamera-Zeilen (eine anhängen) ### Kamera-Zeilen (eine anhängen) — Multi-View-Set für Meshy
- **Hero 3/4:** `Camera: three-quarter view from front-right, ~35° elevated, showing the face, the ring of sockets, the central well, and the upright card-holder slot at the back.` - **Vogelperspektive (Top-down):** `Camera: exact top-down orthographic view straight from above; the disc reads as a perfect circle (no ellipse), perfectly centered; all ten sockets, the four sector gaps and the central well clearly visible.`
- **Top-down:** `Camera: exact top-down orthographic view, disc perfectly centered, all ten sockets, the four sector gaps and central well clearly visible.` - **Seitenperspektive (Side):** `Camera: straight side elevation at table height (orthographic, no perspective distortion), showing the thin disc profile, the chamfered rim, the recess depths and the upright card-holder standing above the top edge.`
- **Front, niedrig:** `Camera: near eye-level front view with slight downward tilt, to show rim thickness, chamfer, and the upright card-holder profile.` - **Untersicht (von unten):** `Camera: view from directly underneath, showing the flat closed bottom of the disc and the chamfered rim; no sockets on the underside.`
- **Rück-3/4:** `Camera: three-quarter from back-right, to show the card-holder slot from behind.` - **Hero 3/4 (optional):** `Camera: three-quarter view from front-right, ~35° elevated, full object centered in frame.`
> **Meshy-Multi-View:** Erzeuge dasselbe Objekt in **Top-down + Seite + Untersicht** (+ optional Hero),
> identischer Maßstab/Hintergrund → das gibt Meshy die beste 3D-Rekonstruktion.
--- ---

View file

@ -7,30 +7,30 @@
import bpy, math, os import bpy, math, os
# ----------------------------- Parameter (mm) ----------------------------- # ----------------------------- Parameter (mm) -----------------------------
R_BOARD, BASE_H = 90.0, 12.0 R_BOARD, BASE_H = 104.0, 14.0
EDGE_BEVEL, EDGE_SEG = 1.4, 3 EDGE_BEVEL, EDGE_SEG = 1.6, 3
CHIP_D, CHIP_DEP = 40.6, 1.8 # Acryl-Chip Ø40 x 2 mm CHIP_D, CHIP_DEP = 50.0, 2.2 # Mittelmulde Ø50 (Chip)
NOTCH_D = 12.0 NOTCH_D = 14.0
SOCK_D, SOCK_DEP = 25.3, 1.5 # Figuren-Sockel Ø24,5 SOCK_D, SOCK_DEP = 32.8, 2.0 # Figuren-Sockel Ø32 + 0,8 Spiel
RING_R = 62.0 RING_R = 72.0
PHASE_NAME, PHASE_COLOR = "DESIGN", (0.184, 0.502, 0.788, 1) # #2f80c9 PHASE_NAME, PHASE_COLOR = "DESIGN", (0.184, 0.502, 0.788, 1) # #2f80c9
# Sektor: Name, Label-Mittenwinkel, Sockel-Winkel (Grad; 90=oben, Top frei fuer Karte). # Sektor: Name, Label-Mittenwinkel, Sockel-Winkel (Grad; 90=oben, Top frei fuer Karte).
# Lücken zwischen den Sektoren (34-36°) > Lücken innerhalb (28°) -> Gruppen klar sichtbar. # Lücken zwischen den Sektoren (34-36°) > Lücken innerhalb (28°) -> Gruppen klar sichtbar.
SECTORS = [ SECTORS = [
("RESPONSIBLE", 174, [146, 174, 202]), ("RESPONSIBLE", 150, [118, 150, 182]),
("ACCOUNTABLE", 58, [58]), ("ACCOUNTABLE", 66, [66]),
("CONSULTED", -20, [22, -6, -34, -62]), ("CONSULTED", -34, [30, -2, -34, -66]),
("INFORMED", -110, [-96, -124]), ("INFORMED", -118, [-102, -134]),
] ]
WORD_R = RING_R + SOCK_D/2 + 8 # Labels ausserhalb der Sockel WORD_R = RING_R + SOCK_D/2 + 9 # Labels ausserhalb der Sockel
WORD_SIZE, WORD_DEP = 6.0, 0.9 WORD_SIZE, WORD_DEP = 6.0, 0.9
DESIGN_SIZE, DESIGN_DEP, DESIGN_POS = 9.0, 1.0, (0, -32) DESIGN_SIZE, DESIGN_DEP, DESIGN_POS = 9.0, 1.0, (0, -44)
CARD_CY, CARD_BW, CARD_BD, CARD_BH = 72.0, 76.0, 18.0, 14.0 CARD_CY, CARD_BW, CARD_BD, CARD_BH = 82.0, 72.0, 20.0, 16.0
SLOT_W, SLOT_T, SLOT_TILT = 63.0, 4.0, 12.0 SLOT_W, SLOT_T, SLOT_DEPTH, SLOT_TILT = 63.0, 7.0, 15.0, 12.0
TOP = BASE_H TOP = BASE_H
@ -101,8 +101,9 @@ for _, _, angles in SECTORS:
boolean(base, cyl(SOCK_D, 6, (RING_R*math.cos(math.radians(a)), boolean(base, cyl(SOCK_D, 6, (RING_R*math.cos(math.radians(a)),
RING_R*math.sin(math.radians(a)), TOP - SOCK_DEP + 3)), 'DIFFERENCE') RING_R*math.sin(math.radians(a)), TOP - SOCK_DEP + 3)), 'DIFFERENCE')
# Action-Card-Schlitz (oben offen, leicht nach hinten geneigt) # Action-Card-Schlitz (oben offen, 7 mm breit, 15 mm tief, leicht nach hinten geneigt)
slot = cube(SLOT_W, SLOT_T, 40, (0, CARD_CY, 22)) _sb = BASE_H + CARD_BH - SLOT_DEPTH; _sh = SLOT_DEPTH + 20
slot = cube(SLOT_W, SLOT_T, _sh, (0, CARD_CY, _sb + _sh/2))
slot.rotation_euler = (math.radians(-SLOT_TILT), 0, 0); bpy.ops.object.transform_apply(rotation=True) slot.rotation_euler = (math.radians(-SLOT_TILT), 0, 0); bpy.ops.object.transform_apply(rotation=True)
boolean(base, slot, 'DIFFERENCE') boolean(base, slot, 'DIFFERENCE')
@ -149,7 +150,7 @@ try:
bpy.ops.object.light_add(type='AREA', location=(-140, -60, 180)) bpy.ops.object.light_add(type='AREA', location=(-140, -60, 180))
bpy.context.object.data.energy = 9000; bpy.context.object.data.size = 320 bpy.context.object.data.energy = 9000; bpy.context.object.data.size = 320
bpy.ops.object.empty_add(location=(0, 0, 5)); tgt = bpy.context.object bpy.ops.object.empty_add(location=(0, 0, 5)); tgt = bpy.context.object
bpy.ops.object.camera_add(location=(235, -295, 270)); cam = bpy.context.object bpy.ops.object.camera_add(location=(275, -345, 310)); cam = bpy.context.object
cam.data.lens = 50 cam.data.lens = 50
con = cam.constraints.new('TRACK_TO'); con.target = tgt con = cam.constraints.new('TRACK_TO'); con.target = tgt
con.track_axis = 'TRACK_NEGATIVE_Z'; con.up_axis = 'UP_Y' con.track_axis = 'TRACK_NEGATIVE_Z'; con.up_axis = 'UP_Y'