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

S
Description
No description provided
Readme
181 MiB
Languages
JavaScript 94%
CSS 5.1%
HTML 0.9%