8 Commits
Author SHA1 Message Date
MachielandClaude Opus 5.5 ceda0b554d 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>
2026-10-11 00:34:27 +02:00
MachielandClaude Opus 5.5 b5510d56c7 v0.5.3: elektra-buizen min. 50 mm uit elkaar (gebundeld alleen naar de meterkast), vloer-wcd met leiding door de vloer, elektra op de PDF-bladen per wand/vloer/dakvlak, kosten elektra (buis + draad per meter, boorgaten 90 s geteld op stijlen/regels/balken, dozen, groepenkast, keuring), dakbeschot OSB 18 mm bovenop de sporen, felsplaten als dakbedekking
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 20:54:49 +02:00
MachielandClaude Opus 5.5 e1a688728c v0.5.2: elektra (meterkast 3×25 A, schakelaars met letters op hun lampen, wcd, apparaatgroepen incl. perilex, groepenverklaring met fasen/aardlek, leidingen naar de meterkast met strekkende meters per type, PDF-blad + plattegrond, verplaatsbaar door slepen, bouwfase Elektra met installatiebuizen in 3D); ribbon, bouwfasen, kozijnen, kostenmodel en eerdere ongecommitte wijzigingen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 18:40:11 +02:00
MachielandClaude Opus 5.5 8cdfa21f46 v0.4.17: openingen met schuine bovenzijde (hoogte links/rechts, volg dakhelling), 9 sleeppunten in het vooraanzicht; regelwerk, beplating, doek, steen en latwerk volgen de schuinte (columnMinusRects met schuine uitsparingen)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 20:01:54 +02:00
MachielandClaude Opus 5.5 23bfe153a2 v0.4.16: PDF-aanzichten (vlakke render) met legenda afwerking en afmetingen, zaaglijst/zaagmachine eigen blad, infopaneel afmetingen, lopen (Shift+T) met camera-menu, zachter licht, naadwanden volgen koppeling, boeideel over de gevel (gevel tot bovenkant dak), thumbnails riet/vloer
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 22:29:57 +02:00
MachielandClaude Opus 5.5 12c2579471 v0.4.15: gevelbekleding per woning (rabat/steen, override per wand), stenen trasraam (110 mm, 181 texturen), riet per unit, vloerafwerking, verfkleur binnen, boeideelkleur, gevel tot onder dakrand, binnenhoek-fixes; testontwerp als standaard
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 19:47:49 +02:00
MachielandClaude Opus 5.5 7d91416004 v0.4.14: schuin dak met loodrechte kopse kanten, import met naadwanden, weergave Vloerplan
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 17:24:38 +02:00
MachielandClaude Opus 5.5 94a5215f82 v0.4.13: opbouw buitenwand boven lager dak, latwerk-raster per gevel, dakrand 80 mm boven dakleer, lage rand loopt door
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 15:33:47 +02:00
783 changed files with 10930 additions and 2458 deletions
+210 -17
View File
@@ -18,20 +18,25 @@ build-stap. Direct openen via `file://` werkt niet (texturen/lucht).
## Structuur ## Structuur
``` ```
index.html app-shell: menubalk, splashscreen index.html app-shell: ribbon, splashscreen
css/app.css alle stijl css/app.css alle stijl
js/vendor/ three.js r128, eigen OrbitControls, jsPDF js/vendor/ three.js r128, eigen OrbitControls, jsPDF
js/core/ gedeelde helpers: geometrie, UI-kit, PDF-bladen, labels, js/core/ gedeelde helpers: geometrie, bouwfasen, ribbon, UI-kit, PDF-bladen,
camerageheugen, weergavefilter, skybox, licentie, logo labels, camerageheugen, weergavefilter, skybox, licentie, logo
js/wall/ WallModel (logica) + wand-PDF + wand-editor js/wall/ WallModel (logica) + wand-PDF + wand-editor
js/floor/ FloorModel (logica) + vloer-PDF + vloer-editor js/floor/ FloorModel (logica) + vloer-PDF + vloer-editor
js/roof/ RoofModel: dak (plat/lessenaar/zadel) + dakrand (boeidelen/daktrim) js/roof/ RoofModel: dak (plat/lessenaar/zadel) + dakrand (boeidelen/daktrim)
js/lighting/ LightingModel: gevellampen, boeideel-spots, binnenspots js/lighting/ LightingModel: gevellampen, boeideel-spots, binnenspots
js/elektra/ ElektraModel + ElektraPdf: meterkast, schakelaars (letters), wcd, groepen, leidingen
js/sandwich/ SandwichModel: sandwichpanelen rondom 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/unit/ UnitModel: 1 vloer + 4 wanden, naden, wandstukken
js/house/ HouseModel (woning) + woning-PDF + woning-editor 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 js/app.js menubalk, versienummer, actieve editor
json/defaults/ referentie-JSON's (niet runtime ingeladen) 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 assets/ logo, texturen, skybox
``` ```
@@ -44,6 +49,15 @@ assets/ logo, texturen, skybox
- **Assen/zijden.** Bovenaanzicht boven = noord: voor = noord, achter = zuid, - **Assen/zijden.** Bovenaanzicht boven = noord: voor = noord, achter = zuid,
links = west, rechts = oost (interne sleutels blijven voor/achter/…). links = west, rechts = oost (interne sleutels blijven voor/achter/…).
- **Hoogtes** gelden vanaf bovenkant vloer (loopvlak). - **Hoogtes** gelden vanaf bovenkant vloer (loopvlak).
- **Bouwfasen** (`BuildStages`): regelwerk → elektra (buizen, dozen, meterkast) → beplating → vochtdoek →
latwerk → gevel & dak → afgewerkt, de volgorde in de hal. De 3D toont de
gekozen fase; lagen die daarin aan beide zijden zijn ingesloten worden niet
gebouwd (stijlen tussen spaanplaat en doek, latten en doek achter de rabat,
sporen tussen plafond en dakbedekking). Specificaties en totalen rekenen
altijd met alle lagen.
- **Invoer volgt de logica:** de dakvorm is een eigenschap van de unit
(plat/lessenaar/zadel, richting, goot- en nokhoogte of helling); de
wanden volgen.
## Functionaliteit ## Functionaliteit
@@ -52,36 +66,215 @@ assets/ logo, texturen, skybox
38x235 met dubbele hoekstijlen en een dubbele stijl naast deuren, zaagplan 38x235 met dubbele hoekstijlen en een dubbele stijl naast deuren, zaagplan
op handelslengtes, spaanplaat binnen, vochtdoek (met kruislat en trasraam) op handelslengtes, spaanplaat binnen, vochtdoek (met kruislat en trasraam)
of cementplaat buiten. of cementplaat buiten.
- **Wandhoogte:** schuine bovenrand of middenpunt (nok) met goothoogtes. In - **Elektra** (`elektra/`): meterkast (3×25 A) bij de voordeur, schakelaars
een unit bepaalt de laatst gewijzigde wand de dakvorm: de tegenoverliggende met letter (A binnen, B buiten, per unit een eigen; dezelfde letter bij de
wand spiegelt mee, de haakse wanden worden vlak op de hoekhoogtes. lampen erop), dubbele wcd's per unit, apparaten met eigen groep (kookgroep
- **Vloer:** balken, cirkelvormige doorvoeren, OSB, optioneel chassis. perilex, wasmachine, droger, warmtepomp, optioneel oven/vaatwasser).
Groepenverklaring met fasen en aardlekschakelaars, leidingen via stijlen
en plafond naar de meterkast (strekkende meters per type, draad, buis,
steekverbinders op module-naden), materiaallijst en eigen PDF-blad.
Buizen minstens 50 mm uit elkaar (gebundeld alleen het laatste stuk naar
de meterkast). Vloer-wcd's met leiding door de vloer. Elektra ook op de
PDF-bladen per wand, vloer en dakvlak (plafond). Alles verplaatsbaar door
te slepen in de plattegrond. Kosten (groep Elektra): buis + draad per
meter, boorgaten (geteld op stijlen, regels en balken), dozen,
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 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. 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
met twee knikken, bij een wolfsdak afgeknot op het wolfseind, met
daarboven driehoekige wolfseinden met de dakhelling tot de nok, met een
rechte nok ertussen), de haakse wanden staan vlak op de goothoogte. Het
bovenste deel van een wolfsdak is gewoon houtwerk: sporen, hoekkepers,
nokbalk en kopbalken (ook in zaaglijst, specificaties en kosten).
Goot en nok gelden over de volle vloermaat (goot boven de buitenkant van
de gevel); staat de kopgevel tussen de haakse wanden, dan loopt zijn
daklijn daar precies op aan. Knik en wolfseind schalen mee met goot en
nok (verhouding). Bij een knik (mansarde) sluiten de dakvlakken in
verstek aan. De PDF heeft voor een wolfsdak een eigen blad met het
bovenste deel (bovenaanzicht houtwerk + stuklijst).
Grenzen (`UnitModel.LIMITS`): nok max 5 m, goot / plat dak max 3 m (vanaf
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 - **Woning:** units koppelen aan een zijde (uitlijning + verschuiving); op
naden vervallen de buitenwanden en komt een naadwand met deur: midden 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 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 A of B. De hoogte volgt per deel de daklijn van zijn unit. Staat een unit
boven het dak van de andere unit uit, dan krijgt dat stuk buitenafwerking met een hogere daklijn tegen een lager dak, dan krijgt zijn buitenwand aan
(vochtdoek + latwerk) die met de gevel meeloopt. de naadzijde een opbouw vanaf de bovenkant van het lage dak (ramen daar
teken je op die buitenwand) en stopt de naadwand op die hoogte. Loopt het
lage dak langs de naad schuin, dan loopt de naadwand door en krijgt het
uitstekende stuk buitenafwerking (vochtdoek + latwerk).
Binnenwanden teken je in de plattegrond. Binnenwanden teken je in de plattegrond.
- **Dak:** per unit opgebouwd als gespiegelde vloer + dakleer, in de vorm - **Dak:** per unit opgebouwd als gespiegelde vloer + dakleer, in de vorm
die de wanden aangeven: plat, lessenaar (schuine kopgevels) of zadel 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 (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 PDF-blad; doorvoeren gaan naar het vlak waarin ze vallen. Opbouw:
plafondplaat (OSB) binnen, sporen, dakbeschot (OSB 18 mm) bovenop en
daarop de bedekking per unit: dakleer, of bij een hellend dak riet
(180 mm, 3,8 kg/m²) of felsplaten (staande naad, zink/antraciet/zwart);
de dakrand schuift dan mee omhoog. De dakrand
(boeidelen/daktrim, spots) loopt als één rand door en volgt de helling. (boeidelen/daktrim, spots) loopt als één rand door en volgt de helling.
Is een dak langs de naad minstens een boeideelhoogte hoger dan het Is een dak langs de naad minstens een boeideelhoogte hoger dan het
aangrenzende, dan krijgt het een eigen rand rondom (boven het lage dak 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. zonder spots). De rand van het lage dak loopt dan door tot de gevel van
- **Gevel:** latwerk en vochtdoek lopen per gevel door over unit-naden; het hoge, of langs een zijgevel tot de volle overstek (onder de hoge
sandwichpanelen rondom, 600 mm de grond in. rand). Boeideel en daktrim steken 80 mm boven het dakleer uit.
- **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, - **Verlichting:** boeideel-spots of gevellampen (per gevel verdeeld,
override per wand) en binnenspots in een raster per unit. override per wand) en binnenspots in een raster per unit.
- **3D:** weergavefilters, omgeving Ontwerp/Dag/Nacht, Render met lampen als - **Ribbon** (`core/ribbon.js`, vervangt de menubalk): Bestand · Start ·
echte lichtbronnen. Gevel · Dak · Binnen · Constructie · Verlichting · Rapport · Beeld · Extra,
- **Uitvoer:** JSON opslaan/openen en een samenhangende PDF (plattegrond, plus een gekleurd tabblad voor de selectie (unit, wandstuk, binnenwand of
naadwand) dat vanzelf opent. Velden staan in groepen naast elkaar, met
schuiven voor maten met een logisch bereik. Dubbelklik op een tabblad
klapt de ribbon in. Plattegrond en 3D gebruiken de volle breedte; tabblad
Rapport toont het rapport (transport per unit, gewicht, afmetingen,
kosten, hout, plaatwerk, met staafdiagrammen) in plaats van de plattegrond.
- **3D:** schuif Bouwfase linksonder; Beeld › Tonen: Dak/Lampen; Beeld ›
Doorsnede (wanden afgesneden op een instelbare hoogte, schuif in de ribbon
en onder de 3D, snede wit afgedekt), binnenzijde in een
verfkleur (afgewerkte fase), omgeving Ontwerp/Dag/Nacht, Render met lampen
als echte lichtbronnen.
- **Transport:** per unit buitenmaat (incl. gevelafwerking), hoogte en
gewicht (vloer/wanden/dak) met een indicatieve breedteklasse.
- **Uitvoer:** JSON opslaan/openen en een samenhangende PDF (aanzichten
noord/oost/zuid/west als vlakke render met legenda afwerking, plattegrond,
vloeren, wandstukken, binnenwanden, totalen). 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 ## Bekende beperkingen
- Tijdelijk (verwijderen voor productie): zaagmachine-overzicht (zaagmeters bij
2400 m/u, zaagsneden, hoeken) in de app en op het totalenblad (`SAW_M_PER_H`).
- 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`. 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. - Units kunnen niet gedraaid worden.
- Getekende binnenwanden volgen de dakvorm (nog) niet. - Getekende binnenwanden volgen de dakvorm (nog) niet.
- De dak-editor toont het dek in de plattegrond (niet per schuin dakvlak). - De dak-editor toont het dek in de plattegrond (niet per schuin dakvlak).
+4
View File
@@ -3,3 +3,7 @@ Assets voor de 3D-weergave en de PDF:
- skybox.webp equirectangulair panorama dag (4096x2048), "Lucht: Dag" (core/skybox.js) - skybox.webp equirectangulair panorama dag (4096x2048), "Lucht: Dag" (core/skybox.js)
- skybox-night.webp equirectangulair panorama nacht (4096x2048), "Lucht: Nacht" - skybox-night.webp equirectangulair panorama nacht (4096x2048), "Lucht: Nacht"
- tiles.jpg tegeltextuur (1024x1024) voor de ronde vloer onder het object - tiles.jpg tegeltextuur (1024x1024) voor de ronde vloer onder het object
- textures/buitenmuur/ steen voor het trasraam: "<code> - Witte voeg.jpg" (2062x1125, 2 mm/px,
naadloos), voorvertoning in thumb/32|64|128/*.png (WallModel.TRASRAAM_STONES)
- textures/vloer/ vloerafwerking (FloorModel.FINISHES), bijv. visgraat_001.jpg (1500x1500, tegel 3 m); thumb/32|64|128/*.png
- textures/dak/ dakbedekking: riet_<nr>.jpg (1024x1024, tegel 1 m); nummers in RoofModel RIET.nrs; thumb/32|64|128/*.png
Binary file not shown.

After

Width:  |  Height:  |  Size: 523 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 909 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 711 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 786 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 936 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 743 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 813 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 749 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 837 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 981 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 709 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 831 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 636 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 887 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 759 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 904 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 813 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 925 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 860 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 865 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 924 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 835 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 981 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 787 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 556 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 523 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 772 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 957 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 736 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 853 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 536 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 941 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 767 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 801 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 924 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 761 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 666 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 633 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 644 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 896 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 871 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 830 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 883 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 914 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 958 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 809 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 976 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 979 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 907 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 990 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 935 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 920 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 771 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 960 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 767 KiB

Some files were not shown because too many files have changed in this diff Show More