Files
DOSSIER-STANDALONE/docs
karim 13cc6a0d6a Fenster im Grundriss: grob/mittel/fein nach SIA 400 klar unterscheiden
grob (1:100) zeigt nur eine schematische Glaslinie, mittel (1:50) einen
Blendrahmen mit Flügel-Trennlinien und Stulp-Quadrat je Flügelstoss, fein
(1:20) zusätzlich verschachtelte Flügelrahmen, Glas als Doppellinie
(Isolierverglasung) und zwei Stulp-Quadrate je Stoss — vorher waren mittel
und fein praktisch identisch. Referenz: SIA 400 Anhang B.9.1, Fig. 36–38
(docs/research/sia400-fenster-tueren.md).
2026-07-11 18:18:37 +02:00
..

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 server­loses 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/parametric-walls.md

Regelbasierte Wandgenerierung als Alternative zum Direktzeichnen. Vier Regel-Varianten (GridRule, ModuleRule, ConditionalRule, PolylineRule) erzeugen Wall[]-Arrays über einen reinen Auflöser (resolveParametricWall). Deckungsbereich: Schweizer 3-m- Wohnraster, bedingte Außen-/Innenwand-Dicken, 6-m-Jochbauweise. Phase A: Typsystem + Resolver isoliert, kein UI. Phase B: Command + Formular-Editor. Phase C: Grid-Ressource und IFC-Export.

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:

  1. 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 01), weil sie alles Spätere prägt.

  2. 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.

  3. Component-getriebene Prioritäts-Verschneidung (Backbone-T/X) als zentrales Geometrie-RisikojoinPriority als 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).

  4. SVG/Paper-Space-Maßstabsmodell + maßstabskorrekte Schraffuren durchgängig — Strichstärke/Text/Hatch in mm, dpi = 96·devicePixelRatio, Hatch sqrt(N)/10, SVG-<pattern> mit userSpaceOnUse. Eliminiert DOSSIERs Plotweight-Rescaling und speist denselben Serializer für Bildschirm, PDF und DXF (tech-selection + plans-output + resources-graphics).

  5. 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.