# 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: bovenbalk (menu, documenten, opslaan), sneltoetsen, splashscreen css/app.css alle stijl js/vendor/ three.js r128, eigen OrbitControls, jsPDF, qrcode-generator 1.4.4 (MIT, Kazuhiko Arase; QR in de light-PDF), model-viewer 4.3.1 (Apache-2.0, Google; UMD-bundel met eigen three.js, AR in de light-versie) js/core/ gedeelde helpers: geometrie, weergavelagen (lagenmenu), menubalk, eigenschappenpaneel (inspector.js), UI-kit (werkbalk, weergave, popovers), PDF-bladen, DXF-schrijver (dxf-writer.js), IFC-schrijver (ifc-writer.js), OBJ-schrijver (obj-writer.js), GLB-schrijver (glb-writer.js), ZIP (zip-writer.js), labels, camerageheugen, 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) PostModel: palen onder een overkapping/veranda (dak per unit te verlengen), of een dichte zijwand op een vrije hoek js/house/chimney-model.js ChimneyModel: schoorsteen tegen een buitenwand (hol, sparing in de wand zoals een raam, ook over een naad, zonder hout erin; sparing in het dak met raveelwerk (stijlen, balken, kreupele balken), de beplating eindigt op het kader; onderbreekt de dakrand; een nokbalk stopt ervoor; buiten steenstrip/stuc, binnen als de wanden of eigen; in de plattegrond te verslepen langs de buitengevel) js/lighting/ LightingModel: gevellampen, boeideel-spots, binnenspots js/elektra/ ElektraModel + ElektraPdf: meterkast, schakelaars (letters), wcd, groepen, leidingen js/sandwich/ SandwichModel: sandwichpanelen rondom js/room/ RoomModel: ruimtes (verfemmer), functie, netto m², afwerking, vals plafond js/interior/ FixtureModel: inrichting (sanitair, keuken, kasten, meubels, boiler) js/unit/ UnitModel: 1 vloer + 4 wanden, naden, wandstukken js/house/ HouseModel (woning) + woning-PDF + CAD-export (house-dxf.js) + BIM-export (house-ifc.js) + woning-editor js/cost/ CostModel (kostenberekening), posten + noodwaarden, CostCsv (CSV's), venster Kosten & tijden js/app.js menubalk, versienummer, actieve editor light.html light-versie (modelpagina's), los te openen: light.html?model=amstel js/light/ LightModel (keuzes op een model toepassen, indelingscontrole, kerncijfers), LightPdf (klant-PDF) + light-UI css/light.css stijl light-versie, alles onder .tectum-light json/defaults/ referentie-JSON's (niet runtime ingeladen) kosten/ intern.csv (eigen waarden) + leveranciers.csv (live prijzen), bij het starten 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 `