This commit is contained in:
breitenbach76 2026-06-09 12:52:46 +02:00
parent 61b6ec23eb
commit 96b86ce340
6 changed files with 117 additions and 170 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)
| Element | Wert |
|---|---|
| Board | **rund Ø208 × 14 mm**, Rand gefast |
| Board | **rund Ø260 × 14 mm**, Rand gefast |
| Mittelmulde (Chip) | Ø **50** × Tiefe **2,2** mm (+ Greifkerbe Ø14) |
| Figuren-Sockel | **10×** Ø **32,8** × Tiefe **2,0** mm (Figuren-Sockel Ø32 + Spiel) |
| Sockel-Ring-Radius | 72 mm; 4 Sektoren über **Lücken** getrennt |
| Sektoren | **4 gleich große 90°-Sektoren**, symmetrisches **Kreuz** (Trennlinien bei 0/90/180/270); Sockel je Sektor gleichmäßig verteilt; Ring-Radius 88 mm |
| 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 |
| Action-Card-Halter | Steh-Schlitz **63 × 7 mm, 15 mm tief**, ~12° nach hinten geneigt (Karte 60 × 90), oben |
| Action-Card-Halter | Steh-Schlitz **70 × 5 mm, ~27 mm tief** (fast volle Höhe), ~12° geneigt (Karte 60 × 90), oben |
| Druck | **6×** je Phasenfarbe (Design/Transition/Operation/Support/Review + Gate-Rot) |
## Ehrliche Einordnung

View file

@ -22,12 +22,12 @@ Single isolated 3D-printable board-game part, centered, filling ~80% of the fram
### B1) Objekt-Block — MIT Beschriftung
```
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.
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 — arranged in FOUR EQUAL sectors forming a symmetric CROSS — straight radial divider lines at the 12, 3, 6 and 9 o'clock positions split the ring into four equal quarters; within each sector the sockets are spread EVENLY. Counts: upper-left 3 (RESPONSIBLE), upper-right 1 (ACCOUNTABLE), lower-right 4 (CONSULTED), lower-left 2 (INFORMED) — total 10; the whole layout looks perfectly symmetric. A thin rectangular CARD-HOLDER SLOT (~70 mm long, ~5 mm wide, recessed deep, empty, slightly tilted back) sits at the very TOP on the 12 o'clock divider line, in the gap between the two upper sectors; ACCOUNTABLE's label is engraved just below the 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)
```
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.
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 — arranged in FOUR EQUAL sectors forming a symmetric CROSS — straight radial divider lines at the 12, 3, 6 and 9 o'clock positions split the ring into four equal quarters; within each sector the sockets are spread EVENLY; counts 3, 1, 4 and 2 (total 10); perfectly symmetric layout. A thin rectangular CARD-HOLDER SLOT (~70 mm long, ~5 mm wide, recessed deep, empty, slightly tilted back) sits at the very TOP on the 12 o'clock divider line, between the two upper sectors. 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) — Multi-View-Set für Meshy

View file

@ -7,30 +7,33 @@
import bpy, math, os
# ----------------------------- Parameter (mm) -----------------------------
R_BOARD, BASE_H = 104.0, 14.0
R_BOARD, BASE_H = 130.0, 14.0
EDGE_BEVEL, EDGE_SEG = 1.6, 3
CHIP_D, CHIP_DEP = 50.0, 2.2 # Mittelmulde Ø50 (Chip)
NOTCH_D = 14.0
SOCK_D, SOCK_DEP = 32.8, 2.0 # Figuren-Sockel Ø32 + 0,8 Spiel
RING_R = 72.0
RING_R = 88.0
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).
# Lücken zwischen den Sektoren (34-36°) > Lücken innerhalb (28°) -> Gruppen klar sichtbar.
# B+ : symmetrisches 90°-Kreuz (Trennlinien bei 0/90/180/270), Sektoren in den
# Diagonalen, Sockel je Sektor gleichmaessig ueber den Sektor verteilt. Karte oben.
SECTORS = [
("RESPONSIBLE", 150, [118, 150, 182]),
("ACCOUNTABLE", 66, [66]),
("CONSULTED", -34, [30, -2, -34, -66]),
("INFORMED", -118, [-102, -134]),
("RESPONSIBLE", 135, [98, 135, 172]),
("ACCOUNTABLE", 45, [45]),
("CONSULTED", -45, [-8, -33, -57, -82]),
("INFORMED", -135, [-98, -172]),
]
DIVIDERS = [0, 90, 180, 270]
WORD_R = RING_R + SOCK_D/2 + 9 # Labels ausserhalb der Sockel
WORD_SIZE, WORD_DEP = 6.0, 0.9
DESIGN_SIZE, DESIGN_DEP, DESIGN_POS = 9.0, 1.0, (0, -44)
DESIGN_SIZE, DESIGN_DEP, DESIGN_POS = 9.0, 1.0, (0, -48)
CARD_CY, CARD_BW, CARD_BD, CARD_BH = 82.0, 72.0, 20.0, 16.0
SLOT_W, SLOT_T, SLOT_DEPTH, SLOT_TILT = 63.0, 7.0, 15.0, 12.0
CARD_CY, CARD_BW, CARD_BD, CARD_BH = 116.0, 84.0, 22.0, 16.0
SLOT_W, SLOT_T, SLOT_DEPTH, SLOT_TILT = 70.0, 5.0, 27.0, 12.0 # tief bis ~3 mm vorm Boden
TOP = BASE_H
@ -72,9 +75,10 @@ def apply_bevel(obj, width=EDGE_BEVEL, seg=EDGE_SEG, ang=30):
bpy.context.view_layer.objects.active = obj
bpy.ops.object.modifier_apply(modifier=m.name)
def engrave(board, body, x, y, rotz=0, size=WORD_SIZE, dep=WORD_DEP):
def engrave(board, body, x, y, rotz=0, size=WORD_SIZE, dep=WORD_DEP, ztop=None):
z0 = (TOP if ztop is None else ztop) - dep
try:
bpy.ops.object.text_add(location=(x, y, TOP - dep))
bpy.ops.object.text_add(location=(x, y, z0))
t = bpy.context.object; t.data.body = body; t.data.size = size
t.data.extrude = dep + 1.5; t.data.align_x='CENTER'; t.data.align_y='CENTER'
t.rotation_euler = (0, 0, math.radians(rotz))
@ -101,7 +105,16 @@ for _, _, angles in SECTORS:
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')
# Action-Card-Schlitz (oben offen, 7 mm breit, 15 mm tief, leicht nach hinten geneigt)
# Sektor-Trennlinien — symmetrisches Kreuz (0/90/180/270), flach graviert
_di, _do = CHIP_D/2 + 5, RING_R + SOCK_D/2 + 6
for a in DIVIDERS:
g = cube(_do - _di, 2.6, 1.4, (0, 0, 0))
g.rotation_euler = (0, 0, math.radians(a))
g.location = (((_di+_do)/2)*math.cos(math.radians(a)),
((_di+_do)/2)*math.sin(math.radians(a)), TOP - 0.7)
boolean(base, g, 'DIFFERENCE')
# Action-Card-Schlitz (oben offen, 70x5 mm, tief bis ~3 mm vorm Boden, leicht geneigt)
_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)
@ -114,12 +127,11 @@ boolean(base, rim, 'DIFFERENCE')
# Sektor-Labels (gleich gross): links/rechts vertikal, oben/unten waagerecht -> lesbar & passt
for name, wc, _ in SECTORS:
c = math.cos(math.radians(wc))
rot = -90 if c > 0.7 else (90 if c < -0.7 else 0)
rot = (wc - 90) if math.sin(math.radians(wc)) >= 0 else (wc + 90) # tangential, lesbar
engrave(base, name, WORD_R*math.cos(math.radians(wc)), WORD_R*math.sin(math.radians(wc)), rot)
# Phasenname unten im Innenkreis
engrave(base, PHASE_NAME, DESIGN_POS[0], DESIGN_POS[1], 0, DESIGN_SIZE, DESIGN_DEP)
# Phasenname in die Chip-Mulde (Boden) graviert — durch den klaren Chip sichtbar
engrave(base, PHASE_NAME, 0, 0, 0, DESIGN_SIZE, DESIGN_DEP, ztop=TOP - CHIP_DEP)
base.name = "RACI-Board"
try: bpy.ops.object.shade_auto_smooth(angle=math.radians(30))
@ -150,7 +162,7 @@ try:
bpy.ops.object.light_add(type='AREA', location=(-140, -60, 180))
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.camera_add(location=(275, -345, 310)); cam = bpy.context.object
bpy.ops.object.camera_add(location=(330, -410, 370)); cam = bpy.context.object
cam.data.lens = 50
con = cam.constraints.new('TRACK_TO'); con.target = tgt
con.track_axis = 'TRACK_NEGATIVE_Z'; con.up_axis = 'UP_Y'

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1,016 KiB

After

Width:  |  Height:  |  Size: 1,021 KiB

Before After
Before After