v0.4.9: naadwanden (2 delen, deur), kopbalken op naden, isolatie niet meer getekend

- HouseModel: naadwand per naad (ensureSeamWalls bij nieuwe woning en unit toevoegen),
  twee delen met beplating alleen aan de kamerzijde, openingen gespiegeld
- WallModel: buitenzijde 'geen', thicknessOf eenzijdig
- FloorModel: kopbalken (rims) voor vloer en dak op naden, ook in PDF en totalen
- isolatie: 3D-lagen en filter verwijderd, berekening blijft

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Machiel
2026-09-30 13:13:07 +02:00
co-authored by Claude Opus 5.5
parent f163f4deb1
commit 9bd7faeaa6
11 changed files with 271 additions and 124 deletions
+14 -2
View File
@@ -46,8 +46,15 @@ window.FloorPdf = (() => {
doc.setLineWidth(0.15);
doc.line(tblX[0], ty, tblX[4] + 12, ty);
ty += 4;
[String(1), String(joistW), String(joistH), String(Math.round(depth)), String(joists.length)]
const rims = calcData.rims || {}, joistLen = calcData.joistLen || depth;
const rimCount = (rims.front ? 1 : 0) + (rims.back ? 1 : 0);
[String(1), String(joistW), String(joistH), String(Math.round(joistLen)), String(joists.length)]
.forEach((v, i) => doc.text(v, tblX[i], ty));
if (rimCount) {
ty += 4.3; // kopbalk(en) op een naad (FloorModel.computeFrame)
[String(2), String(joistW), String(joistH), String(Math.round(width)), String(rimCount)]
.forEach((v, i) => doc.text(v, tblX[i], ty));
}
// --- Plaatmateriaal + isolatie ---
let my = 240;
@@ -89,11 +96,16 @@ window.FloorPdf = (() => {
doc.setLineWidth(0.3);
doc.setTextColor(...BLACK);
doc.setFontSize(5);
const jz0 = rims.front ? joistW : 0;
joists.forEach(x => {
const xLeft = x + width / 2 - joistW / 2;
doc.rect(px(xLeft), py(0), joistW * scale, depth * scale, 'S');
doc.rect(px(xLeft), py(jz0), joistW * scale, joistLen * scale, 'S');
doc.text('1', px(xLeft + joistW / 2), py(depth / 2), { align: 'center' });
});
[['front', 0], ['back', depth - joistW]].filter(([k]) => rims[k]).forEach(([, z]) => {
doc.rect(px(0), py(z), width * scale, joistW * scale, 'S');
doc.text('2', px(width / 2), py(z + joistW / 2) + 1.2, { align: 'center' });
});
doc.setDrawColor(...RED);
doc.setLineWidth(0.2);