v0.6.0: ruimtes (verfemmer: functie, netto m², vloerafwerking, FIBO-wandpanelen, eigen verfkleur, vals plafond, ruimtestaat op de PDF), inrichting (sanitair, keuken, kookeiland, kasten, bed, zithoek, boiler; slepen met snappen op het wandvlak, draaien, kosten), kozijnen met deurrichting, glasdeur en schuifdeuren (inbouw/opbouw, deuren open in de loopmodus) plus dagkanten, gevel stucwerk en wandstukken splitsen met eigen gevel, dak over de hele woning met overkapping, geschilderd plafond, model Amstel als nieuw ontwerp, kosten en prijzen uit kosten/intern.csv en kosten/leveranciers.csv (CostCsv); easter egg verwijderd; overbodige comments opgeschoond (alleen copyright, uitzonderingen en valkuilen blijven)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
b5510d56c7
commit
ceda0b554d
@@ -29,10 +29,14 @@ js/roof/ RoofModel: dak (plat/lessenaar/zadel) + dakrand (boeidelen/d
|
||||
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 + woning-editor
|
||||
js/cost/ CostModel (kostenberekening), posten + noodwaarden, CostCsv (CSV's), venster Kosten & tijden
|
||||
js/app.js menubalk, versienummer, actieve editor
|
||||
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
|
||||
```
|
||||
|
||||
@@ -77,9 +81,21 @@ assets/ logo, texturen, skybox
|
||||
afmonteren, groepenkast en keuring.
|
||||
- **Kozijnen** (`wall/kozijn-model.js`): per opening een vulling (geen, raam
|
||||
met vast glas en optioneel ventilatierooster, of deur met dorpel en
|
||||
optionele glasstrook; zij- en bovenlicht vullen de rest van een grote
|
||||
optionele glasstrook of als glasdeur; zij- en bovenlicht vullen de rest van een grote
|
||||
opening), kleur buiten en binnen (wit, grijs, antraciet, zwart). Volgt de
|
||||
maat van de opening, ook een schuine bovenzijde.
|
||||
maat van de opening, ook een schuine bovenzijde. Deur: kant van het blad,
|
||||
scharnierzijde en draairichting (naar binnen/buiten); openslaande deuren
|
||||
met zijlichten = twee deuren naast elkaar. Schuifdeur: 1 of 2 bladen
|
||||
(uit elkaar), in de wand of op de wand aan een rail (binnen- of
|
||||
buitenzijde), glazen of dicht blad. In de plattegrond (app en PDF) een
|
||||
draaicirkel per deur en de schuifrichting per schuifdeur; in de loopmodus
|
||||
gaan deuren open (dubbele schuifdeur samen). Dagkanten (afgewerkte
|
||||
fase): binnen een geschilderde omranding, dagkantplaten tot het kozijn en
|
||||
een vensterbank onder ramen; buiten een omranding in de kozijnkleur en
|
||||
een waterslag onder ramen (`WallModel.build3D`).
|
||||
- **Plafond:** in de afgewerkte fase is de onderkant van het dak
|
||||
geschilderd in de plafondkleur (Binnen › Wanden › Plafond), zolang
|
||||
"Geschilderd" aan staat; anders kale OSB.
|
||||
- **Dakvorm/wandhoogte:** per unit een dakvorm (Unit › Dakvorm: plat,
|
||||
lessenaar, zadel, mansarde of wolfsdak, met schuiven en hellingshoek).
|
||||
Daaruit volgen de wanden: de kopgevels krijgen de daklijn (bij mansarde
|
||||
@@ -98,6 +114,22 @@ assets/ logo, texturen, skybox
|
||||
bovenkant vloer tot onderkant dak), unit max 4,3 x 14 m. Platte daken van verschillende hoogte krijgen elk hun eigen
|
||||
boeideel (versprongen, het lage loopt door tot onder het hoge). Wijzig je een
|
||||
wandhoogte in de wand-editor, dan geldt dezelfde regel vanuit die wand.
|
||||
De daklijn van een wand hoort bij de wand zonder naden: loopt een wand
|
||||
door een naad langer door (bijv. de kopgevel naast een gekoppelde unit),
|
||||
dan blijven nok en knikken op hun plaats (`UnitModel.topLineOn`).
|
||||
- **Overkapping:** bij een dak over de hele woning met `cover` loopt het
|
||||
dak door tot de omhullende rechthoek waar geen unit staat (bijv. een
|
||||
terras naast een kortere module), met een afgewerkte onderplaat in de
|
||||
kleur van het boeideel (`HouseModel.coverExtensions`).
|
||||
- **Dak over de hele woning:** tabblad Dak › "Over hele woning": één
|
||||
dakvorm (zelfde invoer als per unit) over de omhullende rechthoek van alle
|
||||
units; een wolfsdak alleen bij een rechthoek (bij een L-/T-vorm zouden
|
||||
de wolfseinden kilkepers vragen, dan wordt het een zadeldak), bijv. een
|
||||
grote wolfskap over twee units naast elkaar. Elke unit
|
||||
houdt zijn eigen dakdeel (dekken, bovenste deel van het wolfsdak geknipt
|
||||
op de unit, PDF-bladen, kosten); de wanden van alle units volgen het
|
||||
woningdak. De daken per unit blijven bewaard (`roof.unitWalls`) en komen
|
||||
terug als je het weer uitzet.
|
||||
- **Vloer:** balken, cirkelvormige doorvoeren, OSB, optioneel chassis;
|
||||
in de woning een vloerafwerking (textuur, bijv. visgraat).
|
||||
- **Woning:** units koppelen aan een zijde (uitlijning + verschuiving); op
|
||||
@@ -124,13 +156,44 @@ assets/ logo, texturen, skybox
|
||||
zonder spots). De rand van het lage dak loopt dan door tot de gevel van
|
||||
het hoge, of langs een zijgevel tot de volle overstek (onder de hoge
|
||||
rand). Boeideel en daktrim steken 80 mm boven het dakleer uit.
|
||||
- **Gevel:** gevelbekleding per woning, met override per wand: rabat
|
||||
(vochtdoek + kruislat + rabat 12 mm, kleur per woning, getekend als
|
||||
plankentextuur die over naden doorloopt) of steen (181 texturen). Steen is overal een
|
||||
- **Gevel:** gevelbekleding per woning, met override per wand en per
|
||||
wandstuk: rabat (vochtdoek + kruislat + rabat 12 mm, kleur per woning,
|
||||
getekend als plankentextuur die over naden doorloopt), steen (181
|
||||
texturen) of stucwerk (pleisterlaag 15 mm op cement-gebonden plaat, kleur
|
||||
per woning, `WallModel.STUC`). Een zijde kan gesplitst worden (wand ›
|
||||
Wandstukken › Splitsen op, gemeten vanaf de linker vloerhoek van buitenaf):
|
||||
elk stuk wordt een eigen wand-element en kan een eigen gevel krijgen
|
||||
(bijv. stuc links, hout rechts). Steen is overal een
|
||||
steenstrip op een wit isolatieblok, samen 110 mm (`WallModel.STONE`).
|
||||
Het trasraam (cementplaat of een eigen steen) komt onder beide, dus
|
||||
twee stenen kan. Latwerk, doek en metselwerk lopen per gevel door over
|
||||
unit-naden. Sandwichpanelen rondom, 600 mm de grond in.
|
||||
- **Ruimtes** (`room/room-model.js`): elk door wanden afgesloten gebied is
|
||||
een ruimte, bepaald als een verfemmer: alles wat bereikbaar is zonder door
|
||||
een wand te gaan (deuren en ramen tellen als wand). Exact op het raster van
|
||||
de wandvlakken, dus de netto vloer tot op de mm; kiertjes tot 30 mm tussen
|
||||
wanden worden dichtgezet. Gereedschap *Ruimte vullen* (Start/Binnen): kies
|
||||
een functie (woonkamer, keuken, slaapkamer, badkamer, toilet, hal, ...) en
|
||||
klik in de plattegrond; of selecteer een gebied en kies daar de functie
|
||||
(nog eens klikken = de unit eronder). Per ruimte: naam, vloerafwerking
|
||||
(o.a. tegels), FIBO-wandpanelen (decor, tot een hoogte of tot het plafond),
|
||||
eigen verfkleur en een vals plafond op een vaste hoogte (alleen waar het
|
||||
dak hoger ligt; wandafwerking en binnenspots volgen). Laag in de
|
||||
plattegrond (Beeld › Tonen: Ruimtes), label met netto m², in de structuur,
|
||||
het rapport, de kosten (vals plafond, FIBO) en op de PDF-plattegrond met
|
||||
een ruimtestaat. Het zaadpunt hoort bij een unit en schuift mee.
|
||||
- **Inrichting** (`interior/fixture-model.js`): zwevend toilet (wandcloset
|
||||
aan een voorzetwand), fontein, badmeubel met spiegel, inloopdouche
|
||||
(douchegoot, glaswand, regendouche), keukenblok (spoelbak, hoge kast met
|
||||
koelkast en oven, vaatwasser, bovenkasten), kookeiland met inductieplaat,
|
||||
kledingkast, bed, eettafel met stoelen, bank met chaise longue, fauteuil,
|
||||
salontafel, tv-meubel, boiler en wasmachine. Binnen › Inrichting: kies
|
||||
een stuk en klik in de plattegrond; slepen, bij een wand snapt de rug op
|
||||
het wandvlak (Alt = vrij), D = draaien, Del = verwijderen. Per stuk maten
|
||||
en opties (front, plek spoelbak, glaswand links/rechts, ...). In 2D, 3D
|
||||
(afgewerkte fase), de PDF-plattegrond, de structuur en de kosten (groep
|
||||
Inrichting; los meubilair telt niet mee). Het stuk hoort bij een unit en
|
||||
schuift mee.
|
||||
- **Verlichting:** boeideel-spots of gevellampen (per gevel verdeeld,
|
||||
override per wand) en binnenspots in een raster per unit.
|
||||
- **Ribbon** (`core/ribbon.js`, vervangt de menubalk): Bestand · Start ·
|
||||
@@ -152,6 +215,49 @@ assets/ logo, texturen, skybox
|
||||
noord/oost/zuid/west als vlakke render met legenda afwerking, plattegrond,
|
||||
vloeren, wandstukken, binnenwanden, totalen).
|
||||
|
||||
## Kosten en prijzen (CSV)
|
||||
|
||||
Alle waarden van het kostenmodel staan in twee CSV-bestanden in `kosten/`, die
|
||||
de app bij het starten ophaalt. Elke waarde staat op één plek; de CSV's zijn
|
||||
leidend en de app bewaart niets in de browser.
|
||||
|
||||
- `kosten/intern.csv`: eigen waarden: tijden, uurloon, bezetting, kosten per
|
||||
uur, opslagen, marge (alles behalve prijzen).
|
||||
- `kosten/leveranciers.csv`: alle inkoopprijzen (bijv. uit API-scripts van
|
||||
leveranciers), ook constructiehout per balkmaat.
|
||||
- `js/cost/cost-defaults.js`: welke posten er zijn (labels, eenheden, keuzes)
|
||||
en noodwaarden voor wat een CSV mist.
|
||||
|
||||
```
|
||||
# intern.csv
|
||||
code;omschrijving;eenheid;waarde
|
||||
arbeid.uurloon;Uurloon productie (all-in);€/u;45
|
||||
zagen.methode;Zaagmethode;;robot
|
||||
|
||||
# leveranciers.csv
|
||||
code;omschrijving;eenheid;prijs;leverancier;artikelnummer;bijgewerkt
|
||||
elektra.wcdEnkel;Wandcontactdoos enkel met randaarde;€/st.;6,00;Groothandel X;123456;2026-10-09
|
||||
hout.balk.38x235;Constructiehout vuren C24 38×235;€/m;4,91;Houthandel Y;;2026-10-09
|
||||
```
|
||||
|
||||
- Verplicht: `code` en `waarde` (of `prijs`), excl. btw; `6,00`, `6.00`,
|
||||
`1.234,50` en `€ 6` mogen; bij een keuze de sleutel of de tekst.
|
||||
Scheidingsteken `;`, `,` of tab; regels met `#` worden overgeslagen.
|
||||
- `code` = `<groep>.<sleutel>` uit `cost-defaults.js`, of `hout.balk.<b>x<h>`
|
||||
voor constructiehout per balkmaat in €/m (zonder balkmaat: m³-prijs × volume).
|
||||
- `omschrijving` is de naam van de post in de app (leeg = die uit `cost-defaults.js`).
|
||||
- `eenheid` is optioneel; ingevuld moet die gelijk zijn aan die van de post,
|
||||
anders wordt de regel geweigerd.
|
||||
- Een prijs in intern.csv of een tijd in leveranciers.csv wordt geweigerd
|
||||
("hoort in …"). Meerdere regels met dezelfde code in leveranciers.csv
|
||||
(leveranciers): de laagste prijs telt.
|
||||
- Onbekende codes (bijv. onderdelen die de app nog niet rekent) en fouten staan
|
||||
bovenaan in Kosten & tijden.
|
||||
- Kosten & tijden: **Toepassen** geldt tot herladen (om te proberen);
|
||||
**intern.csv downloaden** om het bestand in `kosten/` te vervangen.
|
||||
Prijsvelden staan vast. Bij Leveranciers: **Sjabloon** (alle prijscodes),
|
||||
**Tijdelijk laden** (tot herladen of **Terug naar server**).
|
||||
|
||||
## Bekende beperkingen
|
||||
|
||||
- Tijdelijk (verwijderen voor productie): zaagmachine-overzicht (zaagmeters bij
|
||||
@@ -159,7 +265,16 @@ assets/ logo, texturen, skybox
|
||||
- Tijdelijk: een nieuwe woning is het voorbeeldontwerp "Vlinderwoning"
|
||||
(92 m², drie units, vlinderdak met riet + platte tuinkamer, ook als
|
||||
`json/premade/vlinderwoning.json`); uit te zetten met `TEST_DEFAULT` in
|
||||
`js/house/house-model.js`.
|
||||
`js/house/house-model.js`. Bij het starten opent model **Amstel**
|
||||
(`HouseModel.createAmstel`, naar `examples/ontwerp_amstel.pdf`): 11,24 ×
|
||||
7,2 m, twee modules onder één plat dak dat over het terras doorloopt,
|
||||
stucwerk wit met verticaal hout aan de slaapkamerkant, binnenwanden,
|
||||
dubbele schuifdeur tussen woonkamer en hal, en complete inrichting.
|
||||
Langer maken: beide units breder (alles is vanaf de westgevel gemaat).
|
||||
Ook via Bestand › Woning Amstel. De L-woning (8 × 3,6 m + 4,5 × 3,6 m)
|
||||
blijft beschikbaar als "Woning L-vorm".
|
||||
- Netto m² per ruimte telt de hele vloer, ook onder een laag schuin dak
|
||||
(geen NEN 2580-correctie voor hoogte < 1,5 m).
|
||||
- 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).
|
||||
|
||||
Reference in New Issue
Block a user