Projekt-Settings-Dialog + Library Phase A + Material-Merger

- Project-Settings-Dialog (Voreinstellungen Geschoss/Schnitt + Material-Editor)
  ueber Zahnrad-Icon in Oberleiste; Defaults werden in schnitte.pick_schnitt
  + GeschossManager als Vorgabe genommen, pro-Element-Werte unangetastet
- Dossier-Library Phase A (lokal, read-only): rhino/library.py + LibraryBrowser
  Satellite; Seed-Manifest unter ~/Library/Application Support/Dossier/library/
- Material-Merger: _get_all_materials(doc) merged builtin _MATERIAL_LIBRARY
  mit Projekt-Settings-Materialien (inkl. Library-Imports); Wand-Erstellung,
  Sub-Layer-Anlage + Elemente-Material-Dropdown ziehen jetzt aus dem Merge

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-24 02:19:09 +02:00
parent ee01c7ebdc
commit a308ba62d2
13 changed files with 1087 additions and 56 deletions
+4 -1
View File
@@ -28,9 +28,11 @@ export default function ZeichnungsebenenApp() {
const [activeId, setActiveId] = useState('eg')
const [appliedZ, setAppliedZ] = useState(INITIAL_ZEICHNUNGSEBENEN)
const [zMode, setZMode] = useState('active')
const [projectSettings, setProjectSettings] = useState(null)
useEffect(() => {
onMessage('STATE_SYNC', ({ zeichnungsebenen: z }) => {
onMessage('STATE_SYNC', ({ zeichnungsebenen: z, projectSettings: ps }) => {
if (ps) setProjectSettings(ps)
if (z) {
const r = recalcOkff(z); setZeichnungsebenen(r); setAppliedZ(r)
const active = r.find(zz => zz.id === activeId) || r[0]
@@ -122,6 +124,7 @@ export default function ZeichnungsebenenApp() {
recalcOkff={recalcOkff}
mode={zMode}
onModeChange={setZMode}
projectSettings={projectSettings}
/>
</div>
</div>