Hent mye mer ut av IFC-modellen
Energirapporter / rapporter (release) Successful in 57s
Release enok / bygg (release) Successful in 1m8s
test / test (push) Successful in 1m16s

Modellen for Nordhusstykket 5 viste seg å inneholde langt mer enn importen brukte.

Etasjer
- IfcBuildingStorey med høyde og navn, og tilknytningen av rom og bygningsdeler, sier
  hva som er hva. Etasjen «Kjeller» ligger 2,35 m under referansenivået.
- En etasje under terreng settes nå opp som en egen uoppvarmet sone med sine egne
  vegger og gulv, og dekket over blir grensen mot den oppvarmede delen.
- Oppvarmet BRA er rommene i etasjene over terreng. Rom som heter kott, bod, loft
  eller garasje blir flagget, siden de sjelden er oppvarmet.
- Et dekke kan bare ligge mot grunnen i nederste etasje. Før ble etasjeskillere høyere
  opp regnet som gulv mot grunn.

Egenskaper
- Byggeår, bygningskategori, kommune, lekkasjetall, ventilasjonstype, varmegjenvinning,
  varmekilde og oppvarmet BRA leses fra et hvilket som helst egenskapssett på bygningen,
  tomta eller prosjektet, på norsk eller engelsk. Da kan et postformat i BIM-verktøyet
  bære de opplysningene IFC ikke har noen fast plass til.
- Modellen viste seg allerede å ha YearOfConstruction 1950. Bare den ene verdien flytter
  den automatiske beregningen fra karakter E til G, siden lekkasjetallet følger byggeåret.
- Masseklasse utledes av materialnavnene, og posisjonen leses av IfcSite.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015GeH3y8fwTaTudaD88P57o
This commit is contained in:
bl
2026-09-14 22:36:54 +02:00
co-authored by Claude Opus 5
parent afb8ea3fc4
commit 81544d73e6
6 changed files with 1081 additions and 377 deletions
+6 -1
View File
@@ -152,7 +152,12 @@ fn beregn(a: Beregn, kilde: &Datakilde) -> Result<()> {
eprintln!("Rapport: {}", pdf.display());
}
for m in &resultat.merknader {
// Manglene er allerede skrevet ut før beregningen; her kommer bare det som kom i tillegg.
let alt_sagt: Vec<String> = enok::modell::kontroll::kontroller(&bygning)
.into_iter()
.map(|m| m.melding)
.collect();
for m in resultat.merknader.iter().filter(|m| !alt_sagt.contains(m)) {
eprintln!(" ! {m}");
}
skriv_sammendrag(&resultat, &scenarier);