DOSSIER Multi-Phase: C#-Plugin + Yak + Wandstile + UX-Polish
- C#-Plugin "DOSSIER" mit 23 nativen Commands (dWall, dDoor, ..., dSection)
- Native Command-Namen + Autocomplete + saubere History
- Idle-Defer + RhinoCode-API → kein _-RunPythonScript-Echo
- Yak-Paket via build.sh, Install in ~/Library/.../packages/8.0/
- Launcher (Tauri):
- dossier_init Tauri-Command + Setup-Tab in Settings
- Yak-Install + StartupCommands-XML + Window-Layout in einem Schritt
- clean-rhino.sh fuer reproduzierbare Resets
- check_dossier_initialized triggert Auto-Open-Setup beim ersten Start
- Wand-Architektur:
- Chain-Logik DEAKTIVIERT → jede Wand baut eigenes Volume (individuell
anwaehlbar, einzeln loeschbar)
- Polyline-Wand: jedes Segment = eigene Wand
- Smart-Split fuer wand_axis/decke/dach/raum/aussparung/traeger
- Auto-Group axis+volume → kein ChooseOne-Dialog, Delete loescht beides
- Stale-Mitre-Fix: Joint-Cache wird vor jedem Wand-Regen invalidiert
- T-Junction-Tolerance auf 1mm (war 1cm, lieferte falsche T-Mitres)
- Wand-Stile:
- Schema in dossier_project_settings.wand_styles (Material + Prio +
Default-Dicke + Referenz, oder Layered mit Schichten)
- dWall-Command Stil-Picker
- ProjectSettingsDialog: Sidebar-Layout (Pill-Selection) +
Wandstile-Tab mit Liste/Editor
- _wand_chain_compat benutzt style_id
- Prio-Dominanz: hoehere Prio gewinnt Eckverbindung, niedrigere wird
T-mitered (siehe _resolve_corner_miter)
- Cmd+G fuer Group (Geschoss-Up auf Alias 'gu')
- Welcome + Cheatsheet borderless mit X/Back-Buttons
- BeginCommand-Hook fuer Gestaltung-Panel-Auto-Open
- panel_base: Python.NET-Enum-Fix fuer Material-Render
This commit is contained in:
+36
-2
@@ -309,6 +309,33 @@ def _load_all(sender, e):
|
||||
_pb._t_mark("post_init", "unit_check", _t_uc)
|
||||
except Exception as ex:
|
||||
print("[STARTUP] unit-check active doc:", ex)
|
||||
# Aliases + Shortcuts (Defaults aus rhino/aliases/shortcuts_default.json
|
||||
# + User-Overrides aus dossier_settings.json) registrieren. Idempotent —
|
||||
# SetMacro/SetMacro ueberschreibt vorhandene Eintraege. Wenn Bridge noch
|
||||
# nicht in sticky liegt (elemente-Panel noch nicht geladen) ist das ok,
|
||||
# die Aliases zeigen auf das Dispatch-Skript das die Bridge lazy aus
|
||||
# sticky liest.
|
||||
_t_al = _t.time()
|
||||
try:
|
||||
from aliases import loader as _alias_loader
|
||||
_na, _nf, _nc, _ns = _alias_loader.apply_all()
|
||||
print("[STARTUP] Aliases: {} alias, {} fkey, {} cmd, {} skipped"
|
||||
.format(_na, _nf, _nc, _ns))
|
||||
_pb._t_mark("post_init", "aliases", _t_al)
|
||||
except Exception as ex:
|
||||
print("[STARTUP] alias-loader:", ex)
|
||||
# BeginCommand-Hook: Gestaltung-Panel oeffnen bei Drawing-Commands
|
||||
try:
|
||||
import begin_cmd_hook
|
||||
begin_cmd_hook.install(verbose=True)
|
||||
except Exception as ex:
|
||||
print("[STARTUP] begin_cmd_hook:", ex)
|
||||
# Welcome-Screen einmalig pro Version (markiert sich selbst)
|
||||
try:
|
||||
import welcome
|
||||
welcome.show_welcome(force=False)
|
||||
except Exception as ex:
|
||||
print("[STARTUP] welcome:", ex)
|
||||
# DOSSIERUI Window-Layout — Hinweis fuer manuelles Laden
|
||||
_hint_dossier_ui()
|
||||
# Startup-Timing-Summary 3 Sekunden spaeter (nachdem alle async Idle-
|
||||
@@ -341,5 +368,12 @@ def _load_all(sender, e):
|
||||
print("[STARTUP] Fertig")
|
||||
|
||||
|
||||
Rhino.RhinoApp.Idle += _load_all
|
||||
print("[STARTUP] geplant - laedt sobald Rhino idle ist")
|
||||
# Idempotency-Guard: wenn beide Pfade gleichzeitig feuern (C#-Plugin OnLoad
|
||||
# UND legacy StartupCommands-XML), nur das erste registriert den Idle-Loader.
|
||||
# Verhindert doppelte Panel-Registrierung + doppelte Listener.
|
||||
if sc.sticky.get("_dossier_startup_scheduled"):
|
||||
print("[STARTUP] schon geplant — skip (parallel-aufruf)")
|
||||
else:
|
||||
sc.sticky["_dossier_startup_scheduled"] = True
|
||||
Rhino.RhinoApp.Idle += _load_all
|
||||
print("[STARTUP] geplant - laedt sobald Rhino idle ist")
|
||||
|
||||
Reference in New Issue
Block a user