Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e1a688728c | ||
|
|
8cdfa21f46 | ||
|
|
23bfe153a2 | ||
|
|
12c2579471 | ||
|
|
7d91416004 | ||
|
|
94a5215f82 |
@@ -18,15 +18,16 @@ build-stap. Direct openen via `file://` werkt niet (texturen/lucht).
|
||||
## Structuur
|
||||
|
||||
```
|
||||
index.html app-shell: menubalk, splashscreen
|
||||
index.html app-shell: ribbon, 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/core/ gedeelde helpers: geometrie, bouwfasen, ribbon, 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/elektra/ ElektraModel + ElektraPdf: meterkast, schakelaars (letters), wcd, groepen, leidingen
|
||||
js/sandwich/ SandwichModel: sandwichpanelen rondom
|
||||
js/unit/ UnitModel: 1 vloer + 4 wanden, naden, wandstukken
|
||||
js/house/ HouseModel (woning) + woning-PDF + woning-editor
|
||||
@@ -44,6 +45,15 @@ assets/ logo, texturen, skybox
|
||||
- **Assen/zijden.** Bovenaanzicht boven = noord: voor = noord, achter = zuid,
|
||||
links = west, rechts = oost (interne sleutels blijven voor/achter/…).
|
||||
- **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
|
||||
|
||||
@@ -52,36 +62,97 @@ assets/ logo, texturen, skybox
|
||||
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.
|
||||
- **Elektra** (`elektra/`): meterkast (3×25 A) bij de voordeur, schakelaars
|
||||
met letter (A binnen, B buiten, per unit een eigen; dezelfde letter bij de
|
||||
lampen erop), dubbele wcd's per unit, apparaten met eigen groep (kookgroep
|
||||
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.
|
||||
Alles verplaatsbaar door te slepen in de plattegrond.
|
||||
- **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
|
||||
opening), kleur buiten en binnen (wit, grijs, antraciet, zwart). Volgt de
|
||||
maat van de opening, ook een schuine bovenzijde.
|
||||
- **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.
|
||||
- **Vloer:** balken, cirkelvormige doorvoeren, OSB, optioneel chassis;
|
||||
in de woning een vloerafwerking (textuur, bijv. visgraat).
|
||||
- **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.
|
||||
A of B. De hoogte volgt per deel de daklijn van zijn unit. Staat een unit
|
||||
met een hogere daklijn tegen een lager dak, dan krijgt zijn buitenwand aan
|
||||
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.
|
||||
- **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
|
||||
PDF-blad; doorvoeren gaan naar het vlak waarin ze vallen. Bedekking per
|
||||
unit: dakleer, of bij een hellend dak riet (180 mm, 3,8 kg/m²); de
|
||||
dakrand schuift dan mee omhoog. 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.
|
||||
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
|
||||
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.
|
||||
- **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,
|
||||
- **Ribbon** (`core/ribbon.js`, vervangt de menubalk): Bestand · Start ·
|
||||
Gevel · Dak · Binnen · Constructie · Verlichting · Rapport · Beeld · Extra,
|
||||
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).
|
||||
|
||||
## 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`.
|
||||
- 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).
|
||||
|
||||
@@ -3,3 +3,10 @@ Assets voor de 3D-weergave en de PDF:
|
||||
- skybox.webp equirectangulair panorama dag (4096x2048), "Lucht: Dag" (core/skybox.js)
|
||||
- skybox-night.webp equirectangulair panorama nacht (4096x2048), "Lucht: Nacht"
|
||||
- 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
|
||||
- audio/five-armies.mp3 soundtrack easter egg (Ctrl+Shift+Alt+L shooter; core/granny-kit.js):
|
||||
"Five Armies" Kevin MacLeod (incompetech.com), licensed under
|
||||
Creative Commons: By Attribution 4.0 — https://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
|
After Width: | Height: | Size: 523 KiB |
|
After Width: | Height: | Size: 715 KiB |
|
After Width: | Height: | Size: 698 KiB |
|
After Width: | Height: | Size: 753 KiB |
|
After Width: | Height: | Size: 598 KiB |
|
After Width: | Height: | Size: 909 KiB |
|
After Width: | Height: | Size: 711 KiB |
|
After Width: | Height: | Size: 786 KiB |
|
After Width: | Height: | Size: 936 KiB |
|
After Width: | Height: | Size: 656 KiB |
|
After Width: | Height: | Size: 723 KiB |
|
After Width: | Height: | Size: 743 KiB |
|
After Width: | Height: | Size: 813 KiB |
|
After Width: | Height: | Size: 749 KiB |
|
After Width: | Height: | Size: 837 KiB |
|
After Width: | Height: | Size: 981 KiB |
|
After Width: | Height: | Size: 709 KiB |
|
After Width: | Height: | Size: 708 KiB |
|
After Width: | Height: | Size: 798 KiB |
|
After Width: | Height: | Size: 831 KiB |
|
After Width: | Height: | Size: 636 KiB |
|
After Width: | Height: | Size: 548 KiB |
|
After Width: | Height: | Size: 762 KiB |
|
After Width: | Height: | Size: 452 KiB |
|
After Width: | Height: | Size: 887 KiB |
|
After Width: | Height: | Size: 759 KiB |
|
After Width: | Height: | Size: 470 KiB |
|
After Width: | Height: | Size: 645 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 904 KiB |
|
After Width: | Height: | Size: 462 KiB |
|
After Width: | Height: | Size: 813 KiB |
|
After Width: | Height: | Size: 925 KiB |
|
After Width: | Height: | Size: 860 KiB |
|
After Width: | Height: | Size: 865 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 924 KiB |
|
After Width: | Height: | Size: 582 KiB |
|
After Width: | Height: | Size: 835 KiB |
|
After Width: | Height: | Size: 905 KiB |
|
After Width: | Height: | Size: 981 KiB |
|
After Width: | Height: | Size: 787 KiB |
|
After Width: | Height: | Size: 556 KiB |
|
After Width: | Height: | Size: 576 KiB |
|
After Width: | Height: | Size: 505 KiB |
|
After Width: | Height: | Size: 494 KiB |
|
After Width: | Height: | Size: 523 KiB |
|
After Width: | Height: | Size: 538 KiB |
|
After Width: | Height: | Size: 598 KiB |
|
After Width: | Height: | Size: 537 KiB |
|
After Width: | Height: | Size: 772 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 957 KiB |
|
After Width: | Height: | Size: 736 KiB |
|
After Width: | Height: | Size: 459 KiB |
|
After Width: | Height: | Size: 528 KiB |
|
After Width: | Height: | Size: 534 KiB |
|
After Width: | Height: | Size: 846 KiB |
|
After Width: | Height: | Size: 853 KiB |
|
After Width: | Height: | Size: 536 KiB |
|
After Width: | Height: | Size: 562 KiB |
|
After Width: | Height: | Size: 642 KiB |
|
After Width: | Height: | Size: 637 KiB |
|
After Width: | Height: | Size: 941 KiB |
|
After Width: | Height: | Size: 767 KiB |
|
After Width: | Height: | Size: 801 KiB |
|
After Width: | Height: | Size: 924 KiB |
|
After Width: | Height: | Size: 616 KiB |
|
After Width: | Height: | Size: 591 KiB |
|
After Width: | Height: | Size: 647 KiB |
|
After Width: | Height: | Size: 761 KiB |
|
After Width: | Height: | Size: 666 KiB |
|
After Width: | Height: | Size: 630 KiB |
|
After Width: | Height: | Size: 633 KiB |
|
After Width: | Height: | Size: 644 KiB |
|
After Width: | Height: | Size: 570 KiB |
|
After Width: | Height: | Size: 601 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 896 KiB |
|
After Width: | Height: | Size: 746 KiB |
|
After Width: | Height: | Size: 871 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 830 KiB |
|
After Width: | Height: | Size: 883 KiB |
|
After Width: | Height: | Size: 914 KiB |
|
After Width: | Height: | Size: 958 KiB |
|
After Width: | Height: | Size: 809 KiB |
|
After Width: | Height: | Size: 976 KiB |
|
After Width: | Height: | Size: 905 KiB |
|
After Width: | Height: | Size: 979 KiB |
|
After Width: | Height: | Size: 907 KiB |
|
After Width: | Height: | Size: 990 KiB |
|
After Width: | Height: | Size: 935 KiB |
|
After Width: | Height: | Size: 920 KiB |
|
After Width: | Height: | Size: 771 KiB |
|
After Width: | Height: | Size: 960 KiB |
|
After Width: | Height: | Size: 884 KiB |