Files
Tectum/README.md
T

4.6 KiB

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: dak (plat/lessenaar/zadel) + 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, ook boven elkaar (raam boven een deur; stijlen ertussen van dorpel tot dorpel), regelwerk 38x235 met dubbele hoekstijlen en een dubbele stijl naast deuren, 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 met deur: midden op de naad in twee delen (één per unit), of als één binnenwand geheel in unit A of B. De hoogte volgt per deel de daklijn van zijn unit; steekt een deel boven het dak van de andere unit uit, dan krijgt dat stuk buitenafwerking (vochtdoek + latwerk) die met de gevel meeloopt. Binnenwanden teken je in de plattegrond.
  • Dak: per unit opgebouwd als gespiegelde vloer + dakleer, in de vorm die de wanden aangeven: plat, lessenaar (schuine kopgevels) of zadel (nok). Elk dakvlak is een eigen dek met de balken als sporen en een eigen PDF-blad; doorvoeren gaan naar het vlak waarin ze vallen. De dakrand (boeidelen/daktrim, spots) loopt als één rand door en volgt de helling. Is een dak langs de naad minstens een boeideelhoogte hoger dan het aangrenzende, dan krijgt het een eigen rand rondom (boven het lage dak zonder spots) en loopt de rand van het lage dak door tot de gevel.
  • 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.
  • Getekende binnenwanden volgen de dakvorm (nog) niet.
  • De dak-editor toont het dek in de plattegrond (niet per schuin dakvlak).
  • 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.