Files
Tectum/README.md
T

83 lines
3.7 KiB
Markdown

# Tectum — configurator Van Emous Mantelzorgwoningen (intern)
Configurator voor mantelzorgwoningen: wand, vloer en woning (gekoppelde units)
met 2D, 3D, specificaties en PDF-tekenbladen.
Copyright © 2026 Machiel Heinen. Alle rechten voorbehouden; gebruik
uitsluitend met schriftelijke toestemming. Zie [LICENTIE.md](LICENTIE.md).
Elk bronbestand begint met deze copyright-kop.
## Draaien
```
./start.sh # of: python3 -m http.server 8000
```
Open `http://localhost:8000`. Elke statische webserver volstaat; geen
build-stap. Direct openen via `file://` werkt niet (texturen/lucht).
## Structuur
```
index.html app-shell: menubalk, splashscreen
css/app.css alle stijl
js/vendor/ three.js r128, eigen OrbitControls, jsPDF
js/core/ gedeelde helpers: geometrie, UI-kit, PDF-bladen, labels,
camerageheugen, weergavefilter, skybox, licentie, logo
js/wall/ WallModel (logica) + wand-PDF + wand-editor
js/floor/ FloorModel (logica) + vloer-PDF + vloer-editor
js/roof/ RoofModel: plat dak + dakrand (boeidelen/daktrim)
js/lighting/ LightingModel: gevellampen, boeideel-spots, binnenspots
js/sandwich/ SandwichModel: sandwichpanelen rondom
js/unit/ UnitModel: 1 vloer + 4 wanden, naden, wandstukken
js/house/ HouseModel (woning) + woning-PDF + woning-editor
js/app.js menubalk, versienummer, actieve editor
json/defaults/ referentie-JSON's (niet runtime ingeladen)
assets/ logo, texturen, skybox
```
## Uitgangspunten
- **Eén bron per logica.** Rekenwerk en 3D-opbouw zitten alleen in de
`*Model`/`*Pdf`-modules; editors en woning hergebruiken die.
- **Geen ES-modules, geen CDN.** Gewone `<script>`-tags in vaste volgorde
(zie `index.html`), alle libraries lokaal.
- **Assen/zijden.** Bovenaanzicht boven = noord: voor = noord, achter = zuid,
links = west, rechts = oost (interne sleutels blijven voor/achter/…).
- **Hoogtes** gelden vanaf bovenkant vloer (loopvlak).
## Functionaliteit
- **Wand:** openingen (raam/deur/voordeur) met ankers, regelwerk 38x235 met
dubbele hoekstijlen, zaagplan op handelslengtes, spaanplaat binnen,
vochtdoek (met kruislat en trasraam) of cementplaat buiten.
- **Wandhoogte:** schuine bovenrand of middenpunt (nok) met goothoogtes. In
een unit bepaalt de laatst gewijzigde wand de dakvorm: de tegenoverliggende
wand spiegelt mee, de haakse wanden worden vlak op de hoekhoogtes.
- **Vloer:** balken, cirkelvormige doorvoeren, OSB, optioneel chassis.
- **Woning:** units koppelen aan een zijde (uitlijning + verschuiving); op
naden vervallen de buitenwanden en komt een naadwand in twee delen (één per
unit, met deur). Binnenwanden teken je in de plattegrond.
- **Dak:** plat dak per unit (vloer gespiegeld + dakleer), dakrand als één
doorlopende rand met boeidelen of daktrim. Daklogica voor schuine
wanden/nok volgt nog.
- **Gevel:** latwerk en vochtdoek lopen per gevel door over unit-naden;
sandwichpanelen rondom, 600 mm de grond in.
- **Verlichting:** boeideel-spots of gevellampen (per gevel verdeeld,
override per wand) en binnenspots in een raster per unit.
- **3D:** weergavefilters, omgeving Ontwerp/Dag/Nacht, Render met lampen als
echte lichtbronnen.
- **Uitvoer:** JSON opslaan/openen en een samenhangende PDF (plattegrond,
vloeren, wandstukken, binnenwanden, totalen).
## Bekende beperkingen
- Units kunnen niet gedraaid worden.
- Binnen- en naadwanden volgen de dakvorm (nog) niet.
- Geen schaduw per lamp in de render (browserlimiet).
- Eigen OrbitControls: roteren/zoomen/pannen, geen damping.
## Versie
`APP_VERSION` in `js/app.js`: laatste cijfer per iteratie, middelste per
mijlpaal (met git-tag), eerste bij live-gang. De changelog staat in git.