Standalone-Browser-Port von DOSSIER. Enthaelt das semantische Modell mit Plan-/3D-Ableitung, Zeichen- und Editierwerkzeuge, Rhino-artiges Befehlssystem, dockbares Panel-System, Resource-Manager, DXF/.lin/.pat-Import, i18n (de/en) sowie Projektdokumentation und Probe-Harness.
Dokumentation — Standalone Browser-BIM (cad)
Stand: 2026-06-29 · Übergeordnet: ROADMAP.md (Vision & Phasen) · CONVENTIONS.md (Konventionen) · ARCHITECTURE.md.
Dieses Verzeichnis bündelt die Recherche- und Design-Dokumente für cad, die
eigenständige Browser-Variante des DOSSIER-Rhino-Plugins (React + TypeScript +
Three.js + SVG, alles client-side). Leitprinzip aller Dokumente: ein
semantisches Modell ist die einzige Wahrheit; jede Sicht (3D, Grundriss, Schnitt)
wird abgeleitet, Darstellung erst beim Rendern angewandt. Bezeichner im Code
englisch (Vectorworks-Terminologie), Prosa deutsch, Einheiten intern in Metern.
Die Dokumente sind in vier Gruppen geordnet: Tech (Bibliotheken/Kernel), Architektur/Design (Aufbau & Bauteile), UX (Oberfläche & Interaktion), Swisstopo/SIA (CH-Geodaten & Flächenstandards).
Tech — Technologie- & Bibliotheksauswahl
research/tech-selection.md
Evaluiert den kompletten Client-Stack für ein serverloses BIM-Werkzeug und
empfiehlt replicad (idiomatische TS-Schicht über opencascade.js/OCCT, MIT)
als primären B-Rep-Kernel im Web Worker, ergänzt durch Manifold (Apache-2.0)
für schnelle, robuste Mesh-Booleans auf Importgeometrie — denn nur ein echter
B-Rep-Kernel liefert exakte 2D-Ableitungen, und genau das löst replicads
drawProjection (OCC-HLR, {visible, hidden}-Kanten direkt im Browser). Weitere
Wahl: Import via web-ifc + Fragments (IFC), dxf-parser (DXF) und
libredwg-web (DWG, aber GPL-3.0 → vorab klären/kapseln); Vektor-Export über
svg2pdf.js + jsPDF (PDF) und @tarikjabiri/dxf (echte Hatch-Entities);
Schraffuren als SVG-<pattern> mit userSpaceOnUse (maßstabskorrekt); Rendering
über three/webgpu mit automatischem WebGL2-Fallback. Top-Risiken: DWG-Lizenz,
OCCT-WASM-Größe, HLR-Kosten (pro Ansicht cachen), WebGPU vor Migration benchmarken.
Architektur/Design — Aufbau, Datenmodell & Bauteile
../ARCHITECTURE.md
Die übergreifende Standalone-Architektur und die systematische Übersetzung jedes
DOSSIER-Konzepts in ein Browser-Äquivalent (30-zeilige Rhino→Browser-Mapping-
Tabelle). Kern: das semantische Project (JSON) als einzige Wahrheit mit pure
derive() zu Scene3D/Plan/Section; ein Zwei-Achsen-Datenmodell
(drawingLevels × layers) plus Resources/WallType/Element/Sheet; ein
Zustand-Store ersetzt DOSSIERs sc.sticky-Bus, .cad.json (File System
Access API) + IndexedDB-Autosave ersetzen doc.Strings, und ein Immer-Patch-
Undo/Redo eliminiert die Cache-Stale-Bugs strukturell. Ziel-Repo-Struktur mit
kleinen Bauteil-Modulen statt des 7244-LOC-elemente.py-Monolithen; Rendering
über einen THREE.Group-Baum, der den Ebenen-Baum spiegelt.
design/elements.md
Legt Daten, Generierung (3D + Plan) und Grip-Editing pro Bauteil fest. Wichtigste
Empfehlung: die Prioritäts-T-/X-Verschneidung mehrschichtiger Wände (Backbone-
Algorithmus, Port von _t_junction_layer_overrides) — das höchstpriorisierte
gemeinsame Material läuft durch, der Rest mitert an; Priorität sitzt am Component
(joinPriority als Daten, nicht Hardcode). Deckt zudem gehostete Öffnungen mit
LoD-Stufen (_OEFF_PIECE_DEFS), Decken mit Aussparungen, Treppen (gerade/L/Wendel,
geschossübergreifend, normgerechtes 2D-Symbol), Dächer, Tragwerk und SIA-416-Räume
(Shoelace-Fläche, Stempel, Färbung über Override-Preset) ab; das Tool-Interface +
Snap-Engine ersetzt DOSSIERs Rhino-Command-Aliases.
design/plans-output.md
Der Weg zu schönen, normgerechten, druckfertigen 2D-Plänen (Vektor-PDF). Zentrale
Erkenntnis: Ansichten = Kamera + optionaler Schnitt, und es gibt zwei Plan-Pfade
(symbolischer Grundriss aus Parametern vs. Schnitt/Ansicht via HLR im Worker,
gecacht). Empfiehlt SVG/Paper-Space als Maßstabsmodell — Strichstärke/Schraffur sind
direkt in mm definiert (dpi = 96·devicePixelRatio, Hatch-Faktor sqrt(N)/10), was
DOSSIERs fragiles Plotweight-Rescaling überflüssig macht. Behandelt außerdem
Ausschnitte/View-Snapshots, Layer-Kombinationen, Kamera-Presets + Norden-Rotation,
Bemaßung sowie Sheets + Vektor-PDF-Export (svg2pdf.js/jsPDF, PAPER_MM).
design/resources-graphics.md
Die Stil-Schicht: verwaltete Ressourcen-Bibliotheken (Component-/Hatch-/Line-
Manager, alles per id referenziert), die resolveStyle-Kette
(ByLayer → Element-Style → Override) und die regelbasierte Overrides-Engine.
Schlüssel-Empfehlung: Overrides als reine Render-Reads modellieren (kein
Backup/Restore wie in DOSSIER, da nichts mutiert wird) — inklusive eines
SIA-416-Presets statt hartcodierter Färbung. Ergänzt Symbol-Bibliothek,
Rich-Text-Annotationen, den LoD-Resolver (resolveDetail) und den Section-Style für
geschnittene Bauteile; eine Tabelle zeigt, was der Browser hier gegenüber DOSSIER
vereinfacht.
UX — Oberfläche, Interaktion & gefühlte Geschwindigkeit
research/ux-patterns.md
Untersucht UX-Muster moderner Browser-CAD/BIM-Tools (Arcol, Snaptrude, TestFit, Onshape, Vectorworks, Figma) und leitet priorisierte Leitplanken ab. Empfehlung für die Grundstruktur: eine feste, Figma-artige 3-Zonen-Shell (Navigator/Viewport/Inspector) — explizit gegen Paletten-Wildwuchs —, mit Vectorworks-Navigation-Tabs für unsere zwei Achsen und einem zwei/drei-spaltigen Resource-Manager als Vorbild. Größte Differenzierungs-Hebel laut Doku: Snapping/Inferencing im Onshape-Stil (Vertex-Highlights, Achsenlinien, Shift unterdrückt) und Grip-Editing über Sicht-Grenzen (Schnittlinie im Plan ziehen); dazu perceived-performance-Muster (Skeletons, optimistic UI, 150-ms-Delay-then-show), eine Command-Palette (Cmd/Ctrl-K) und learn-by-doing-Onboarding am Sample-Projekt.
Swisstopo/SIA — Schweizer Geodaten & Flächenstandards
research/swisstopo-sia.md
Dokumentiert die live getesteten geo.admin.ch-Dienste und die SIA-Flächenlogik.
Überraschendster Befund: alles ist ohne eigenen Backend-Proxy nutzbar — alle vier
Hosts senden access-control-allow-origin: *, und der Height-Service antwortet
faktisch frei. Schlüssel fürs Browser-Gelände-Mesh ist swissALTI3D als Cloud-
Optimized GeoTIFF (Range-Requests via geotiff.js, kein Full-Download); die
Parzelle kommt direkt als LV95-Polygon + EGRID aus dem Identify-Service. Empfiehlt
einen konkreten Library-Satz (proj4, geotiff, 3DTilesRendererJS/loaders.gl)
und ordnet die Umsetzung in ROADMAP-Phasen ein (Phase 2 SIA-Räume = reine Logik →
Phase 4a Koordinaten → 4b Gelände/Orthofoto → 4c Nachbargebäude). SIA-Teil:
verifizierte SIA-416-Formeln, DOSSIERs SIA-Logik 1:1 portierbar (Shoelace,
compute_sia_bilanz, CSV mit BOM); Origin-Shift (LV95 → 0/0/0) ist Pflicht wegen
float32-Jitter, Caching über IndexedDB.
Top-5 Querschnitts-Empfehlungen für die ROADMAP
Diese fünf Punkte tauchen in mehreren Dokumenten auf und sollten die ROADMAP-Planung und Priorisierung leiten:
-
Pure-Ableitungs-Architektur als unverhandelbares Fundament — ein semantisches Modell, alle Sichten abgeleitet, Darstellung erst beim Rendern. Trägt ARCHITECTURE.md, beide Plan-/Stil-Designs und die UX-Doku (billiger Split-View, optimistic Edits, kein Cache-Stale-/Override-Restore-Aufwand). Muss früh stehen (Store + Undo, Phase 0–1), weil sie alles Spätere prägt.
-
OCCT/replicad im Web Worker früh als Spike absichern — der B-Rep-Kernel und sein
drawProjection-HLR sind der kritische Pfad für Schnitt/Ansicht (Risiko #4) und für exakte Wand-Booleans (Risiko #1) und für IFC. WASM-Größe, HLR-Kosten (pro Ansicht cachen) und das Worker-Pattern sollten vor Phase 3 mit einer echten Szene validiert werden. -
Component-getriebene Prioritäts-Verschneidung (Backbone-T/X) als zentrales Geometrie-Risiko —
joinPriorityals Daten am Component; höchstes gemeinsames Material läuft durch, Rest mitert. Verbindet elements.md + resources-graphics.md; 2D-Plan rein analytisch, exakte 3D-Booleans im Worker. Stufenweise umsetzen (Risiko #1, Phase 1). -
SVG/Paper-Space-Maßstabsmodell + maßstabskorrekte Schraffuren durchgängig — Strichstärke/Text/Hatch in mm,
dpi = 96·devicePixelRatio, Hatchsqrt(N)/10, SVG-<pattern>mituserSpaceOnUse. Eliminiert DOSSIERs Plotweight-Rescaling und speist denselben Serializer für Bildschirm, PDF und DXF (tech-selection + plans-output + resources-graphics). -
Schweiz-Spezifika als Differenzierer ohne Backend-Last — SIA-416-Bilanz (reine Logik, Phase 2, ⭐) und der serverlose Swisstopo-Flow (CORS-offen, COG-Terrain, Parzelle/EGRID, Norden-Rotation, Origin-Shift). Klein im Aufwand, groß im CH-Marktwert; SIA-Färbung läuft über das Override-Preset, nicht über Sonderpfade.