Regn omkretsen av gulv mot grunnen av geometrien
B′ etter NS-EN ISO 13370 trenger omkretsen av grunnflaten. Den regnes nå av omrisset til dekket i modellen, i stedet for å antas av arealet. For Nordhusstykket 5 gir modellen 39,7 m mot 40 m satt for hånd. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015GeH3y8fwTaTudaD88P57o
This commit is contained in:
Generated
+1
-1
@@ -222,7 +222,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "enok"
|
||||
version = "0.4.7"
|
||||
version = "0.4.8"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"approx",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "enok"
|
||||
version = "0.4.7"
|
||||
version = "0.4.8"
|
||||
edition = "2021"
|
||||
description = "Årlig energiberegning og energirapport for boliger etter NS 3031 (timesmetode, ISO 52016-1)"
|
||||
license = "MIT"
|
||||
|
||||
+5
-1
@@ -187,6 +187,7 @@ pub fn fra_tekst_med(tekst: &str, standardnavn: &str, valg: &Importvalg) -> Resu
|
||||
normal: flate.map(|f| f.normal),
|
||||
z: plass.map(|p| p.2).unwrap_or(0.0) + flate.map(|f| f.hoyde).unwrap_or(0.0),
|
||||
topp: plass.map(|p| p.2).unwrap_or(0.0) + flate.map(|f| f.topp).unwrap_or(0.0),
|
||||
omkrets: flate.map(|f| f.omkrets()).unwrap_or(0.0),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -391,7 +392,8 @@ pub fn fra_tekst_med(tekst: &str, standardnavn: &str, valg: &Importvalg) -> Resu
|
||||
mot,
|
||||
b_faktor: None,
|
||||
absorptans: None,
|
||||
omkrets: None,
|
||||
omkrets: (typ == FlateType::Gulv && mot == Mot::Grunn && d.omkrets > 0.0)
|
||||
.then_some(d.omkrets),
|
||||
dybde: (i_kjeller && mot == Mot::Grunn).then_some(kjellerdybde - over_bakken),
|
||||
over_terreng: (i_kjeller && mot == Mot::Grunn).then_some(over_bakken),
|
||||
sone,
|
||||
@@ -1320,6 +1322,8 @@ struct Del {
|
||||
z: f64,
|
||||
/// Overkanten av delen over byggets nullpunkt, m. For en kjellervegg er det overkant mur.
|
||||
topp: f64,
|
||||
/// Omkretsen av delens omriss, m. Et gulv mot grunnen trenger den for B′.
|
||||
omkrets: f64,
|
||||
}
|
||||
|
||||
/// Oversetter en fritekstverdi fra modellen til en bygningskategori.
|
||||
|
||||
@@ -224,6 +224,22 @@ fn overlapper(a: &[f64; 4], b: &[f64; 4]) -> bool {
|
||||
dekning(a[0], a[1], b[0], b[1]) && dekning(a[2], a[3], b[2], b[3])
|
||||
}
|
||||
|
||||
impl Hovedflate {
|
||||
/// Omkretsen av flatens omriss, m, regnet av utstrekningen i flatens eget plan.
|
||||
///
|
||||
/// Et gulv mot grunnen trenger omkretsen for B′ etter NS-EN ISO 13370. Omrisset regnes
|
||||
/// som et rektangel, som stemmer godt for de fleste grunnflater.
|
||||
pub fn omkrets(&self) -> f64 {
|
||||
let bredde = self.plan[1] - self.plan[0];
|
||||
let lengde = self.plan[3] - self.plan[2];
|
||||
if bredde > 0.0 && lengde > 0.0 {
|
||||
2.0 * (bredde + lengde)
|
||||
} else {
|
||||
0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Henter geometrien til et produkt via `Representation`, med én oppføring per geometridel.
|
||||
pub fn netter_for_produkt(fil: &Fil, representasjon: Option<u64>) -> Vec<Nett> {
|
||||
let mut deler = Vec::new();
|
||||
|
||||
Reference in New Issue
Block a user