IMM1033 séance 7 : atelier quantity survey v2 — plans plein cadre recadrés, plan annoté, objets mesurés, démarches A/B/C (plan → grandeurs → quantités → coûts), fil conducteur ; 172 diapos / 184 p.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
33 changed files +5,125 −6,306
modified
IMM1033-20_Methodes_du_cout/02_Slides/README.md
+1 −1
@@ -6,4 +6,4 @@ | ||
| 6 | 6 | - `sources/seance02_exercices.tex` → `pdf/seance02_exercices.pdf` : **cahier d'exercices en classe de la séance 2** (deck Beamer séparé, même style, 46 p.) : 11 exercices en 5 blocs pour 60 minutes (énoncé / corrigé / discussion), distincts des exercices intégrés au deck principal et des exercices du chapitre 2 des notes. Compilation `latexmk -pdf`. Gabarit réutilisable pour les autres séances (macros `\exometa`, `\corrige`, `\discussion`). |
| 7 | 7 | |
| 8 | 8 | Les diapositives de présentation des TP (mandat, objectifs, livrables, aperçu du Dashboard) sont intégrées aux séances d'annonce; les anciens ateliers y sont conservés comme **exemples guidés** travaillés en classe. |
| 9 | −- **Séance 7 — atelier « quantity survey » (2026-10-28)** : le deck `seance07_couts_directs` inclut `sources/parties/seance07_qs_cas.tex`, **généré** par `sources/gen_qs_cas.py` à partir des cas d'étude du module Quantity Survey d'UQO Éval (`sources/images/qs-cas/casN/data.json` = révision figée, mesures, fiche ; plans PNG exportés ; `localisation.json` = mêmes lignes RSMeans dans 18 villes). Cinq cas complets (garage Trois-Rivières, bungalow Gatineau, cottage + garage Montréal, triplex Québec, chalet sur pieux Rimouski) : fiche, plans par niveau, relevé des quantités avec formules, prix unitaires RSMeans 2026 T4, divisions, majorations, lecture ; synthèse des huit cas et exercice (duplex Laval). 141 diapositives / 153 pages. Ne pas éditer la partie à la main : régénérer (`python3 gen_qs_cas.py`), compiler, puis vérifier `python3 check_overflow.py pdf/seance07_couts_directs.pdf` (0 débordement attendu). Compilation : `latexmk -pdf -bibtex- seance07_couts_directs.tex` avec le `.bbl` fourni (le biber universel de TeX Live 2026 échoue : `~/bin/biber-arm64`). | |
| 9 | +- **Séance 7 — atelier « quantity survey » (2026-10-28)** : le deck `seance07_couts_directs` inclut `sources/parties/seance07_qs_cas.tex`, **généré** par `sources/gen_qs_cas.py` à partir des cas d'étude du module Quantity Survey d'UQO Éval (`sources/images/qs-cas/casN/data.json` = révision figée, mesures, fiche ; plans PNG exportés ; `localisation.json` = mêmes lignes RSMeans dans 18 villes). Cinq cas complets (garage Trois-Rivières, bungalow Gatineau, cottage + garage Montréal, triplex Québec, chalet sur pieux Rimouski), chacun avec le même fil conducteur (indicateur à six étapes) : fiche, plans plein cadre par niveau (PNG recadrés haute résolution, sans cartouche), plan annoté (six objets épinglés → ce qu'ils deviennent), table des objets mesurés (murs, pièces, ouvertures), démarche A (du plan aux dix grandeurs de base), démarche B (formule → entrées → résultat), relevé complet, démarche C (quantité → conversion → coût unitaire bare → montant), prix unitaires RSMeans 2026 T4, divisions, majorations, lecture ; synthèse des huit cas et exercice (duplex Laval). 172 diapositives / 184 pages. Ne pas éditer la partie à la main : régénérer (`python3 gen_qs_cas.py`), compiler, puis vérifier `python3 check_overflow.py pdf/seance07_couts_directs.pdf` (0 débordement attendu). Compilation : `latexmk -pdf -bibtex- seance07_couts_directs.tex` avec le `.bbl` fourni (le biber universel de TeX Live 2026 échoue : `~/bin/biber-arm64`). | |
modified
IMM1033-20_Methodes_du_cout/02_Slides/pdf/seance07_couts_directs.pdf
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/gen_qs_cas.py
+160 −23
@@ -54,29 +54,58 @@ def load(n): | ||
| 54 | 54 | heated = next((m["value"] for m in meas if m["name"].startswith("Filage brut")), None) |
| 55 | 55 | if heated is None: heated = next((m["value"] for m in meas if m["name"].startswith("Gypse") and "plafond" in m["name"]), None) |
| 56 | 56 | d["footprint"] = emp; d["heated"] = heated |
| 57 | + pages = d["pages"]; ground = next((x for x in pages if (x["level"] or "").startswith("Rez")), pages[-1] if pages else None) | |
| 58 | + d["ground"] = ground | |
| 59 | + above = [x for x in pages if not (x["level"] or "").lower().startswith("sous")] | |
| 60 | + d["extGross"] = sum(w["grossAreaM2"] for x in above for w in x["walls"] if w["exterior"]); d["extNet"] = sum(w["netAreaM2"] for x in above for w in x["walls"] if w["exterior"]) | |
| 61 | + d["intGross"] = sum(w["grossAreaM2"] for x in above for w in x["walls"] if not w["exterior"]); d["roomsArea"] = sum(r["areaM2"] for x in above for r in x["rooms"]) | |
| 62 | + d["windowsAll"] = sum(x["windows"] for x in above); d["doorsAll"] = sum(x["doors"] for x in above) | |
| 63 | + per = next((m for m in meas if m["name"].startswith("Semelles")), None); d["perimeter"] = per["value"] if per else sum(w["lengthM"] for w in ground["walls"] if w["exterior"]) | |
| 64 | + pitch = d["project"]["spec"].get("roofPitch", 4) or 0; d["slope"] = (1 + (pitch / 12) ** 2) ** 0.5 | |
| 57 | 65 | return d |
| 58 | 66 | |
| 59 | 67 | def kpi(color, value, label): return f"\\qskpi[{color}]{{{value}}}{{{label}}}" |
| 60 | 68 | |
| 61 | 69 | def table(rows, cols, align, size="\\scriptsize", stretch="0.95"): |
| 62 | − out = [f"\\begin{{center}}{size}\\renewcommand{{\\arraystretch}}{{{stretch}}}%", f"\\begin{{tabular}}{{@{{}}{align}@{{}}}}", "\\toprule", " & ".join(f"\\textbf{{{c}}}" for c in cols) + " \\\\", "\\midrule"] | |
| 70 | + out = [f"\\begin{{center}}{size}\\renewcommand{{\\arraystretch}}{{{stretch}}}\\setlength{{\\tabcolsep}}{{3.5pt}}%", f"\\begin{{tabular}}{{@{{}}{align}@{{}}}}", "\\toprule", " & ".join(f"\\textbf{{{c}}}" for c in cols) + " \\\\", "\\midrule"] | |
| 63 | 71 | out += [" & ".join(r) + " \\\\" for r in rows] |
| 64 | 72 | out += ["\\bottomrule", "\\end{tabular}\\end{center}"] |
| 65 | 73 | return "\n".join(out) |
| 66 | 74 | |
| 75 | +STEPS = ["Plan", "Fiche", "Relevé", "Prix", "Majorations", "Révision"] | |
| 76 | +def steps(active): | |
| 77 | + """indicateur du fil conducteur (6 étapes), placé en haut à droite du contenu""" | |
| 78 | + cells = "".join(f"\\qsstep{{{1 if i + 1 in active else 0}}}{{{i + 1}}}{{{t}}}" for i, t in enumerate(STEPS)) | |
| 79 | + return f"\\hfill{{\\tiny{cells}}}\\par\\vspace{{-0.5mm}}" | |
| 80 | + | |
| 81 | +def kv_fr(inputs): | |
| 82 | + """« perimetre_m=42.6, hauteur_m=2.44 » → « périmètre 42,6 m ; hauteur 2,44 m »""" | |
| 83 | + out = [] | |
| 84 | + for part in [x.strip() for x in inputs.split(",") if "=" in x]: | |
| 85 | + k, v = part.split("=", 1); k = k.strip(); v = v.strip() | |
| 86 | + unit = "" | |
| 87 | + if k.endswith("_m2"): unit = " m\\textsuperscript{2}"; k = k[:-3] | |
| 88 | + elif k.endswith("_m3"): unit = " m\\textsuperscript{3}"; k = k[:-3] | |
| 89 | + elif k.endswith("_m"): unit = " m"; k = k[:-2] | |
| 90 | + k = k.replace("_", " ").replace("perimetre", "périmètre").replace("aire", "aire").replace("profondeur", "profondeur").replace("empreinte", "empreinte").replace("facteur pente", "facteur de pente").replace("hauteur", "hauteur") | |
| 91 | + try: v = num(float(v), 2 if abs(float(v)) < 100 else 0) | |
| 92 | + except ValueError: v = tex(v) | |
| 93 | + out.append(f"{tex(k)} {v}{unit}") | |
| 94 | + return " ; ".join(out) | |
| 95 | + | |
| 67 | 96 | def frame_fiche(d): |
| 68 | 97 | p = d["project"]; s = p["spec"]; t = d["version"]["result"]["totals"]; short = short_name(p) |
| 69 | 98 | levels = ", ".join(x["level"] or x["label"] for x in d["pages"]); units = s.get("units", 1) |
| 70 | 99 | bs = fr(s.get("basement")) + (f" ({round(s.get('basementFinishedPct', 0)*100)}\\,\\% fini)" if s.get("basement") == "finished" else "") |
| 71 | − out = [f"\\begin{{frame}}{{{tex(short)} --- fiche du cas}}", "\\begin{center}"] | |
| 100 | + out = [f"\\begin{{frame}}{{{tex(short)} --- fiche du cas}}", steps([1, 2]), "\\begin{center}"] | |
| 72 | 101 | out.append(kpi("uqoBleu", num(d["footprint"]) + "~m\\textsuperscript{2}", "empreinte") + kpi("uqoTeal", num(d["heated"]) + "~m\\textsuperscript{2}", "aire chauffée") + kpi("uqoOr", f"{len(d['pages'])} / {units}", "niveaux / logements") + kpi("uqoNavy", money(t["total"]), "total hors taxes")) |
| 73 | 102 | out.append("\\end{center}\\vspace{0.5mm}\\footnotesize") |
| 74 | − out.append("\\begin{columns}[T]\\begin{column}{0.48\\textwidth}\\uqotitle{Le plan donne}\\begin{itemize}\\setlength{\\itemsep}{1pt}") | |
| 103 | + out.append("\\begin{columns}[T]\\begin{column}{0.48\\textwidth}\\uqotitle{Étape 1 --- le plan donne}\\begin{itemize}\\setlength{\\itemsep}{1pt}") | |
| 75 | 104 | out.append(f" \\item Niveaux : {tex(levels)} (50~px/m, calibration exacte)") |
| 76 | 105 | out.append(f" \\item {sum(len(x['rooms']) for x in d['pages'])} pièces nommées, {sum(x['windows'] for x in d['pages'])} fenêtres, {sum(x['doors'] for x in d['pages'])} portes") |
| 77 | 106 | out.append(f" \\item Ville RSMeans : \\textbf{{{tex(p['municipality'])}}} (MO syndiquée)") |
| 78 | 107 | out.append(f" \\item Secteur : {tex(cut(p['address'], 40))}") |
| 79 | − out.append("\\end{itemize}\\end{column}\\begin{column}{0.5\\textwidth}\\uqotitle{La fiche technique fixe}\\begin{itemize}\\setlength{\\itemsep}{1pt}") | |
| 108 | + out.append("\\end{itemize}\\end{column}\\begin{column}{0.5\\textwidth}\\uqotitle{Étape 2 --- la fiche technique fixe}\\begin{itemize}\\setlength{\\itemsep}{1pt}") | |
| 80 | 109 | out.append(f" \\item Fondation {fr(s.get('foundation'))}, mur {num(s.get('foundationWallHeightM'), 2)}~m ; sous-sol {bs}") |
| 81 | 110 | out.append(f" \\item Revêtements : {mix(s.get('siding'))} ; toit {fr(s.get('roofType'))} {s.get('roofPitch')}/12") |
| 82 | 111 | out.append(f" \\item Fenêtres {fr(s.get('windows'))} ; chauffage {fr(s.get('heating'))}" + (" + clim." if s.get("hasAirConditioning") else "") + (" + VRC" if s.get("hasAirExchanger") else "")) |
@@ -86,19 +115,104 @@ def frame_fiche(d): | ||
| 86 | 115 | return "\n".join(out) |
| 87 | 116 | |
| 88 | 117 | def frame_plans(d): |
| 118 | + """un plan plein cadre par niveau, puis le rez-de-chaussée annoté et sa table d'objets""" | |
| 89 | 119 | short = short_name(d["project"]); out = [] |
| 90 | 120 | for x in d["pages"]: |
| 91 | − lvl = x["level"] or x["label"]; rooms = x["rooms"] | |
| 121 | + lvl = x["level"] or x["label"] | |
| 122 | + ext = [w for w in x["walls"] if w["exterior"]]; ints = [w for w in x["walls"] if not w["exterior"]] | |
| 92 | 123 | out.append(f"\\begin{{frame}}{{{tex(short)} --- plan : {tex(lvl)}}}") |
| 93 | − out.append("\\begin{columns}[T]\\begin{column}{0.6\\textwidth}\\begin{center}") | |
| 94 | − out.append(f"\\includegraphics[height=0.68\\textheight,width=\\textwidth,keepaspectratio]{{{d['dir']}/{x['png']}}}") | |
| 95 | − out.append("\\end{center}\\end{column}\\begin{column}{0.38\\textwidth}\\footnotesize\\uqotitle{Lecture du plan}\\begin{itemize}\\setlength{\\itemsep}{1pt}") | |
| 96 | − out.append(f" \\item {x['pxPerMeter']}~px/m, {x['widthPx']}$\\times${x['heightPx']}~px ; incertitude de calibration : 0") | |
| 97 | − out.append(f" \\item {len(rooms)} pièce(s), {x['windows']} fenêtre(s), {x['doors']} porte(s)") | |
| 98 | − if rooms: | |
| 99 | − out.append(" \\item " + cut("; ".join(tex(r["name"]) for r in rooms), 110)) | |
| 100 | − out.append(" \\item Murs ext. 0,30~m, cloisons 0,12~m, ouvertures : objets mesurables (longueur, aires brute et nette, comptage)") | |
| 101 | − out.append("\\end{itemize}\\end{column}\\end{columns}\\end{frame}\n") | |
| 124 | + out.append(steps([1])) | |
| 125 | + out.append(f"\\begin{{center}}\\includegraphics[height=0.74\\textheight,width=0.96\\textwidth,keepaspectratio]{{{d['dir']}/{x['png']}}}\\end{{center}}") | |
| 126 | + out.append(f"\\vspace{{-1mm}}{{\\scriptsize\\textcolor{{uqoGris}}{{Échelle {x['pxPerMeter']}~px/m, calibration exacte $\\cdot$ {len(x['rooms'])} pièce(s), {x['windows']} fenêtre(s), {x['doors']} porte(s) $\\cdot$ murs extérieurs {num(sum(w['lengthM'] for w in ext),1)}~m, cloisons {num(sum(w['lengthM'] for w in ints),1)}~m $\\cdot$ aire des pièces {num(x['totals']['floorAreaM2'])}~m\\textsuperscript{{2}}" + (f" $\\cdot$ empreinte {num(x['footprintM2'])}~m\\textsuperscript{{2}}" if x.get('footprintM2') else "") + "}}\\end{frame}\n") | |
| 127 | + g = d["ground"] | |
| 128 | + # plan annoté : six épingles → ce que chaque objet devient | |
| 129 | + ext = [w for w in g["walls"] if w["exterior"]]; ints = [w for w in g["walls"] if not w["exterior"]] | |
| 130 | + legend = {"ext": f"\\textbf{{Murs extérieurs}} : {num(sum(w['lengthM'] for w in ext),1)}~m, brut {num(sum(w['grossAreaM2'] for w in ext))}~m\\textsuperscript{{2}}, net {num(sum(w['netAreaM2'] for w in ext))}~m\\textsuperscript{{2}} $\\rightarrow$ ossature, isolation, revêtements", | |
| 131 | + "int": f"\\textbf{{Cloisons}} : {num(sum(w['lengthM'] for w in ints),1)}~m $\\rightarrow$ ossature 2$\\times$4, gypse deux faces", | |
| 132 | + "win": f"\\textbf{{Fenêtres}} : {g['windows']} comptées $\\rightarrow$ unités, déduites des murs nets", | |
| 133 | + "door": f"\\textbf{{Portes}} : {g['doors']} (ext., int., patio, garage) $\\rightarrow$ unités", | |
| 134 | + "room": f"\\textbf{{Pièces}} : {len(g['rooms'])}, aire {num(g['totals']['floorAreaM2'])}~m\\textsuperscript{{2}} $\\rightarrow$ planchers par usage, plafonds, plinthes", | |
| 135 | + "fp": f"\\textbf{{Empreinte}} {num(g['footprintM2'] or d['footprint'])}~m\\textsuperscript{{2}}, périmètre {num(d['perimeter'],1)}~m $\\rightarrow$ excavation, semelles, fondation, dalle, toiture"} | |
| 136 | + out.append(f"\\begin{{frame}}{{{tex(short)} --- lire le plan : ce que chaque objet devient}}") | |
| 137 | + out.append(steps([1, 3])) | |
| 138 | + out.append("\\begin{columns}[T]\\begin{column}{0.5\\textwidth}\\begin{center}\\begin{tikzpicture}") | |
| 139 | + out.append(f"\\node[anchor=south west, inner sep=0pt] (img) at (0,0) {{\\includegraphics[width=\\textwidth,height=0.62\\textheight,keepaspectratio]{{{d['dir']}/{g['png']}}}}};") | |
| 140 | + order = ["ext", "int", "win", "door", "room", "fp"]; pins = {pn["key"]: pn for pn in g["pins"]} | |
| 141 | + k = 0 | |
| 142 | + for key in order: | |
| 143 | + if key in pins and key in legend: k += 1; out.append(f"\\qspin{{{pins[key]['at']['x']}}}{{{pins[key]['at']['y']}}}{{{k}}}") | |
| 144 | + out.append("\\end{tikzpicture}\\end{center}\\end{column}\\begin{column}{0.48\\textwidth}\\scriptsize\\begin{enumerate}\\setlength{\\itemsep}{1pt}") | |
| 145 | + for key in order: | |
| 146 | + if key in pins and key in legend: out.append(f" \\item {legend[key]}") | |
| 147 | + out.append("\\end{enumerate}\\end{column}\\end{columns}\\end{frame}\n") | |
| 148 | + # table des objets du rez-de-chaussée | |
| 149 | + out.append(f"\\begin{{frame}}{{{tex(short)} --- les objets mesurés du plan ({tex(g['level'] or g['label'])})}}") | |
| 150 | + out.append(steps([1, 3])) | |
| 151 | + wrows = [[cut(tex(w["name"]), 19), "ext." if w["exterior"] else "cloison", num(w["lengthM"], 1), num(w["grossAreaM2"], 1), num(w["openingsAreaM2"], 1), num(w["netAreaM2"], 1)] for w in sorted(g["walls"], key=lambda w: -w["lengthM"])[:9]] | |
| 152 | + rrows = [[cut(tex(r["name"]), 18), num(r["areaM2"], 1), num(r["perimeterM"], 1)] for r in sorted(g["rooms"], key=lambda r: -r["areaM2"])[:9]] | |
| 153 | + out.append("\\begin{columns}[T]\\begin{column}{0.55\\textwidth}") | |
| 154 | + out.append(table(wrows, ["Mur (h " + num(g["walls"][0]["heightM"], 2) + "~m)", "Type", "L (m)", "Brut", "Ouv.", "Net"], "l l r r r r", "\\scriptsize", "0.92")) | |
| 155 | + out.append("\\end{column}\\begin{column}{0.43\\textwidth}") | |
| 156 | + out.append(table(rrows, ["Pièce (usage sur le plan)", "Aire m\\textsuperscript{2}", "Périm. m"], "l r r", "\\scriptsize", "0.92")) | |
| 157 | + out.append("\\end{column}\\end{columns}") | |
| 158 | + opn = {} | |
| 159 | + for o in g["openings"]: key = ("fenêtre" if o["kind"] == "window" else "porte ext." if o["exterior"] and o["kind"] == "door" else "porte-patio" if o["kind"] == "patio" else "porte garage" if o["kind"] == "garage" else "porte int."); opn[key] = opn.get(key, 0) + 1 | |
| 160 | + out.append("{\\scriptsize\\textcolor{uqoGris}{Ouvertures de ce niveau : " + ", ".join(f"{v} {tex(k)}" for k, v in opn.items()) + f" ; aire des ouvertures déduite une seule fois des murs (net = brut -- ouvertures). {len(g['walls'])} murs, {len(g['rooms'])} pièces au total" + (" (9 plus grands affichés)" if len(g['walls']) > 9 or len(g['rooms']) > 9 else "") + ".}}\\end{frame}\n") | |
| 161 | + return "\n".join(out) | |
| 162 | + | |
| 163 | +def frame_demarche_a(d): | |
| 164 | + """du plan aux mesures de base : les grandeurs d'entrée des formules""" | |
| 165 | + short = short_name(d["project"]); g = d["ground"]; s = d["project"]["spec"] | |
| 166 | + ext = [w for w in g["walls"] if w["exterior"]] | |
| 167 | + rows = [["Empreinte $F$", f"{num(d['footprint'])}~m\\textsuperscript{{2}}", "polygone « empreinte » du rez-de-chaussée (ou boucle des murs extérieurs)"], | |
| 168 | + ["Périmètre $P$", f"{num(d['perimeter'],1)}~m", "longueur de la boucle des murs extérieurs du rez-de-chaussée"], | |
| 169 | + ["Hauteur d'étage $h$", f"{num(s.get('ceilingHeightM', 2.44),2)}~m", "fiche technique (hauteur de plafond)"], | |
| 170 | + ["Hauteur du mur de fondation", f"{num(s.get('foundationWallHeightM'),2)}~m", "fiche technique"], | |
| 171 | + ["Murs extérieurs bruts (tous niveaux)", f"{num(d['extGross'])}~m\\textsuperscript{{2}}", "$\\Sigma$ longueur $\\times$ hauteur, + pignons"], | |
| 172 | + ["Murs extérieurs nets", f"{num(d['extNet'])}~m\\textsuperscript{{2}}", "brut -- aire des ouvertures (déduite une seule fois)"], | |
| 173 | + ["Cloisons (tous niveaux)", f"{num(d['intGross'])}~m\\textsuperscript{{2}}", "$\\Sigma$ longueur $\\times$ hauteur"], | |
| 174 | + ["Aire des pièces (hors sol)", f"{num(d['roomsArea'])}~m\\textsuperscript{{2}}", "$\\Sigma$ polygones des pièces, par usage"], | |
| 175 | + ["Fenêtres / portes", f"{d['windowsAll']} / {d['doorsAll']}", "comptées sur tous les niveaux, avec leur mur"], | |
| 176 | + ["Facteur de pente du toit", f"{num(d['slope'],3)}", f"$\\sqrt{{1 + ({s.get('roofPitch')}/12)^2}}$ (fiche : pente {s.get('roofPitch')}/12)"]] | |
| 177 | + out = [f"\\begin{{frame}}{{{tex(short)} --- démarche A : du plan aux grandeurs de base}}", steps([1, 2, 3])] | |
| 178 | + out.append(table(rows, ["Grandeur", "Valeur", "D'où elle vient"], "l r l", "\\scriptsize", "0.95")) | |
| 179 | + out.append("{\\tiny\\textcolor{uqoGris}{Ces dix grandeurs alimentent presque toutes les formules du relevé ; elles sont recalculées à chaque modification du plan ou de la fiche.}}\\end{frame}\n") | |
| 180 | + return "\n".join(out) | |
| 181 | + | |
| 182 | +def frames_demarche_b(d): | |
| 183 | + """des grandeurs aux quantités : formule, entrées, résultat (données du registre)""" | |
| 184 | + short = short_name(d["project"]); out = [] | |
| 185 | + sel1 = [m for m in d["qs"] if m["wbs"] in ("31", "03", "05", "06") and m["inputs"]][:8] | |
| 186 | + sel2 = [m for m in d["qs"] if m["wbs"] in ("07", "08", "09", "22", "23", "26") and m["inputs"]][:8] | |
| 187 | + for title, sel in (("site, fondations, structure", sel1), ("enveloppe, finitions, mécanique", sel2)): | |
| 188 | + if not sel: continue | |
| 189 | + out.append(f"\\begin{{frame}}{{{tex(short)} --- démarche B : des grandeurs aux quantités ({tex(title)})}}") | |
| 190 | + out.append(steps([3])) | |
| 191 | + rows = [[cut(tex(m["name"]), 26), cut(tex(m["formula"].replace("Σ ", "somme des ")), 80), cut(kv_fr(m["inputs"]), 80), f"\\textbf{{{num(m['value'], 2 if m['value'] < 100 else 0)}}} {unit(m['unit'])}"] for m in sel[:7]] | |
| 192 | + out.append(table(rows, ["Famille", "Formule", "Entrées (du plan ou de la fiche)", "Résultat"], "p{2.7cm} p{4.5cm} p{4.5cm} r", "\\scriptsize", "0.92")) | |
| 193 | + out.append("{\\tiny\\textcolor{uqoGris}{Formule, entrées et résultat sont ceux du registre de mesures d'UQO Éval ; une mesure modifiée à la main rend la ligne « périmée » jusqu'au recalcul.}}\\end{frame}\n") | |
| 194 | + return "\n".join(out) | |
| 195 | + | |
| 196 | +def frame_demarche_c(d): | |
| 197 | + """de la quantité au coût : quatre lignes travaillées""" | |
| 198 | + short = short_name(d["project"]) | |
| 199 | + pick = [] | |
| 200 | + for divs in (("03",), ("06", "05"), ("07",), ("08",), ("09",), ("22", "23", "26")): | |
| 201 | + c = [l for l in d["lines"] if l["basis"] == "rsmeans" and l["wbs"] in divs and l.get("takeoffQuantity")] | |
| 202 | + if c: pick.append(max(c, key=lambda l: l["located"])) | |
| 203 | + pick = sorted(pick, key=lambda l: -l["located"])[:5] | |
| 204 | + out = [f"\\begin{{frame}}{{{tex(short)} --- démarche C : de la quantité au coût (cinq lignes travaillées)}}", steps([3, 4])] | |
| 205 | + rows = [] | |
| 206 | + for l in pick: | |
| 207 | + m = re.match(r"^(.*?) — (.*?) — RSMeans (\d{12})$", l["description"]); fam, lab, ln = (m.group(1), m.group(2), m.group(3)) if m else (l["description"], "", "") | |
| 208 | + conv = l["quantity"] / l["takeoffQuantity"] if l["takeoffQuantity"] else 1 | |
| 209 | + tq = next((mm for mm in d["qs"] if mm["name"] == fam), None); tu = unit(tq["unit"]) if tq else "" | |
| 210 | + q_txt = f"{num(l['takeoffQuantity'], 2 if l['takeoffQuantity'] < 100 else 0)} {tu}" + (f" $\\times$ {num(conv, 3)} = {num(l['quantity'], 1 if l['quantity'] < 100 else 0)} {unit(l['unit'])}" if abs(conv - 1) > 1e-6 else "") | |
| 211 | + price = f"{money(l['unitMaterial'],2)} + {money(l['unitLabour'],2)}" + (f" + {money(l['unitEquipment'],2)}" if l["unitEquipment"] else "") + f" = {money(l['unitDirect'],2)}" | |
| 212 | + rows.append([cut(tex(fam), 26), f"\\texttt{{{ln}}} {cut(tex(lab), 44)}", q_txt, price, f"\\textbf{{{money(l['located'])}}}"]) | |
| 213 | + out.append(table(rows, ["Famille", "Ligne RSMeans", "Quantité (relevé $\\rightarrow$ RSMeans)", "Bare : mat. + MO (+ éq.) / unité", "Montant"], "p{2.2cm} p{3.6cm} p{3.2cm} p{3.0cm} r", "\\scriptsize", "0.92")) | |
| 214 | + loc = d["version"]["result"]["lines"][0]["provenance"]["source"] | |
| 215 | + out.append(f"{{\\tiny\\textcolor{{uqoGris}}{{Montant = quantité convertie $\\times$ coût unitaire bare ({tex(loc)}). Les conversions (m\\textsuperscript{{2}} $\\rightarrow$ pi\\textsuperscript{{2}} $\\times$ 10,764 ; m\\textsuperscript{{3}} $\\rightarrow$ vg\\textsuperscript{{3}} $\\times$ 1,308 ; m $\\rightarrow$ pi $\\times$ 3,281) et les facteurs de quantité documentés (ex. m\\textsuperscript{{2}} de mur $\\rightarrow$ m d'ossature $\\div$ 2,44) sont faits par le moteur.}}}}\\end{{frame}}\n") | |
| 102 | 216 | return "\n".join(out) |
| 103 | 217 | |
| 104 | 218 | def frames_releve(d): |
@@ -110,7 +224,8 @@ def frames_releve(d): | ||
| 110 | 224 | nch = -(-len(rows) // 11); size = -(-len(rows) // nch); chunks = [rows[i:i + size] for i in range(0, len(rows), size)] |
| 111 | 225 | for ci, ch in enumerate(chunks): |
| 112 | 226 | suffix = f" ({ci+1}/{len(chunks)})" if len(chunks) > 1 else "" |
| 113 | − out.append(f"\\begin{{frame}}{{{tex(short)} --- relevé : {tex(title)}{suffix}}}") | |
| 227 | + out.append(f"\\begin{{frame}}{{{tex(short)} --- relevé complet : {tex(title)}{suffix}}}") | |
| 228 | + out.append(steps([3])) | |
| 114 | 229 | trows = [[m["wbs"], cut(tex(m["name"]), 46), num(m["value"], 2 if m["value"] < 100 else 0), unit(m["unit"]), cut(tex(m["formula"].replace("Σ ", "somme des ")), 58)] for m in ch] |
| 115 | 230 | out.append(table(trows, ["Div.", "Mesure du registre (QS)", "Quantité", "Unité", "Formule (plan ou fiche)"], "l l r l l", "\\scriptsize", "0.95")) |
| 116 | 231 | if ci == len(chunks) - 1: |
@@ -126,7 +241,7 @@ def frame_prix(d): | ||
| 126 | 241 | m = re.match(r"^(.*?) — (.*?) — RSMeans (\d{12})$", l["description"]) |
| 127 | 242 | fam, ln = (m.group(1), m.group(3)) if m else (l["description"], "") |
| 128 | 243 | rows.append([cut(tex(fam), 28), f"\\texttt{{{ln}}}", num(l["quantity"], 1 if l["quantity"] < 100 else 0), unit(l["unit"]), money(l["unitMaterial"], 2), money(l["unitLabour"], 2), money(l["unitEquipment"], 2) if l["unitEquipment"] else "---", money(l["located"])]) |
| 129 | − out = [f"\\begin{{frame}}{{{tex(short)} --- prix unitaires RSMeans (11 lignes les plus lourdes)}}"] | |
| 244 | + out = [f"\\begin{{frame}}{{{tex(short)} --- prix unitaires RSMeans (11 lignes les plus lourdes)}}", steps([4])] | |
| 130 | 245 | out.append(table(rows, ["Famille", "Ligne RSMeans", "Qté", "Unité", "Matériau", "M.-d'\\oe uvre", "Équip.", "Montant"], "l l r l r r r r", "\\scriptsize", "0.95")) |
| 131 | 246 | loc = d["version"]["result"]["lines"][0]["provenance"]["source"] |
| 132 | 247 | out.append(f"{{\\tiny\\textcolor{{uqoGris}}{{Coûts unitaires bare (matériau + MO + équipement, sans O\\&P), {tex(loc)} ; quantités converties par le moteur (m\\textsuperscript{{2}} $\\rightarrow$ pi\\textsuperscript{{2}}, m\\textsuperscript{{3}} $\\rightarrow$ vg\\textsuperscript{{3}}).}}}}\\end{{frame}}\n") |
@@ -139,7 +254,7 @@ def frame_divisions(d): | ||
| 139 | 254 | rows.append(["\\textbf{Total direct}", f"\\textbf{{{money(r['totals']['located'])}}}", "\\textbf{100\\,\\%}"]) |
| 140 | 255 | top = sorted(by, key=lambda w: -w["located"])[:3] |
| 141 | 256 | mat, lab, eq = r["totals"]["material"], r["totals"]["labour"], r["totals"]["equipment"]; tot = mat + lab + eq |
| 142 | − out = [f"\\begin{{frame}}{{{tex(short)} --- coûts directs par division}}", "\\begin{columns}[T]\\begin{column}{0.55\\textwidth}"] | |
| 257 | + out = [f"\\begin{{frame}}{{{tex(short)} --- coûts directs par division}}", steps([4]), "\\begin{columns}[T]\\begin{column}{0.55\\textwidth}"] | |
| 143 | 258 | out.append(table(rows, ["Division MasterFormat", "Direct", "Part"], "l r r", "\\scriptsize", "0.9")) |
| 144 | 259 | out.append("\\end{column}\\begin{column}{0.43\\textwidth}\\footnotesize") |
| 145 | 260 | out.append("\\begin{notebox}[Les trois divisions lourdes]" + " ; ".join(f"\\textbf{{{w['wbs']}}} {DIV.get(w['wbs'],'')} ({num(w['sharePct'],1)}\\,\\%)" for w in top) + ".\\end{notebox}") |
@@ -151,12 +266,12 @@ def frame_total(d): | ||
| 151 | 266 | short = short_name(d["project"]); r = d["version"]["result"]; t = r["totals"]; pa = r["params"] |
| 152 | 267 | rows = [["Direct (quantités $\\times$ coûts unitaires bare)", money(t["direct"])], ["Ajustement régional du module (RSMeans déjà localisé)", money(t["locationAdjustment"])], ["= Direct localisé", f"\\textbf{{{money(t['located'])}}}"], [f"Conditions générales {pa['generalConditionsPct']}\\,\\% du direct", money(t["generalConditions"])], [f"Frais généraux {pa['overheadPct']}\\,\\% du cumul", money(t["overhead"])], [f"Profit {pa['profitPct']}\\,\\% du cumul", money(t["profit"])], [f"Contingence {pa['contingencyPct']}\\,\\% du direct", money(t["contingency"])], ["\\textbf{Total hors taxes (coût à neuf 2026 T4)}", f"\\textbf{{{money(t['total'])}}}"]] |
| 153 | 268 | heated = d["heated"] or 1 |
| 154 | − out = [f"\\begin{{frame}}{{{tex(short)} --- du coût direct au coût à neuf}}", "\\begin{columns}[T]\\begin{column}{0.58\\textwidth}"] | |
| 269 | + out = [f"\\begin{{frame}}{{{tex(short)} --- étape 5 : du coût direct au coût à neuf}}", steps([5, 6]), "\\begin{columns}[T]\\begin{column}{0.58\\textwidth}"] | |
| 155 | 270 | out.append(table(rows, ["Étape (ordre d'application)", "Montant"], "l r", "\\footnotesize", "1.0")) |
| 156 | 271 | out.append("\\end{column}\\begin{column}{0.4\\textwidth}\\footnotesize\\begin{center}") |
| 157 | 272 | out.append(kpi("uqoBleu", money(t["total"] / heated), "par m\\textsuperscript{2} chauffé") + kpi("uqoTeal", money(t["total"] / heated / 10.7639), "par pi\\textsuperscript{2} chauffé")) |
| 158 | 273 | out.append("\\end{center}") |
| 159 | − out.append(f"\\begin{{importbox}}[Multiplicateur]Direct $\\rightarrow$ total : $\\times$~{num(t['total']/t['direct'],3)}. Le Total O\\&P de RSMeans n'est pas additionné (il contient déjà l'O\\&P de l'installateur).\\end{{importbox}}") | |
| 274 | + out.append(f"\\begin{{importbox}}[Multiplicateur]Direct $\\rightarrow$ total : $\\times$~{num(t['total']/t['direct'],3)}. Le Total O\\&P de RSMeans n'est pas additionné (il contient déjà l'O\\&P de l'installateur). Révision figée : {tex(d['version']['label'])}, empreinte SHA-256 {tex(d['version']['contentHash'][:12])}….\\end{{importbox}}") | |
| 160 | 275 | out.append("\\end{column}\\end{columns}\\end{frame}\n") |
| 161 | 276 | return "\n".join(out) |
| 162 | 277 | |
@@ -170,7 +285,7 @@ LECTURE = { | ||
| 170 | 285 | |
| 171 | 286 | def frame_lecture(d): |
| 172 | 287 | short = short_name(d["project"]); title, pts, q = LECTURE[d["n"]] |
| 173 | − out = [f"\\begin{{frame}}{{{tex(short)} --- lecture de l'évaluateur}}", f"\\uqotitle{{{title}}}", "\\begin{itemize}"] + [f" \\item {x}" for x in pts] | |
| 288 | + out = [f"\\begin{{frame}}{{{tex(short)} --- lecture de l'évaluateur}}", steps([6]), f"\\uqotitle{{{title}}}", "\\begin{itemize}"] + [f" \\item {x}" for x in pts] | |
| 174 | 289 | out.append(f"\\end{{itemize}}\\vspace{{1mm}}\\begin{{quizbox}}[Question à la classe]{q}\\end{{quizbox}}\\end{{frame}}\n") |
| 175 | 290 | return "\n".join(out) |
| 176 | 291 | |
@@ -207,6 +322,26 @@ def intro(loc): | ||
| 207 | 322 | \\end{tikzpicture} |
| 208 | 323 | \\end{center} |
| 209 | 324 | \\end{frame} |
| 325 | +""") | |
| 326 | + out.append("""\\begin{frame}{Le fil conducteur de chaque cas} | |
| 327 | +\\begin{columns}[T]\\begin{column}{0.56\\textwidth}\\footnotesize | |
| 328 | +Chaque cas suit le même chemin, repéré par l'indicateur en haut à droite des diapositives : | |
| 329 | +\\begin{enumerate}\\setlength{\\itemsep}{1pt} | |
| 330 | + \\item \\textbf{Fiche du cas} --- ce que le plan donne, ce que la fiche fixe | |
| 331 | + \\item \\textbf{Plans} plein cadre par niveau, puis plan annoté (six objets) et table des objets mesurés | |
| 332 | + \\item \\textbf{Démarche A} --- du plan aux dix grandeurs de base ($F$, $P$, $h$, murs, pièces, ouvertures, pente) | |
| 333 | + \\item \\textbf{Démarche B} --- des grandeurs aux quantités : formule, entrées, résultat | |
| 334 | + \\item \\textbf{Relevé complet} --- toutes les mesures du registre, par division | |
| 335 | + \\item \\textbf{Démarche C} --- de la quantité au coût : conversion, coût unitaire bare, montant | |
| 336 | + \\item \\textbf{Prix unitaires}, \\textbf{divisions}, \\textbf{majorations} $\\rightarrow$ coût à neuf | |
| 337 | + \\item \\textbf{Lecture de l'évaluateur} et question à la classe | |
| 338 | +\\end{enumerate} | |
| 339 | +\\end{column}\\begin{column}{0.42\\textwidth}\\footnotesize | |
| 340 | +\\begin{center}{\\tiny\\qsstep{1}{1}{Plan}\\qsstep{1}{2}{Fiche}\\qsstep{0}{3}{Relevé}\\qsstep{0}{4}{Prix}\\qsstep{0}{5}{Majorations}\\qsstep{0}{6}{Révision}}\\end{center} | |
| 341 | +\\begin{notebox}[Lire l'indicateur]Les étapes en bleu sont celles que la diapositive travaille ; les six étapes sont celles de la méthode.\\end{notebox} | |
| 342 | +\\begin{exbox}[Pourquoi tant de détail]Au TP2 et à l'examen final, on vous demande exactement cette traçabilité : quantité $\\leftarrow$ formule $\\leftarrow$ plan, prix $\\leftarrow$ source datée, total $\\leftarrow$ majorations ordonnées.\\end{exbox} | |
| 343 | +\\end{column}\\end{columns} | |
| 344 | +\\end{frame} | |
| 210 | 345 | """) |
| 211 | 346 | out.append("""\\begin{frame}{Étape 1 --- lire le plan : ce qui devient une quantité} |
| 212 | 347 | \\begin{columns}[T]\\begin{column}{0.46\\textwidth} |
@@ -273,9 +408,9 @@ def intro(loc): | ||
| 273 | 408 | rows = [] |
| 274 | 409 | for c in loc["cmp"]: |
| 275 | 410 | pr = {x["loc"]: x["p"] for x in c["prices"]} |
| 276 | − rows.append([cut(tex(c["desc"]), 42), tex(c["unit"])] + [money(pr[k]["total"], 2) if pr.get(k) and pr[k]["total"] is not None else "---" for k in keep]) | |
| 411 | + rows.append([cut(tex(c["desc"]), 36) + f" ({tex(c['unit'])})"] + [money(pr[k]["total"], 2) if pr.get(k) and pr[k]["total"] is not None else "---" for k in keep]) | |
| 277 | 412 | out.append("\\begin{frame}{Localisation --- la même ligne RSMeans dans sept villes (coût bare, MO syndiquée)}") |
| 278 | − out.append(table(rows, ["Ligne", "Unité"] + [names[k] for k in keep], "l l r r r r r r r", "\\scriptsize", "0.95")) | |
| 413 | + out.append(table(rows, ["Ligne (unité RSMeans)"] + [names[k] for k in keep], "l r r r r r r r", "\\scriptsize", "0.95")) | |
| 279 | 414 | out.append("\\begin{notebox}[Ce qu'on observe]\\footnotesize Les matériaux varient peu (fenêtre, toilette) ; la \\textbf{main-d'\\oe uvre} fait la différence (ossature, gypse). RSMeans localise par \\textbf{section MasterFormat} : les facteurs de section reproduisent les prix extraits à l'arrondi près (p90 $<$ 0,1\\,\\%) ; un facteur par division se trompe de 20\\,\\% une fois sur dix.\\end{notebox}\n\\end{frame}\n") |
| 280 | 415 | out.append("""\\begin{frame}{Étape 5 --- les majorations, dans l'ordre} |
| 281 | 416 | \\begin{columns}[T]\\begin{column}{0.52\\textwidth}\\footnotesize |
@@ -360,12 +495,14 @@ def main(): | ||
| 360 | 495 | all_ds = [load(n) for n in ALL]; ds = {d["n"]: d for d in all_ds} |
| 361 | 496 | parts = ["% Généré par gen_qs_cas.py — ne pas éditer à la main (données : images/qs-cas/*/data.json, révisions figées UQO Éval / RSMeans 2026 T4)", |
| 362 | 497 | "\\providecommand{\\qskpi}[3][uqoBleu]{\\begin{tikzpicture}[baseline=(b.base)]\\node[fill=#1!8, draw=#1!40, rounded corners=2pt, inner xsep=4pt, inner ysep=2.5pt, align=center, text width=26mm] (b) {{\\textcolor{#1}{\\normalsize\\textbf{#2}}}\\\\[-1pt]{\\tiny\\textcolor{uqoGris}{#3}}};\\end{tikzpicture}}", |
| 498 | + "\\providecommand{\\qsstep}[3]{\\ifnum#1=1\\colorlet{qsfill}{uqoBleu}\\colorlet{qstext}{uqoBlanc}\\else\\colorlet{qsfill}{uqoGrisClair}\\colorlet{qstext}{uqoGris}\\fi\\tikz[baseline=-0.5ex]{\\node[rounded corners=1pt, inner xsep=3pt, inner ysep=1.5pt, fill=qsfill, text=qstext, font=\\tiny\\bfseries] {#2 #3};}\\hspace{1pt}}", | |
| 499 | + "\\providecommand{\\qspin}[3]{\\path ($(img.south west)!#1!(img.south east)$) coordinate (qx); \\path ($(img.south west)!#2!(img.north west)$) coordinate (qy); \\node[circle, fill=uqoOr, text=uqoNavy, font=\\fontsize{6.5}{7}\\selectfont\\bfseries, inner sep=0.8pt, minimum size=3.4mm, draw=uqoNavy, line width=0.4pt] at (qx |- qy) {#3};}", | |
| 363 | 500 | "\\section{Atelier --- Quantity survey : cinq cas complets (plans, quantités, coûts)}", intro(loc)] |
| 364 | 501 | for n in CASES: |
| 365 | 502 | d = ds[n]; short = short_name(d["project"]) |
| 366 | 503 | parts.append(f"% ---------------- {short}") |
| 367 | 504 | parts.append(f"\\begin{{frame}}[plain]\\begin{{center}}\\vspace{{1.2cm}}{{\\Huge\\textcolor{{uqoBleu}}{{\\textbf{{{tex(short)}}}}}}}\\\\[4mm]{{\\large\\textcolor{{uqoGris}}{{{tex(d['project']['municipality'])} $\\cdot$ RSMeans 2026 T4 $\\cdot$ {len(d['qs'])} mesures $\\cdot$ {len(d['lines'])} lignes chiffrées}}}}\\end{{center}}\\end{{frame}}\n") |
| 368 | − parts += [frame_fiche(d), frame_plans(d), frames_releve(d), frame_prix(d), frame_divisions(d), frame_total(d), frame_lecture(d)] | |
| 505 | + parts += [frame_fiche(d), frame_plans(d), frame_demarche_a(d), frames_demarche_b(d), frames_releve(d), frame_demarche_c(d), frame_prix(d), frame_divisions(d), frame_total(d), frame_lecture(d)] | |
| 369 | 506 | parts.append(synthese(all_ds)) |
| 370 | 507 | os.makedirs(os.path.dirname(OUT), exist_ok=True) |
| 371 | 508 | txt = "\n".join(parts); open(OUT, "w").write(txt) |
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas1/Rez_de_chausse_e.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas1/Sous_sol.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas1/data.json
+373 −9
@@ -60,17 +60,131 @@ | ||
| 60 | 60 | "widthPx": 860, |
| 61 | 61 | "heightPx": 705, |
| 62 | 62 | "png": "Sous_sol.png", |
| 63 | + "crop": { | |
| 64 | + "x0": 41.5, | |
| 65 | + "y0": 41.5, | |
| 66 | + "x1": 818.5, | |
| 67 | + "y1": 663.5 | |
| 68 | + }, | |
| 63 | 69 | "objects": 9, |
| 70 | + "pins": [ | |
| 71 | + { | |
| 72 | + "key": "ext", | |
| 73 | + "label": "Murs extérieurs", | |
| 74 | + "at": { | |
| 75 | + "x": 0.5, | |
| 76 | + "y": 0.866 | |
| 77 | + } | |
| 78 | + }, | |
| 79 | + { | |
| 80 | + "key": "int", | |
| 81 | + "label": "Cloisons", | |
| 82 | + "at": { | |
| 83 | + "x": 0.301, | |
| 84 | + "y": 0.745 | |
| 85 | + } | |
| 86 | + }, | |
| 87 | + { | |
| 88 | + "key": "win", | |
| 89 | + "label": "Fenêtres", | |
| 90 | + "at": { | |
| 91 | + "x": 0.343, | |
| 92 | + "y": 0.134 | |
| 93 | + } | |
| 94 | + }, | |
| 95 | + { | |
| 96 | + "key": "room", | |
| 97 | + "label": "Pièces (aire, périmètre)", | |
| 98 | + "at": { | |
| 99 | + "x": 0.5, | |
| 100 | + "y": 0.5 | |
| 101 | + } | |
| 102 | + }, | |
| 103 | + { | |
| 104 | + "key": "fp", | |
| 105 | + "label": "Empreinte et périmètre", | |
| 106 | + "at": { | |
| 107 | + "x": 0.108, | |
| 108 | + "y": 0.865 | |
| 109 | + } | |
| 110 | + } | |
| 111 | + ], | |
| 112 | + "walls": [ | |
| 113 | + { | |
| 114 | + "name": "Murs extérieurs", | |
| 115 | + "exterior": true, | |
| 116 | + "lengthM": 42.6, | |
| 117 | + "heightM": 2.44, | |
| 118 | + "thicknessM": 0.3, | |
| 119 | + "grossAreaM2": 103.944, | |
| 120 | + "openingsAreaM2": 1.2, | |
| 121 | + "netAreaM2": 102.744 | |
| 122 | + }, | |
| 123 | + { | |
| 124 | + "name": "Cloison salle mécanique", | |
| 125 | + "exterior": false, | |
| 126 | + "lengthM": 6, | |
| 127 | + "heightM": 2.3, | |
| 128 | + "thicknessM": 0.12, | |
| 129 | + "grossAreaM2": 13.8, | |
| 130 | + "openingsAreaM2": 0, | |
| 131 | + "netAreaM2": 13.8 | |
| 132 | + } | |
| 133 | + ], | |
| 64 | 134 | "rooms": [ |
| 65 | 135 | { |
| 66 | 136 | "name": "Sous-sol", |
| 67 | − "usage": "sous-sol" | |
| 137 | + "usage": "sous-sol", | |
| 138 | + "areaM2": 106.8, | |
| 139 | + "perimeterM": 41.8, | |
| 140 | + "heightM": 2.3 | |
| 68 | 141 | }, |
| 69 | 142 | { |
| 70 | 143 | "name": "Salle mécanique", |
| 71 | − "usage": "salle mécanique" | |
| 144 | + "usage": "salle mécanique", | |
| 145 | + "areaM2": 7.84, | |
| 146 | + "perimeterM": 11.2, | |
| 147 | + "heightM": 2.3 | |
| 72 | 148 | } |
| 73 | 149 | ], |
| 150 | + "openings": [ | |
| 151 | + { | |
| 152 | + "kind": "window", | |
| 153 | + "name": "Fenêtre de sous-sol", | |
| 154 | + "widthM": 0.8, | |
| 155 | + "heightM": 0.5, | |
| 156 | + "areaM2": 0.4, | |
| 157 | + "wall": "Murs extérieurs", | |
| 158 | + "exterior": true | |
| 159 | + }, | |
| 160 | + { | |
| 161 | + "kind": "window", | |
| 162 | + "name": "Fenêtre de sous-sol", | |
| 163 | + "widthM": 0.8, | |
| 164 | + "heightM": 0.5, | |
| 165 | + "areaM2": 0.4, | |
| 166 | + "wall": "Murs extérieurs", | |
| 167 | + "exterior": true | |
| 168 | + }, | |
| 169 | + { | |
| 170 | + "kind": "window", | |
| 171 | + "name": "Fenêtre de sous-sol", | |
| 172 | + "widthM": 0.8, | |
| 173 | + "heightM": 0.5, | |
| 174 | + "areaM2": 0.4, | |
| 175 | + "wall": "Murs extérieurs", | |
| 176 | + "exterior": true | |
| 177 | + } | |
| 178 | + ], | |
| 179 | + "footprintM2": 117.5, | |
| 180 | + "totals": { | |
| 181 | + "wallLengthM": 48.6, | |
| 182 | + "wallNetAreaM2": 116.544, | |
| 183 | + "extWallNetAreaM2": 102.744, | |
| 184 | + "floorAreaM2": 114.64, | |
| 185 | + "doors": 0, | |
| 186 | + "windows": 3 | |
| 187 | + }, | |
| 74 | 188 | "windows": 3, |
| 75 | 189 | "doors": 0 |
| 76 | 190 | }, |
@@ -82,37 +196,287 @@ | ||
| 82 | 196 | "widthPx": 860, |
| 83 | 197 | "heightPx": 705, |
| 84 | 198 | "png": "Rez_de_chausse_e.png", |
| 199 | + "crop": { | |
| 200 | + "x0": 41.5, | |
| 201 | + "y0": 41.5, | |
| 202 | + "x1": 818.5, | |
| 203 | + "y1": 663.5 | |
| 204 | + }, | |
| 85 | 205 | "objects": 26, |
| 206 | + "pins": [ | |
| 207 | + { | |
| 208 | + "key": "ext", | |
| 209 | + "label": "Murs extérieurs", | |
| 210 | + "at": { | |
| 211 | + "x": 0.5, | |
| 212 | + "y": 0.866 | |
| 213 | + } | |
| 214 | + }, | |
| 215 | + { | |
| 216 | + "key": "int", | |
| 217 | + "label": "Cloisons", | |
| 218 | + "at": { | |
| 219 | + "x": 0.5, | |
| 220 | + "y": 0.5 | |
| 221 | + } | |
| 222 | + }, | |
| 223 | + { | |
| 224 | + "key": "win", | |
| 225 | + "label": "Fenêtres", | |
| 226 | + "at": { | |
| 227 | + "x": 0.284, | |
| 228 | + "y": 0.866 | |
| 229 | + } | |
| 230 | + }, | |
| 231 | + { | |
| 232 | + "key": "door", | |
| 233 | + "label": "Portes", | |
| 234 | + "at": { | |
| 235 | + "x": 0.202, | |
| 236 | + "y": 0.866 | |
| 237 | + } | |
| 238 | + }, | |
| 239 | + { | |
| 240 | + "key": "room", | |
| 241 | + "label": "Pièces (aire, périmètre)", | |
| 242 | + "at": { | |
| 243 | + "x": 0.284, | |
| 244 | + "y": 0.683 | |
| 245 | + } | |
| 246 | + }, | |
| 247 | + { | |
| 248 | + "key": "fp", | |
| 249 | + "label": "Empreinte et périmètre", | |
| 250 | + "at": { | |
| 251 | + "x": 0.108, | |
| 252 | + "y": 0.865 | |
| 253 | + } | |
| 254 | + } | |
| 255 | + ], | |
| 256 | + "walls": [ | |
| 257 | + { | |
| 258 | + "name": "Murs extérieurs", | |
| 259 | + "exterior": true, | |
| 260 | + "lengthM": 42.6, | |
| 261 | + "heightM": 2.44, | |
| 262 | + "thicknessM": 0.3, | |
| 263 | + "grossAreaM2": 103.944, | |
| 264 | + "openingsAreaM2": 18.96, | |
| 265 | + "netAreaM2": 84.984 | |
| 266 | + }, | |
| 267 | + { | |
| 268 | + "name": "Cloison centrale", | |
| 269 | + "exterior": false, | |
| 270 | + "lengthM": 12.2, | |
| 271 | + "heightM": 2.44, | |
| 272 | + "thicknessM": 0.12, | |
| 273 | + "grossAreaM2": 29.768, | |
| 274 | + "openingsAreaM2": 0, | |
| 275 | + "netAreaM2": 29.768 | |
| 276 | + }, | |
| 277 | + { | |
| 278 | + "name": "Cloison Séjour", | |
| 279 | + "exterior": false, | |
| 280 | + "lengthM": 4.55, | |
| 281 | + "heightM": 2.44, | |
| 282 | + "thicknessM": 0.12, | |
| 283 | + "grossAreaM2": 11.102, | |
| 284 | + "openingsAreaM2": 0, | |
| 285 | + "netAreaM2": 11.102 | |
| 286 | + }, | |
| 287 | + { | |
| 288 | + "name": "Cloison Cuisine / salle à manger", | |
| 289 | + "exterior": false, | |
| 290 | + "lengthM": 4.55, | |
| 291 | + "heightM": 2.44, | |
| 292 | + "thicknessM": 0.12, | |
| 293 | + "grossAreaM2": 11.102, | |
| 294 | + "openingsAreaM2": 0, | |
| 295 | + "netAreaM2": 11.102 | |
| 296 | + }, | |
| 297 | + { | |
| 298 | + "name": "Cloison Chambre principale", | |
| 299 | + "exterior": false, | |
| 300 | + "lengthM": 4.55, | |
| 301 | + "heightM": 2.44, | |
| 302 | + "thicknessM": 0.12, | |
| 303 | + "grossAreaM2": 11.102, | |
| 304 | + "openingsAreaM2": 0, | |
| 305 | + "netAreaM2": 11.102 | |
| 306 | + }, | |
| 307 | + { | |
| 308 | + "name": "Cloison Chambre 2", | |
| 309 | + "exterior": false, | |
| 310 | + "lengthM": 4.55, | |
| 311 | + "heightM": 2.44, | |
| 312 | + "thicknessM": 0.12, | |
| 313 | + "grossAreaM2": 11.102, | |
| 314 | + "openingsAreaM2": 0, | |
| 315 | + "netAreaM2": 11.102 | |
| 316 | + }, | |
| 317 | + { | |
| 318 | + "name": "Cloison Chambre 3", | |
| 319 | + "exterior": false, | |
| 320 | + "lengthM": 4.55, | |
| 321 | + "heightM": 2.44, | |
| 322 | + "thicknessM": 0.12, | |
| 323 | + "grossAreaM2": 11.102, | |
| 324 | + "openingsAreaM2": 0, | |
| 325 | + "netAreaM2": 11.102 | |
| 326 | + } | |
| 327 | + ], | |
| 86 | 328 | "rooms": [ |
| 87 | 329 | { |
| 88 | 330 | "name": "Séjour", |
| 89 | − "usage": "séjour" | |
| 331 | + "usage": "séjour", | |
| 332 | + "areaM2": 23.399, | |
| 333 | + "perimeterM": 19.44, | |
| 334 | + "heightM": 2.44 | |
| 90 | 335 | }, |
| 91 | 336 | { |
| 92 | 337 | "name": "Cuisine / salle à manger", |
| 93 | − "usage": "cuisine" | |
| 338 | + "usage": "cuisine", | |
| 339 | + "areaM2": 20.721, | |
| 340 | + "perimeterM": 18.22, | |
| 341 | + "heightM": 2.44 | |
| 94 | 342 | }, |
| 95 | 343 | { |
| 96 | 344 | "name": "Hall / escalier", |
| 97 | − "usage": "hall" | |
| 345 | + "usage": "hall", | |
| 346 | + "areaM2": 7.331, | |
| 347 | + "perimeterM": 12.12, | |
| 348 | + "heightM": 2.44 | |
| 98 | 349 | }, |
| 99 | 350 | { |
| 100 | 351 | "name": "Chambre principale", |
| 101 | − "usage": "chambre" | |
| 352 | + "usage": "chambre", | |
| 353 | + "areaM2": 17.507, | |
| 354 | + "perimeterM": 16.756, | |
| 355 | + "heightM": 2.44 | |
| 102 | 356 | }, |
| 103 | 357 | { |
| 104 | 358 | "name": "Chambre 2", |
| 105 | − "usage": "chambre" | |
| 359 | + "usage": "chambre", | |
| 360 | + "areaM2": 12.687, | |
| 361 | + "perimeterM": 14.56, | |
| 362 | + "heightM": 2.44 | |
| 106 | 363 | }, |
| 107 | 364 | { |
| 108 | 365 | "name": "Chambre 3", |
| 109 | − "usage": "chambre" | |
| 366 | + "usage": "chambre", | |
| 367 | + "areaM2": 11.616, | |
| 368 | + "perimeterM": 14.072, | |
| 369 | + "heightM": 2.44 | |
| 110 | 370 | }, |
| 111 | 371 | { |
| 112 | 372 | "name": "Salle de bain", |
| 113 | − "usage": "salle de bain" | |
| 373 | + "usage": "salle de bain", | |
| 374 | + "areaM2": 8.938, | |
| 375 | + "perimeterM": 12.852, | |
| 376 | + "heightM": 2.44 | |
| 114 | 377 | } |
| 115 | 378 | ], |
| 379 | + "openings": [ | |
| 380 | + { | |
| 381 | + "kind": "window", | |
| 382 | + "name": "Fenêtre Séjour", | |
| 383 | + "widthM": 1.8, | |
| 384 | + "heightM": 1.3, | |
| 385 | + "areaM2": 2.34, | |
| 386 | + "wall": "Murs extérieurs", | |
| 387 | + "exterior": true | |
| 388 | + }, | |
| 389 | + { | |
| 390 | + "kind": "window", | |
| 391 | + "name": "Fenêtre Cuisine / salle à manger", | |
| 392 | + "widthM": 1.8, | |
| 393 | + "heightM": 1.3, | |
| 394 | + "areaM2": 2.34, | |
| 395 | + "wall": "Murs extérieurs", | |
| 396 | + "exterior": true | |
| 397 | + }, | |
| 398 | + { | |
| 399 | + "kind": "window", | |
| 400 | + "name": "Fenêtre Chambre principale", | |
| 401 | + "widthM": 1.2, | |
| 402 | + "heightM": 1.3, | |
| 403 | + "areaM2": 1.56, | |
| 404 | + "wall": "Murs extérieurs", | |
| 405 | + "exterior": true | |
| 406 | + }, | |
| 407 | + { | |
| 408 | + "kind": "window", | |
| 409 | + "name": "Fenêtre Chambre 2", | |
| 410 | + "widthM": 1.2, | |
| 411 | + "heightM": 1.3, | |
| 412 | + "areaM2": 1.56, | |
| 413 | + "wall": "Murs extérieurs", | |
| 414 | + "exterior": true | |
| 415 | + }, | |
| 416 | + { | |
| 417 | + "kind": "window", | |
| 418 | + "name": "Fenêtre Chambre 3", | |
| 419 | + "widthM": 1.2, | |
| 420 | + "heightM": 1.3, | |
| 421 | + "areaM2": 1.56, | |
| 422 | + "wall": "Murs extérieurs", | |
| 423 | + "exterior": true | |
| 424 | + }, | |
| 425 | + { | |
| 426 | + "kind": "window", | |
| 427 | + "name": "Fenêtre Salle de bain", | |
| 428 | + "widthM": 0.9, | |
| 429 | + "heightM": 0.9, | |
| 430 | + "areaM2": 0.81, | |
| 431 | + "wall": "Murs extérieurs", | |
| 432 | + "exterior": true | |
| 433 | + }, | |
| 434 | + { | |
| 435 | + "kind": "door", | |
| 436 | + "name": "Porte d'entrée", | |
| 437 | + "widthM": 0.9, | |
| 438 | + "heightM": 2.1, | |
| 439 | + "areaM2": 1.89, | |
| 440 | + "wall": "Murs extérieurs", | |
| 441 | + "exterior": true | |
| 442 | + }, | |
| 443 | + { | |
| 444 | + "kind": "door", | |
| 445 | + "name": "Porte-patio", | |
| 446 | + "widthM": 1.8, | |
| 447 | + "heightM": 2.1, | |
| 448 | + "areaM2": 3.78, | |
| 449 | + "wall": "Murs extérieurs", | |
| 450 | + "exterior": true | |
| 451 | + }, | |
| 452 | + { | |
| 453 | + "kind": "window", | |
| 454 | + "name": "Fenêtre latérale", | |
| 455 | + "widthM": 1.2, | |
| 456 | + "heightM": 1.3, | |
| 457 | + "areaM2": 1.56, | |
| 458 | + "wall": "Murs extérieurs", | |
| 459 | + "exterior": true | |
| 460 | + }, | |
| 461 | + { | |
| 462 | + "kind": "window", | |
| 463 | + "name": "Fenêtre latérale", | |
| 464 | + "widthM": 1.2, | |
| 465 | + "heightM": 1.3, | |
| 466 | + "areaM2": 1.56, | |
| 467 | + "wall": "Murs extérieurs", | |
| 468 | + "exterior": true | |
| 469 | + } | |
| 470 | + ], | |
| 471 | + "footprintM2": 117.5, | |
| 472 | + "totals": { | |
| 473 | + "wallLengthM": 77.55, | |
| 474 | + "wallNetAreaM2": 170.262, | |
| 475 | + "extWallNetAreaM2": 84.984, | |
| 476 | + "floorAreaM2": 102.199, | |
| 477 | + "doors": 2, | |
| 478 | + "windows": 8 | |
| 479 | + }, | |
| 116 | 480 | "windows": 8, |
| 117 | 481 | "doors": 2 |
| 118 | 482 | } |
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas2/E_tage.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas2/Rez_de_chausse_e.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas2/Sous_sol.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas2/data.json
+607 −15
@@ -60,17 +60,131 @@ | ||
| 60 | 60 | "widthPx": 830, |
| 61 | 61 | "heightPx": 705, |
| 62 | 62 | "png": "Sous_sol.png", |
| 63 | + "crop": { | |
| 64 | + "x0": 41.5, | |
| 65 | + "y0": 41.5, | |
| 66 | + "x1": 788.5, | |
| 67 | + "y1": 663.5 | |
| 68 | + }, | |
| 63 | 69 | "objects": 9, |
| 70 | + "pins": [ | |
| 71 | + { | |
| 72 | + "key": "ext", | |
| 73 | + "label": "Murs extérieurs", | |
| 74 | + "at": { | |
| 75 | + "x": 0.5, | |
| 76 | + "y": 0.866 | |
| 77 | + } | |
| 78 | + }, | |
| 79 | + { | |
| 80 | + "key": "int", | |
| 81 | + "label": "Cloisons", | |
| 82 | + "at": { | |
| 83 | + "x": 0.313, | |
| 84 | + "y": 0.745 | |
| 85 | + } | |
| 86 | + }, | |
| 87 | + { | |
| 88 | + "key": "win", | |
| 89 | + "label": "Fenêtres", | |
| 90 | + "at": { | |
| 91 | + "x": 0.345, | |
| 92 | + "y": 0.134 | |
| 93 | + } | |
| 94 | + }, | |
| 95 | + { | |
| 96 | + "key": "room", | |
| 97 | + "label": "Pièces (aire, périmètre)", | |
| 98 | + "at": { | |
| 99 | + "x": 0.5, | |
| 100 | + "y": 0.5 | |
| 101 | + } | |
| 102 | + }, | |
| 103 | + { | |
| 104 | + "key": "fp", | |
| 105 | + "label": "Empreinte et périmètre", | |
| 106 | + "at": { | |
| 107 | + "x": 0.112, | |
| 108 | + "y": 0.865 | |
| 109 | + } | |
| 110 | + } | |
| 111 | + ], | |
| 112 | + "walls": [ | |
| 113 | + { | |
| 114 | + "name": "Murs extérieurs", | |
| 115 | + "exterior": true, | |
| 116 | + "lengthM": 41.4, | |
| 117 | + "heightM": 2.44, | |
| 118 | + "thicknessM": 0.3, | |
| 119 | + "grossAreaM2": 101.016, | |
| 120 | + "openingsAreaM2": 1.2, | |
| 121 | + "netAreaM2": 99.816 | |
| 122 | + }, | |
| 123 | + { | |
| 124 | + "name": "Cloison salle mécanique", | |
| 125 | + "exterior": false, | |
| 126 | + "lengthM": 6, | |
| 127 | + "heightM": 2.3, | |
| 128 | + "thicknessM": 0.12, | |
| 129 | + "grossAreaM2": 13.8, | |
| 130 | + "openingsAreaM2": 0, | |
| 131 | + "netAreaM2": 13.8 | |
| 132 | + } | |
| 133 | + ], | |
| 64 | 134 | "rooms": [ |
| 65 | 135 | { |
| 66 | 136 | "name": "Sous-sol", |
| 67 | − "usage": "sous-sol" | |
| 137 | + "usage": "sous-sol", | |
| 138 | + "areaM2": 101.46, | |
| 139 | + "perimeterM": 40.6, | |
| 140 | + "heightM": 2.3 | |
| 68 | 141 | }, |
| 69 | 142 | { |
| 70 | 143 | "name": "Salle mécanique", |
| 71 | − "usage": "salle mécanique" | |
| 144 | + "usage": "salle mécanique", | |
| 145 | + "areaM2": 7.84, | |
| 146 | + "perimeterM": 11.2, | |
| 147 | + "heightM": 2.3 | |
| 148 | + } | |
| 149 | + ], | |
| 150 | + "openings": [ | |
| 151 | + { | |
| 152 | + "kind": "window", | |
| 153 | + "name": "Fenêtre de sous-sol", | |
| 154 | + "widthM": 0.8, | |
| 155 | + "heightM": 0.5, | |
| 156 | + "areaM2": 0.4, | |
| 157 | + "wall": "Murs extérieurs", | |
| 158 | + "exterior": true | |
| 159 | + }, | |
| 160 | + { | |
| 161 | + "kind": "window", | |
| 162 | + "name": "Fenêtre de sous-sol", | |
| 163 | + "widthM": 0.8, | |
| 164 | + "heightM": 0.5, | |
| 165 | + "areaM2": 0.4, | |
| 166 | + "wall": "Murs extérieurs", | |
| 167 | + "exterior": true | |
| 168 | + }, | |
| 169 | + { | |
| 170 | + "kind": "window", | |
| 171 | + "name": "Fenêtre de sous-sol", | |
| 172 | + "widthM": 0.8, | |
| 173 | + "heightM": 0.5, | |
| 174 | + "areaM2": 0.4, | |
| 175 | + "wall": "Murs extérieurs", | |
| 176 | + "exterior": true | |
| 72 | 177 | } |
| 73 | 178 | ], |
| 179 | + "footprintM2": 111.86, | |
| 180 | + "totals": { | |
| 181 | + "wallLengthM": 47.4, | |
| 182 | + "wallNetAreaM2": 113.616, | |
| 183 | + "extWallNetAreaM2": 99.816, | |
| 184 | + "floorAreaM2": 109.3, | |
| 185 | + "doors": 0, | |
| 186 | + "windows": 3 | |
| 187 | + }, | |
| 74 | 188 | "windows": 3, |
| 75 | 189 | "doors": 0 |
| 76 | 190 | }, |
@@ -82,37 +196,287 @@ | ||
| 82 | 196 | "widthPx": 1045, |
| 83 | 197 | "heightPx": 705, |
| 84 | 198 | "png": "Rez_de_chausse_e.png", |
| 199 | + "crop": { | |
| 200 | + "x0": 41.5, | |
| 201 | + "y0": 41.5, | |
| 202 | + "x1": 1003.5, | |
| 203 | + "y1": 663.5 | |
| 204 | + }, | |
| 85 | 205 | "objects": 27, |
| 206 | + "pins": [ | |
| 207 | + { | |
| 208 | + "key": "ext", | |
| 209 | + "label": "Murs extérieurs", | |
| 210 | + "at": { | |
| 211 | + "x": 0.388, | |
| 212 | + "y": 0.866 | |
| 213 | + } | |
| 214 | + }, | |
| 215 | + { | |
| 216 | + "key": "int", | |
| 217 | + "label": "Cloisons", | |
| 218 | + "at": { | |
| 219 | + "x": 0.388, | |
| 220 | + "y": 0.5 | |
| 221 | + } | |
| 222 | + }, | |
| 223 | + { | |
| 224 | + "key": "win", | |
| 225 | + "label": "Fenêtres", | |
| 226 | + "at": { | |
| 227 | + "x": 0.238, | |
| 228 | + "y": 0.866 | |
| 229 | + } | |
| 230 | + }, | |
| 231 | + { | |
| 232 | + "key": "door", | |
| 233 | + "label": "Portes", | |
| 234 | + "at": { | |
| 235 | + "x": 0.159, | |
| 236 | + "y": 0.866 | |
| 237 | + } | |
| 238 | + }, | |
| 239 | + { | |
| 240 | + "key": "room", | |
| 241 | + "label": "Pièces (aire, périmètre)", | |
| 242 | + "at": { | |
| 243 | + "x": 0.801, | |
| 244 | + "y": 0.404 | |
| 245 | + } | |
| 246 | + }, | |
| 247 | + { | |
| 248 | + "key": "fp", | |
| 249 | + "label": "Empreinte et périmètre", | |
| 250 | + "at": { | |
| 251 | + "x": 0.087, | |
| 252 | + "y": 0.865 | |
| 253 | + } | |
| 254 | + } | |
| 255 | + ], | |
| 256 | + "walls": [ | |
| 257 | + { | |
| 258 | + "name": "Murs extérieurs", | |
| 259 | + "exterior": true, | |
| 260 | + "lengthM": 41.4, | |
| 261 | + "heightM": 2.44, | |
| 262 | + "thicknessM": 0.3, | |
| 263 | + "grossAreaM2": 101.016, | |
| 264 | + "openingsAreaM2": 16.59, | |
| 265 | + "netAreaM2": 84.426 | |
| 266 | + }, | |
| 267 | + { | |
| 268 | + "name": "Cloison centrale", | |
| 269 | + "exterior": false, | |
| 270 | + "lengthM": 11.6, | |
| 271 | + "heightM": 2.44, | |
| 272 | + "thicknessM": 0.12, | |
| 273 | + "grossAreaM2": 28.304, | |
| 274 | + "openingsAreaM2": 0, | |
| 275 | + "netAreaM2": 28.304 | |
| 276 | + }, | |
| 277 | + { | |
| 278 | + "name": "Cloison Salon", | |
| 279 | + "exterior": false, | |
| 280 | + "lengthM": 4.55, | |
| 281 | + "heightM": 2.44, | |
| 282 | + "thicknessM": 0.12, | |
| 283 | + "grossAreaM2": 11.102, | |
| 284 | + "openingsAreaM2": 0, | |
| 285 | + "netAreaM2": 11.102 | |
| 286 | + }, | |
| 287 | + { | |
| 288 | + "name": "Cloison Salle à manger", | |
| 289 | + "exterior": false, | |
| 290 | + "lengthM": 4.55, | |
| 291 | + "heightM": 2.44, | |
| 292 | + "thicknessM": 0.12, | |
| 293 | + "grossAreaM2": 11.102, | |
| 294 | + "openingsAreaM2": 0, | |
| 295 | + "netAreaM2": 11.102 | |
| 296 | + }, | |
| 297 | + { | |
| 298 | + "name": "Cloison Cuisine", | |
| 299 | + "exterior": false, | |
| 300 | + "lengthM": 4.55, | |
| 301 | + "heightM": 2.44, | |
| 302 | + "thicknessM": 0.12, | |
| 303 | + "grossAreaM2": 11.102, | |
| 304 | + "openingsAreaM2": 0, | |
| 305 | + "netAreaM2": 11.102 | |
| 306 | + }, | |
| 307 | + { | |
| 308 | + "name": "Cloison Bureau / salle familiale", | |
| 309 | + "exterior": false, | |
| 310 | + "lengthM": 4.55, | |
| 311 | + "heightM": 2.44, | |
| 312 | + "thicknessM": 0.12, | |
| 313 | + "grossAreaM2": 11.102, | |
| 314 | + "openingsAreaM2": 0, | |
| 315 | + "netAreaM2": 11.102 | |
| 316 | + }, | |
| 317 | + { | |
| 318 | + "name": "Murs du garage", | |
| 319 | + "exterior": true, | |
| 320 | + "lengthM": 15.3, | |
| 321 | + "heightM": 3, | |
| 322 | + "thicknessM": 0.3, | |
| 323 | + "grossAreaM2": 45.9, | |
| 324 | + "openingsAreaM2": 6.39, | |
| 325 | + "netAreaM2": 39.51 | |
| 326 | + } | |
| 327 | + ], | |
| 86 | 328 | "rooms": [ |
| 87 | 329 | { |
| 88 | 330 | "name": "Salon", |
| 89 | − "usage": "séjour" | |
| 331 | + "usage": "séjour", | |
| 332 | + "areaM2": 24.76, | |
| 333 | + "perimeterM": 20.06, | |
| 334 | + "heightM": 2.44 | |
| 90 | 335 | }, |
| 91 | 336 | { |
| 92 | 337 | "name": "Salle à manger", |
| 93 | − "usage": "salle à manger" | |
| 338 | + "usage": "salle à manger", | |
| 339 | + "areaM2": 14.575, | |
| 340 | + "perimeterM": 15.42, | |
| 341 | + "heightM": 2.44 | |
| 94 | 342 | }, |
| 95 | 343 | { |
| 96 | 344 | "name": "Hall / escalier", |
| 97 | − "usage": "hall" | |
| 345 | + "usage": "hall", | |
| 346 | + "areaM2": 9.482, | |
| 347 | + "perimeterM": 13.1, | |
| 348 | + "heightM": 2.44 | |
| 98 | 349 | }, |
| 99 | 350 | { |
| 100 | 351 | "name": "Cuisine", |
| 101 | − "usage": "cuisine" | |
| 352 | + "usage": "cuisine", | |
| 353 | + "areaM2": 22.213, | |
| 354 | + "perimeterM": 18.9, | |
| 355 | + "heightM": 2.44 | |
| 102 | 356 | }, |
| 103 | 357 | { |
| 104 | 358 | "name": "Bureau / salle familiale", |
| 105 | − "usage": "bureau" | |
| 359 | + "usage": "bureau", | |
| 360 | + "areaM2": 17.121, | |
| 361 | + "perimeterM": 16.58, | |
| 362 | + "heightM": 2.44 | |
| 106 | 363 | }, |
| 107 | 364 | { |
| 108 | 365 | "name": "Salle d'eau", |
| 109 | − "usage": "salle d'eau" | |
| 366 | + "usage": "salle d'eau", | |
| 367 | + "areaM2": 9.482, | |
| 368 | + "perimeterM": 13.1, | |
| 369 | + "heightM": 2.44 | |
| 110 | 370 | }, |
| 111 | 371 | { |
| 112 | 372 | "name": "Garage", |
| 113 | − "usage": "garage" | |
| 373 | + "usage": "garage", | |
| 374 | + "areaM2": 26.65, | |
| 375 | + "perimeterM": 21.2, | |
| 376 | + "heightM": 3 | |
| 377 | + } | |
| 378 | + ], | |
| 379 | + "openings": [ | |
| 380 | + { | |
| 381 | + "kind": "window", | |
| 382 | + "name": "Fenêtre Salon", | |
| 383 | + "widthM": 1.8, | |
| 384 | + "heightM": 1.3, | |
| 385 | + "areaM2": 2.34, | |
| 386 | + "wall": "Murs extérieurs", | |
| 387 | + "exterior": true | |
| 388 | + }, | |
| 389 | + { | |
| 390 | + "kind": "window", | |
| 391 | + "name": "Fenêtre Salle à manger", | |
| 392 | + "widthM": 1.2, | |
| 393 | + "heightM": 1.3, | |
| 394 | + "areaM2": 1.56, | |
| 395 | + "wall": "Murs extérieurs", | |
| 396 | + "exterior": true | |
| 397 | + }, | |
| 398 | + { | |
| 399 | + "kind": "window", | |
| 400 | + "name": "Fenêtre Cuisine", | |
| 401 | + "widthM": 1.8, | |
| 402 | + "heightM": 1.3, | |
| 403 | + "areaM2": 2.34, | |
| 404 | + "wall": "Murs extérieurs", | |
| 405 | + "exterior": true | |
| 406 | + }, | |
| 407 | + { | |
| 408 | + "kind": "window", | |
| 409 | + "name": "Fenêtre Bureau / salle familiale", | |
| 410 | + "widthM": 1.2, | |
| 411 | + "heightM": 1.3, | |
| 412 | + "areaM2": 1.56, | |
| 413 | + "wall": "Murs extérieurs", | |
| 414 | + "exterior": true | |
| 415 | + }, | |
| 416 | + { | |
| 417 | + "kind": "door", | |
| 418 | + "name": "Porte d'entrée", | |
| 419 | + "widthM": 0.9, | |
| 420 | + "heightM": 2.1, | |
| 421 | + "areaM2": 1.89, | |
| 422 | + "wall": "Murs extérieurs", | |
| 423 | + "exterior": true | |
| 424 | + }, | |
| 425 | + { | |
| 426 | + "kind": "door", | |
| 427 | + "name": "Porte-patio", | |
| 428 | + "widthM": 1.8, | |
| 429 | + "heightM": 2.1, | |
| 430 | + "areaM2": 3.78, | |
| 431 | + "wall": "Murs extérieurs", | |
| 432 | + "exterior": true | |
| 433 | + }, | |
| 434 | + { | |
| 435 | + "kind": "window", | |
| 436 | + "name": "Fenêtre latérale", | |
| 437 | + "widthM": 1.2, | |
| 438 | + "heightM": 1.3, | |
| 439 | + "areaM2": 1.56, | |
| 440 | + "wall": "Murs extérieurs", | |
| 441 | + "exterior": true | |
| 442 | + }, | |
| 443 | + { | |
| 444 | + "kind": "window", | |
| 445 | + "name": "Fenêtre latérale", | |
| 446 | + "widthM": 1.2, | |
| 447 | + "heightM": 1.3, | |
| 448 | + "areaM2": 1.56, | |
| 449 | + "wall": "Murs extérieurs", | |
| 450 | + "exterior": true | |
| 451 | + }, | |
| 452 | + { | |
| 453 | + "kind": "door", | |
| 454 | + "name": "Porte de garage", | |
| 455 | + "widthM": 2.7, | |
| 456 | + "heightM": 2.1, | |
| 457 | + "areaM2": 5.67, | |
| 458 | + "wall": "Murs du garage", | |
| 459 | + "exterior": true | |
| 460 | + }, | |
| 461 | + { | |
| 462 | + "kind": "window", | |
| 463 | + "name": "Fenêtre garage", | |
| 464 | + "widthM": 0.9, | |
| 465 | + "heightM": 0.8, | |
| 466 | + "areaM2": 0.72, | |
| 467 | + "wall": "Murs du garage", | |
| 468 | + "exterior": true | |
| 114 | 469 | } |
| 115 | 470 | ], |
| 471 | + "footprintM2": 111.86, | |
| 472 | + "totals": { | |
| 473 | + "wallLengthM": 86.5, | |
| 474 | + "wallNetAreaM2": 196.648, | |
| 475 | + "extWallNetAreaM2": 123.936, | |
| 476 | + "floorAreaM2": 124.283, | |
| 477 | + "doors": 3, | |
| 478 | + "windows": 7 | |
| 479 | + }, | |
| 116 | 480 | "windows": 7, |
| 117 | 481 | "doors": 3 |
| 118 | 482 | }, |
@@ -124,33 +488,261 @@ | ||
| 124 | 488 | "widthPx": 830, |
| 125 | 489 | "heightPx": 705, |
| 126 | 490 | "png": "E_tage.png", |
| 491 | + "crop": { | |
| 492 | + "x0": 41.5, | |
| 493 | + "y0": 41.5, | |
| 494 | + "x1": 788.5, | |
| 495 | + "y1": 663.5 | |
| 496 | + }, | |
| 127 | 497 | "objects": 23, |
| 498 | + "pins": [ | |
| 499 | + { | |
| 500 | + "key": "ext", | |
| 501 | + "label": "Murs extérieurs", | |
| 502 | + "at": { | |
| 503 | + "x": 0.5, | |
| 504 | + "y": 0.866 | |
| 505 | + } | |
| 506 | + }, | |
| 507 | + { | |
| 508 | + "key": "int", | |
| 509 | + "label": "Cloisons", | |
| 510 | + "at": { | |
| 511 | + "x": 0.5, | |
| 512 | + "y": 0.5 | |
| 513 | + } | |
| 514 | + }, | |
| 515 | + { | |
| 516 | + "key": "win", | |
| 517 | + "label": "Fenêtres", | |
| 518 | + "at": { | |
| 519 | + "x": 0.286, | |
| 520 | + "y": 0.866 | |
| 521 | + } | |
| 522 | + }, | |
| 523 | + { | |
| 524 | + "key": "door", | |
| 525 | + "label": "Portes", | |
| 526 | + "at": { | |
| 527 | + "x": 0.205, | |
| 528 | + "y": 0.866 | |
| 529 | + } | |
| 530 | + }, | |
| 531 | + { | |
| 532 | + "key": "room", | |
| 533 | + "label": "Pièces (aire, périmètre)", | |
| 534 | + "at": { | |
| 535 | + "x": 0.286, | |
| 536 | + "y": 0.683 | |
| 537 | + } | |
| 538 | + }, | |
| 539 | + { | |
| 540 | + "key": "fp", | |
| 541 | + "label": "Empreinte et périmètre", | |
| 542 | + "at": { | |
| 543 | + "x": 0.112, | |
| 544 | + "y": 0.865 | |
| 545 | + } | |
| 546 | + } | |
| 547 | + ], | |
| 548 | + "walls": [ | |
| 549 | + { | |
| 550 | + "name": "Murs extérieurs", | |
| 551 | + "exterior": true, | |
| 552 | + "lengthM": 41.4, | |
| 553 | + "heightM": 2.44, | |
| 554 | + "thicknessM": 0.3, | |
| 555 | + "grossAreaM2": 101.016, | |
| 556 | + "openingsAreaM2": 15.84, | |
| 557 | + "netAreaM2": 85.176 | |
| 558 | + }, | |
| 559 | + { | |
| 560 | + "name": "Cloison centrale", | |
| 561 | + "exterior": false, | |
| 562 | + "lengthM": 11.6, | |
| 563 | + "heightM": 2.44, | |
| 564 | + "thicknessM": 0.12, | |
| 565 | + "grossAreaM2": 28.304, | |
| 566 | + "openingsAreaM2": 0, | |
| 567 | + "netAreaM2": 28.304 | |
| 568 | + }, | |
| 569 | + { | |
| 570 | + "name": "Cloison Chambre principale", | |
| 571 | + "exterior": false, | |
| 572 | + "lengthM": 4.55, | |
| 573 | + "heightM": 2.44, | |
| 574 | + "thicknessM": 0.12, | |
| 575 | + "grossAreaM2": 11.102, | |
| 576 | + "openingsAreaM2": 0, | |
| 577 | + "netAreaM2": 11.102 | |
| 578 | + }, | |
| 579 | + { | |
| 580 | + "name": "Cloison Salle de bain", | |
| 581 | + "exterior": false, | |
| 582 | + "lengthM": 4.55, | |
| 583 | + "heightM": 2.44, | |
| 584 | + "thicknessM": 0.12, | |
| 585 | + "grossAreaM2": 11.102, | |
| 586 | + "openingsAreaM2": 0, | |
| 587 | + "netAreaM2": 11.102 | |
| 588 | + }, | |
| 589 | + { | |
| 590 | + "name": "Cloison Chambre 2", | |
| 591 | + "exterior": false, | |
| 592 | + "lengthM": 4.55, | |
| 593 | + "heightM": 2.44, | |
| 594 | + "thicknessM": 0.12, | |
| 595 | + "grossAreaM2": 11.102, | |
| 596 | + "openingsAreaM2": 0, | |
| 597 | + "netAreaM2": 11.102 | |
| 598 | + }, | |
| 599 | + { | |
| 600 | + "name": "Cloison Chambre 3", | |
| 601 | + "exterior": false, | |
| 602 | + "lengthM": 4.55, | |
| 603 | + "heightM": 2.44, | |
| 604 | + "thicknessM": 0.12, | |
| 605 | + "grossAreaM2": 11.102, | |
| 606 | + "openingsAreaM2": 0, | |
| 607 | + "netAreaM2": 11.102 | |
| 608 | + } | |
| 609 | + ], | |
| 128 | 610 | "rooms": [ |
| 129 | 611 | { |
| 130 | 612 | "name": "Chambre principale", |
| 131 | − "usage": "chambre" | |
| 613 | + "usage": "chambre", | |
| 614 | + "areaM2": 22.213, | |
| 615 | + "perimeterM": 18.9, | |
| 616 | + "heightM": 2.44 | |
| 132 | 617 | }, |
| 133 | 618 | { |
| 134 | 619 | "name": "Salle de bain", |
| 135 | − "usage": "salle de bain" | |
| 620 | + "usage": "salle de bain", | |
| 621 | + "areaM2": 12.029, | |
| 622 | + "perimeterM": 14.26, | |
| 623 | + "heightM": 2.44 | |
| 136 | 624 | }, |
| 137 | 625 | { |
| 138 | 626 | "name": "Hall / escalier", |
| 139 | − "usage": "hall" | |
| 627 | + "usage": "hall", | |
| 628 | + "areaM2": 14.575, | |
| 629 | + "perimeterM": 15.42, | |
| 630 | + "heightM": 2.44 | |
| 140 | 631 | }, |
| 141 | 632 | { |
| 142 | 633 | "name": "Chambre 2", |
| 143 | − "usage": "chambre" | |
| 634 | + "usage": "chambre", | |
| 635 | + "areaM2": 18.139, | |
| 636 | + "perimeterM": 17.044, | |
| 637 | + "heightM": 2.44 | |
| 144 | 638 | }, |
| 145 | 639 | { |
| 146 | 640 | "name": "Chambre 3", |
| 147 | − "usage": "chambre" | |
| 641 | + "usage": "chambre", | |
| 642 | + "areaM2": 16.103, | |
| 643 | + "perimeterM": 16.116, | |
| 644 | + "heightM": 2.44 | |
| 148 | 645 | }, |
| 149 | 646 | { |
| 150 | 647 | "name": "Chambre 4", |
| 151 | − "usage": "chambre" | |
| 648 | + "usage": "chambre", | |
| 649 | + "areaM2": 14.575, | |
| 650 | + "perimeterM": 15.42, | |
| 651 | + "heightM": 2.44 | |
| 152 | 652 | } |
| 153 | 653 | ], |
| 654 | + "openings": [ | |
| 655 | + { | |
| 656 | + "kind": "window", | |
| 657 | + "name": "Fenêtre Chambre principale", | |
| 658 | + "widthM": 1.2, | |
| 659 | + "heightM": 1.3, | |
| 660 | + "areaM2": 1.56, | |
| 661 | + "wall": "Murs extérieurs", | |
| 662 | + "exterior": true | |
| 663 | + }, | |
| 664 | + { | |
| 665 | + "kind": "window", | |
| 666 | + "name": "Fenêtre Salle de bain", | |
| 667 | + "widthM": 0.9, | |
| 668 | + "heightM": 0.9, | |
| 669 | + "areaM2": 0.81, | |
| 670 | + "wall": "Murs extérieurs", | |
| 671 | + "exterior": true | |
| 672 | + }, | |
| 673 | + { | |
| 674 | + "kind": "window", | |
| 675 | + "name": "Fenêtre Chambre 2", | |
| 676 | + "widthM": 1.2, | |
| 677 | + "heightM": 1.3, | |
| 678 | + "areaM2": 1.56, | |
| 679 | + "wall": "Murs extérieurs", | |
| 680 | + "exterior": true | |
| 681 | + }, | |
| 682 | + { | |
| 683 | + "kind": "window", | |
| 684 | + "name": "Fenêtre Chambre 3", | |
| 685 | + "widthM": 1.2, | |
| 686 | + "heightM": 1.3, | |
| 687 | + "areaM2": 1.56, | |
| 688 | + "wall": "Murs extérieurs", | |
| 689 | + "exterior": true | |
| 690 | + }, | |
| 691 | + { | |
| 692 | + "kind": "window", | |
| 693 | + "name": "Fenêtre Chambre 4", | |
| 694 | + "widthM": 1.2, | |
| 695 | + "heightM": 1.3, | |
| 696 | + "areaM2": 1.56, | |
| 697 | + "wall": "Murs extérieurs", | |
| 698 | + "exterior": true | |
| 699 | + }, | |
| 700 | + { | |
| 701 | + "kind": "door", | |
| 702 | + "name": "Porte d'entrée", | |
| 703 | + "widthM": 0.9, | |
| 704 | + "heightM": 2.1, | |
| 705 | + "areaM2": 1.89, | |
| 706 | + "wall": "Murs extérieurs", | |
| 707 | + "exterior": true | |
| 708 | + }, | |
| 709 | + { | |
| 710 | + "kind": "door", | |
| 711 | + "name": "Porte-patio", | |
| 712 | + "widthM": 1.8, | |
| 713 | + "heightM": 2.1, | |
| 714 | + "areaM2": 3.78, | |
| 715 | + "wall": "Murs extérieurs", | |
| 716 | + "exterior": true | |
| 717 | + }, | |
| 718 | + { | |
| 719 | + "kind": "window", | |
| 720 | + "name": "Fenêtre latérale", | |
| 721 | + "widthM": 1.2, | |
| 722 | + "heightM": 1.3, | |
| 723 | + "areaM2": 1.56, | |
| 724 | + "wall": "Murs extérieurs", | |
| 725 | + "exterior": true | |
| 726 | + }, | |
| 727 | + { | |
| 728 | + "kind": "window", | |
| 729 | + "name": "Fenêtre latérale", | |
| 730 | + "widthM": 1.2, | |
| 731 | + "heightM": 1.3, | |
| 732 | + "areaM2": 1.56, | |
| 733 | + "wall": "Murs extérieurs", | |
| 734 | + "exterior": true | |
| 735 | + } | |
| 736 | + ], | |
| 737 | + "footprintM2": 111.86, | |
| 738 | + "totals": { | |
| 739 | + "wallLengthM": 71.2, | |
| 740 | + "wallNetAreaM2": 157.888, | |
| 741 | + "extWallNetAreaM2": 85.176, | |
| 742 | + "floorAreaM2": 97.634, | |
| 743 | + "doors": 2, | |
| 744 | + "windows": 7 | |
| 745 | + }, | |
| 154 | 746 | "windows": 7, |
| 155 | 747 | "doors": 2 |
| 156 | 748 | } |
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas3/2e_e_tage.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas3/E_tage.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas3/Rez_de_chausse_e.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas3/Sous_sol.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas3/data.json
+776 −17
@@ -60,17 +60,131 @@ | ||
| 60 | 60 | "widthPx": 830, |
| 61 | 61 | "heightPx": 770, |
| 62 | 62 | "png": "Sous_sol.png", |
| 63 | + "crop": { | |
| 64 | + "x0": 41.5, | |
| 65 | + "y0": 41.5, | |
| 66 | + "x1": 788.5, | |
| 67 | + "y1": 728.5 | |
| 68 | + }, | |
| 63 | 69 | "objects": 9, |
| 70 | + "pins": [ | |
| 71 | + { | |
| 72 | + "key": "ext", | |
| 73 | + "label": "Murs extérieurs", | |
| 74 | + "at": { | |
| 75 | + "x": 0.5, | |
| 76 | + "y": 0.878 | |
| 77 | + } | |
| 78 | + }, | |
| 79 | + { | |
| 80 | + "key": "int", | |
| 81 | + "label": "Cloisons", | |
| 82 | + "at": { | |
| 83 | + "x": 0.313, | |
| 84 | + "y": 0.769 | |
| 85 | + } | |
| 86 | + }, | |
| 87 | + { | |
| 88 | + "key": "win", | |
| 89 | + "label": "Fenêtres", | |
| 90 | + "at": { | |
| 91 | + "x": 0.345, | |
| 92 | + "y": 0.122 | |
| 93 | + } | |
| 94 | + }, | |
| 95 | + { | |
| 96 | + "key": "room", | |
| 97 | + "label": "Pièces (aire, périmètre)", | |
| 98 | + "at": { | |
| 99 | + "x": 0.5, | |
| 100 | + "y": 0.5 | |
| 101 | + } | |
| 102 | + }, | |
| 103 | + { | |
| 104 | + "key": "fp", | |
| 105 | + "label": "Empreinte et périmètre", | |
| 106 | + "at": { | |
| 107 | + "x": 0.112, | |
| 108 | + "y": 0.878 | |
| 109 | + } | |
| 110 | + } | |
| 111 | + ], | |
| 112 | + "walls": [ | |
| 113 | + { | |
| 114 | + "name": "Murs extérieurs", | |
| 115 | + "exterior": true, | |
| 116 | + "lengthM": 44, | |
| 117 | + "heightM": 2.44, | |
| 118 | + "thicknessM": 0.3, | |
| 119 | + "grossAreaM2": 107.36, | |
| 120 | + "openingsAreaM2": 1.2, | |
| 121 | + "netAreaM2": 106.16 | |
| 122 | + }, | |
| 123 | + { | |
| 124 | + "name": "Cloison salle mécanique", | |
| 125 | + "exterior": false, | |
| 126 | + "lengthM": 6, | |
| 127 | + "heightM": 2.3, | |
| 128 | + "thicknessM": 0.12, | |
| 129 | + "grossAreaM2": 13.8, | |
| 130 | + "openingsAreaM2": 0, | |
| 131 | + "netAreaM2": 13.8 | |
| 132 | + } | |
| 133 | + ], | |
| 64 | 134 | "rooms": [ |
| 65 | 135 | { |
| 66 | 136 | "name": "Sous-sol", |
| 67 | − "usage": "sous-sol" | |
| 137 | + "usage": "sous-sol", | |
| 138 | + "areaM2": 116.28, | |
| 139 | + "perimeterM": 43.2, | |
| 140 | + "heightM": 2.3 | |
| 68 | 141 | }, |
| 69 | 142 | { |
| 70 | 143 | "name": "Salle mécanique", |
| 71 | − "usage": "salle mécanique" | |
| 144 | + "usage": "salle mécanique", | |
| 145 | + "areaM2": 7.84, | |
| 146 | + "perimeterM": 11.2, | |
| 147 | + "heightM": 2.3 | |
| 72 | 148 | } |
| 73 | 149 | ], |
| 150 | + "openings": [ | |
| 151 | + { | |
| 152 | + "kind": "window", | |
| 153 | + "name": "Fenêtre de sous-sol", | |
| 154 | + "widthM": 0.8, | |
| 155 | + "heightM": 0.5, | |
| 156 | + "areaM2": 0.4, | |
| 157 | + "wall": "Murs extérieurs", | |
| 158 | + "exterior": true | |
| 159 | + }, | |
| 160 | + { | |
| 161 | + "kind": "window", | |
| 162 | + "name": "Fenêtre de sous-sol", | |
| 163 | + "widthM": 0.8, | |
| 164 | + "heightM": 0.5, | |
| 165 | + "areaM2": 0.4, | |
| 166 | + "wall": "Murs extérieurs", | |
| 167 | + "exterior": true | |
| 168 | + }, | |
| 169 | + { | |
| 170 | + "kind": "window", | |
| 171 | + "name": "Fenêtre de sous-sol", | |
| 172 | + "widthM": 0.8, | |
| 173 | + "heightM": 0.5, | |
| 174 | + "areaM2": 0.4, | |
| 175 | + "wall": "Murs extérieurs", | |
| 176 | + "exterior": true | |
| 177 | + } | |
| 178 | + ], | |
| 179 | + "footprintM2": 127.33, | |
| 180 | + "totals": { | |
| 181 | + "wallLengthM": 50, | |
| 182 | + "wallNetAreaM2": 119.96, | |
| 183 | + "extWallNetAreaM2": 106.16, | |
| 184 | + "floorAreaM2": 124.12, | |
| 185 | + "doors": 0, | |
| 186 | + "windows": 3 | |
| 187 | + }, | |
| 74 | 188 | "windows": 3, |
| 75 | 189 | "doors": 0 |
| 76 | 190 | }, |
@@ -82,29 +196,244 @@ | ||
| 82 | 196 | "widthPx": 830, |
| 83 | 197 | "heightPx": 770, |
| 84 | 198 | "png": "Rez_de_chausse_e.png", |
| 199 | + "crop": { | |
| 200 | + "x0": 41.5, | |
| 201 | + "y0": 41.5, | |
| 202 | + "x1": 788.5, | |
| 203 | + "y1": 728.5 | |
| 204 | + }, | |
| 85 | 205 | "objects": 20, |
| 206 | + "pins": [ | |
| 207 | + { | |
| 208 | + "key": "ext", | |
| 209 | + "label": "Murs extérieurs", | |
| 210 | + "at": { | |
| 211 | + "x": 0.5, | |
| 212 | + "y": 0.878 | |
| 213 | + } | |
| 214 | + }, | |
| 215 | + { | |
| 216 | + "key": "int", | |
| 217 | + "label": "Cloisons", | |
| 218 | + "at": { | |
| 219 | + "x": 0.5, | |
| 220 | + "y": 0.5 | |
| 221 | + } | |
| 222 | + }, | |
| 223 | + { | |
| 224 | + "key": "win", | |
| 225 | + "label": "Fenêtres", | |
| 226 | + "at": { | |
| 227 | + "x": 0.306, | |
| 228 | + "y": 0.878 | |
| 229 | + } | |
| 230 | + }, | |
| 231 | + { | |
| 232 | + "key": "door", | |
| 233 | + "label": "Portes", | |
| 234 | + "at": { | |
| 235 | + "x": 0.205, | |
| 236 | + "y": 0.878 | |
| 237 | + } | |
| 238 | + }, | |
| 239 | + { | |
| 240 | + "key": "room", | |
| 241 | + "label": "Pièces (aire, périmètre)", | |
| 242 | + "at": { | |
| 243 | + "x": 0.306, | |
| 244 | + "y": 0.689 | |
| 245 | + } | |
| 246 | + }, | |
| 247 | + { | |
| 248 | + "key": "fp", | |
| 249 | + "label": "Empreinte et périmètre", | |
| 250 | + "at": { | |
| 251 | + "x": 0.112, | |
| 252 | + "y": 0.878 | |
| 253 | + } | |
| 254 | + } | |
| 255 | + ], | |
| 256 | + "walls": [ | |
| 257 | + { | |
| 258 | + "name": "Murs extérieurs", | |
| 259 | + "exterior": true, | |
| 260 | + "lengthM": 44, | |
| 261 | + "heightM": 2.44, | |
| 262 | + "thicknessM": 0.3, | |
| 263 | + "grossAreaM2": 107.36, | |
| 264 | + "openingsAreaM2": 17.4, | |
| 265 | + "netAreaM2": 89.96 | |
| 266 | + }, | |
| 267 | + { | |
| 268 | + "name": "Logement 1 — Cloison centrale", | |
| 269 | + "exterior": false, | |
| 270 | + "lengthM": 11.6, | |
| 271 | + "heightM": 2.44, | |
| 272 | + "thicknessM": 0.12, | |
| 273 | + "grossAreaM2": 28.304, | |
| 274 | + "openingsAreaM2": 0, | |
| 275 | + "netAreaM2": 28.304 | |
| 276 | + }, | |
| 277 | + { | |
| 278 | + "name": "Logement 1 — Cloison Séjour", | |
| 279 | + "exterior": false, | |
| 280 | + "lengthM": 5.2, | |
| 281 | + "heightM": 2.44, | |
| 282 | + "thicknessM": 0.12, | |
| 283 | + "grossAreaM2": 12.688, | |
| 284 | + "openingsAreaM2": 0, | |
| 285 | + "netAreaM2": 12.688 | |
| 286 | + }, | |
| 287 | + { | |
| 288 | + "name": "Logement 1 — Cloison Chambre 1", | |
| 289 | + "exterior": false, | |
| 290 | + "lengthM": 5.2, | |
| 291 | + "heightM": 2.44, | |
| 292 | + "thicknessM": 0.12, | |
| 293 | + "grossAreaM2": 12.688, | |
| 294 | + "openingsAreaM2": 0, | |
| 295 | + "netAreaM2": 12.688 | |
| 296 | + }, | |
| 297 | + { | |
| 298 | + "name": "Logement 1 — Cloison Chambre 2", | |
| 299 | + "exterior": false, | |
| 300 | + "lengthM": 5.2, | |
| 301 | + "heightM": 2.44, | |
| 302 | + "thicknessM": 0.12, | |
| 303 | + "grossAreaM2": 12.688, | |
| 304 | + "openingsAreaM2": 0, | |
| 305 | + "netAreaM2": 12.688 | |
| 306 | + } | |
| 307 | + ], | |
| 86 | 308 | "rooms": [ |
| 87 | 309 | { |
| 88 | 310 | "name": "Logement 1 — Séjour", |
| 89 | − "usage": "séjour" | |
| 311 | + "usage": "séjour", | |
| 312 | + "areaM2": 28.426, | |
| 313 | + "perimeterM": 21.36, | |
| 314 | + "heightM": 2.44 | |
| 90 | 315 | }, |
| 91 | 316 | { |
| 92 | 317 | "name": "Logement 1 — Cuisine / salle à manger", |
| 93 | − "usage": "cuisine" | |
| 318 | + "usage": "cuisine", | |
| 319 | + "areaM2": 28.426, | |
| 320 | + "perimeterM": 21.36, | |
| 321 | + "heightM": 2.44 | |
| 94 | 322 | }, |
| 95 | 323 | { |
| 96 | 324 | "name": "Logement 1 — Chambre 1", |
| 97 | − "usage": "chambre" | |
| 325 | + "usage": "chambre", | |
| 326 | + "areaM2": 22.579, | |
| 327 | + "perimeterM": 19.04, | |
| 328 | + "heightM": 2.44 | |
| 98 | 329 | }, |
| 99 | 330 | { |
| 100 | 331 | "name": "Logement 1 — Chambre 2", |
| 101 | − "usage": "chambre" | |
| 332 | + "usage": "chambre", | |
| 333 | + "areaM2": 19.656, | |
| 334 | + "perimeterM": 17.88, | |
| 335 | + "heightM": 2.44 | |
| 102 | 336 | }, |
| 103 | 337 | { |
| 104 | 338 | "name": "Logement 1 — Salle de bain", |
| 105 | − "usage": "salle de bain" | |
| 339 | + "usage": "salle de bain", | |
| 340 | + "areaM2": 13.81, | |
| 341 | + "perimeterM": 15.56, | |
| 342 | + "heightM": 2.44 | |
| 106 | 343 | } |
| 107 | 344 | ], |
| 345 | + "openings": [ | |
| 346 | + { | |
| 347 | + "kind": "window", | |
| 348 | + "name": "Fenêtre Séjour", | |
| 349 | + "widthM": 1.8, | |
| 350 | + "heightM": 1.3, | |
| 351 | + "areaM2": 2.34, | |
| 352 | + "wall": "Murs extérieurs", | |
| 353 | + "exterior": true | |
| 354 | + }, | |
| 355 | + { | |
| 356 | + "kind": "window", | |
| 357 | + "name": "Fenêtre Cuisine / salle à manger", | |
| 358 | + "widthM": 1.8, | |
| 359 | + "heightM": 1.3, | |
| 360 | + "areaM2": 2.34, | |
| 361 | + "wall": "Murs extérieurs", | |
| 362 | + "exterior": true | |
| 363 | + }, | |
| 364 | + { | |
| 365 | + "kind": "window", | |
| 366 | + "name": "Fenêtre Chambre 1", | |
| 367 | + "widthM": 1.2, | |
| 368 | + "heightM": 1.3, | |
| 369 | + "areaM2": 1.56, | |
| 370 | + "wall": "Murs extérieurs", | |
| 371 | + "exterior": true | |
| 372 | + }, | |
| 373 | + { | |
| 374 | + "kind": "window", | |
| 375 | + "name": "Fenêtre Chambre 2", | |
| 376 | + "widthM": 1.2, | |
| 377 | + "heightM": 1.3, | |
| 378 | + "areaM2": 1.56, | |
| 379 | + "wall": "Murs extérieurs", | |
| 380 | + "exterior": true | |
| 381 | + }, | |
| 382 | + { | |
| 383 | + "kind": "window", | |
| 384 | + "name": "Fenêtre Salle de bain", | |
| 385 | + "widthM": 0.9, | |
| 386 | + "heightM": 0.9, | |
| 387 | + "areaM2": 0.81, | |
| 388 | + "wall": "Murs extérieurs", | |
| 389 | + "exterior": true | |
| 390 | + }, | |
| 391 | + { | |
| 392 | + "kind": "door", | |
| 393 | + "name": "Logement 1 — Porte d'entrée", | |
| 394 | + "widthM": 0.9, | |
| 395 | + "heightM": 2.1, | |
| 396 | + "areaM2": 1.89, | |
| 397 | + "wall": "Murs extérieurs", | |
| 398 | + "exterior": true | |
| 399 | + }, | |
| 400 | + { | |
| 401 | + "kind": "door", | |
| 402 | + "name": "Logement 1 — Porte-patio", | |
| 403 | + "widthM": 1.8, | |
| 404 | + "heightM": 2.1, | |
| 405 | + "areaM2": 3.78, | |
| 406 | + "wall": "Murs extérieurs", | |
| 407 | + "exterior": true | |
| 408 | + }, | |
| 409 | + { | |
| 410 | + "kind": "window", | |
| 411 | + "name": "Fenêtre latérale", | |
| 412 | + "widthM": 1.2, | |
| 413 | + "heightM": 1.3, | |
| 414 | + "areaM2": 1.56, | |
| 415 | + "wall": "Murs extérieurs", | |
| 416 | + "exterior": true | |
| 417 | + }, | |
| 418 | + { | |
| 419 | + "kind": "window", | |
| 420 | + "name": "Fenêtre latérale", | |
| 421 | + "widthM": 1.2, | |
| 422 | + "heightM": 1.3, | |
| 423 | + "areaM2": 1.56, | |
| 424 | + "wall": "Murs extérieurs", | |
| 425 | + "exterior": true | |
| 426 | + } | |
| 427 | + ], | |
| 428 | + "footprintM2": 127.33, | |
| 429 | + "totals": { | |
| 430 | + "wallLengthM": 71.2, | |
| 431 | + "wallNetAreaM2": 156.328, | |
| 432 | + "extWallNetAreaM2": 89.96, | |
| 433 | + "floorAreaM2": 112.897, | |
| 434 | + "doors": 2, | |
| 435 | + "windows": 7 | |
| 436 | + }, | |
| 108 | 437 | "windows": 7, |
| 109 | 438 | "doors": 2 |
| 110 | 439 | }, |
@@ -116,29 +445,244 @@ | ||
| 116 | 445 | "widthPx": 830, |
| 117 | 446 | "heightPx": 770, |
| 118 | 447 | "png": "E_tage.png", |
| 448 | + "crop": { | |
| 449 | + "x0": 41.5, | |
| 450 | + "y0": 41.5, | |
| 451 | + "x1": 788.5, | |
| 452 | + "y1": 728.5 | |
| 453 | + }, | |
| 119 | 454 | "objects": 20, |
| 455 | + "pins": [ | |
| 456 | + { | |
| 457 | + "key": "ext", | |
| 458 | + "label": "Murs extérieurs", | |
| 459 | + "at": { | |
| 460 | + "x": 0.5, | |
| 461 | + "y": 0.878 | |
| 462 | + } | |
| 463 | + }, | |
| 464 | + { | |
| 465 | + "key": "int", | |
| 466 | + "label": "Cloisons", | |
| 467 | + "at": { | |
| 468 | + "x": 0.5, | |
| 469 | + "y": 0.5 | |
| 470 | + } | |
| 471 | + }, | |
| 472 | + { | |
| 473 | + "key": "win", | |
| 474 | + "label": "Fenêtres", | |
| 475 | + "at": { | |
| 476 | + "x": 0.306, | |
| 477 | + "y": 0.878 | |
| 478 | + } | |
| 479 | + }, | |
| 480 | + { | |
| 481 | + "key": "door", | |
| 482 | + "label": "Portes", | |
| 483 | + "at": { | |
| 484 | + "x": 0.205, | |
| 485 | + "y": 0.878 | |
| 486 | + } | |
| 487 | + }, | |
| 488 | + { | |
| 489 | + "key": "room", | |
| 490 | + "label": "Pièces (aire, périmètre)", | |
| 491 | + "at": { | |
| 492 | + "x": 0.306, | |
| 493 | + "y": 0.689 | |
| 494 | + } | |
| 495 | + }, | |
| 496 | + { | |
| 497 | + "key": "fp", | |
| 498 | + "label": "Empreinte et périmètre", | |
| 499 | + "at": { | |
| 500 | + "x": 0.112, | |
| 501 | + "y": 0.878 | |
| 502 | + } | |
| 503 | + } | |
| 504 | + ], | |
| 505 | + "walls": [ | |
| 506 | + { | |
| 507 | + "name": "Murs extérieurs", | |
| 508 | + "exterior": true, | |
| 509 | + "lengthM": 44, | |
| 510 | + "heightM": 2.44, | |
| 511 | + "thicknessM": 0.3, | |
| 512 | + "grossAreaM2": 107.36, | |
| 513 | + "openingsAreaM2": 17.4, | |
| 514 | + "netAreaM2": 89.96 | |
| 515 | + }, | |
| 516 | + { | |
| 517 | + "name": "Logement 2 — Cloison centrale", | |
| 518 | + "exterior": false, | |
| 519 | + "lengthM": 11.6, | |
| 520 | + "heightM": 2.44, | |
| 521 | + "thicknessM": 0.12, | |
| 522 | + "grossAreaM2": 28.304, | |
| 523 | + "openingsAreaM2": 0, | |
| 524 | + "netAreaM2": 28.304 | |
| 525 | + }, | |
| 526 | + { | |
| 527 | + "name": "Logement 2 — Cloison Séjour", | |
| 528 | + "exterior": false, | |
| 529 | + "lengthM": 5.2, | |
| 530 | + "heightM": 2.44, | |
| 531 | + "thicknessM": 0.12, | |
| 532 | + "grossAreaM2": 12.688, | |
| 533 | + "openingsAreaM2": 0, | |
| 534 | + "netAreaM2": 12.688 | |
| 535 | + }, | |
| 536 | + { | |
| 537 | + "name": "Logement 2 — Cloison Chambre 1", | |
| 538 | + "exterior": false, | |
| 539 | + "lengthM": 5.2, | |
| 540 | + "heightM": 2.44, | |
| 541 | + "thicknessM": 0.12, | |
| 542 | + "grossAreaM2": 12.688, | |
| 543 | + "openingsAreaM2": 0, | |
| 544 | + "netAreaM2": 12.688 | |
| 545 | + }, | |
| 546 | + { | |
| 547 | + "name": "Logement 2 — Cloison Chambre 2", | |
| 548 | + "exterior": false, | |
| 549 | + "lengthM": 5.2, | |
| 550 | + "heightM": 2.44, | |
| 551 | + "thicknessM": 0.12, | |
| 552 | + "grossAreaM2": 12.688, | |
| 553 | + "openingsAreaM2": 0, | |
| 554 | + "netAreaM2": 12.688 | |
| 555 | + } | |
| 556 | + ], | |
| 120 | 557 | "rooms": [ |
| 121 | 558 | { |
| 122 | 559 | "name": "Logement 2 — Séjour", |
| 123 | − "usage": "séjour" | |
| 560 | + "usage": "séjour", | |
| 561 | + "areaM2": 28.426, | |
| 562 | + "perimeterM": 21.36, | |
| 563 | + "heightM": 2.44 | |
| 124 | 564 | }, |
| 125 | 565 | { |
| 126 | 566 | "name": "Logement 2 — Cuisine / salle à manger", |
| 127 | − "usage": "cuisine" | |
| 567 | + "usage": "cuisine", | |
| 568 | + "areaM2": 28.426, | |
| 569 | + "perimeterM": 21.36, | |
| 570 | + "heightM": 2.44 | |
| 128 | 571 | }, |
| 129 | 572 | { |
| 130 | 573 | "name": "Logement 2 — Chambre 1", |
| 131 | − "usage": "chambre" | |
| 574 | + "usage": "chambre", | |
| 575 | + "areaM2": 22.579, | |
| 576 | + "perimeterM": 19.04, | |
| 577 | + "heightM": 2.44 | |
| 132 | 578 | }, |
| 133 | 579 | { |
| 134 | 580 | "name": "Logement 2 — Chambre 2", |
| 135 | − "usage": "chambre" | |
| 581 | + "usage": "chambre", | |
| 582 | + "areaM2": 19.656, | |
| 583 | + "perimeterM": 17.88, | |
| 584 | + "heightM": 2.44 | |
| 136 | 585 | }, |
| 137 | 586 | { |
| 138 | 587 | "name": "Logement 2 — Salle de bain", |
| 139 | − "usage": "salle de bain" | |
| 588 | + "usage": "salle de bain", | |
| 589 | + "areaM2": 13.81, | |
| 590 | + "perimeterM": 15.56, | |
| 591 | + "heightM": 2.44 | |
| 140 | 592 | } |
| 141 | 593 | ], |
| 594 | + "openings": [ | |
| 595 | + { | |
| 596 | + "kind": "window", | |
| 597 | + "name": "Fenêtre Séjour", | |
| 598 | + "widthM": 1.8, | |
| 599 | + "heightM": 1.3, | |
| 600 | + "areaM2": 2.34, | |
| 601 | + "wall": "Murs extérieurs", | |
| 602 | + "exterior": true | |
| 603 | + }, | |
| 604 | + { | |
| 605 | + "kind": "window", | |
| 606 | + "name": "Fenêtre Cuisine / salle à manger", | |
| 607 | + "widthM": 1.8, | |
| 608 | + "heightM": 1.3, | |
| 609 | + "areaM2": 2.34, | |
| 610 | + "wall": "Murs extérieurs", | |
| 611 | + "exterior": true | |
| 612 | + }, | |
| 613 | + { | |
| 614 | + "kind": "window", | |
| 615 | + "name": "Fenêtre Chambre 1", | |
| 616 | + "widthM": 1.2, | |
| 617 | + "heightM": 1.3, | |
| 618 | + "areaM2": 1.56, | |
| 619 | + "wall": "Murs extérieurs", | |
| 620 | + "exterior": true | |
| 621 | + }, | |
| 622 | + { | |
| 623 | + "kind": "window", | |
| 624 | + "name": "Fenêtre Chambre 2", | |
| 625 | + "widthM": 1.2, | |
| 626 | + "heightM": 1.3, | |
| 627 | + "areaM2": 1.56, | |
| 628 | + "wall": "Murs extérieurs", | |
| 629 | + "exterior": true | |
| 630 | + }, | |
| 631 | + { | |
| 632 | + "kind": "window", | |
| 633 | + "name": "Fenêtre Salle de bain", | |
| 634 | + "widthM": 0.9, | |
| 635 | + "heightM": 0.9, | |
| 636 | + "areaM2": 0.81, | |
| 637 | + "wall": "Murs extérieurs", | |
| 638 | + "exterior": true | |
| 639 | + }, | |
| 640 | + { | |
| 641 | + "kind": "door", | |
| 642 | + "name": "Logement 2 — Porte d'entrée", | |
| 643 | + "widthM": 0.9, | |
| 644 | + "heightM": 2.1, | |
| 645 | + "areaM2": 1.89, | |
| 646 | + "wall": "Murs extérieurs", | |
| 647 | + "exterior": true | |
| 648 | + }, | |
| 649 | + { | |
| 650 | + "kind": "door", | |
| 651 | + "name": "Logement 2 — Porte-patio", | |
| 652 | + "widthM": 1.8, | |
| 653 | + "heightM": 2.1, | |
| 654 | + "areaM2": 3.78, | |
| 655 | + "wall": "Murs extérieurs", | |
| 656 | + "exterior": true | |
| 657 | + }, | |
| 658 | + { | |
| 659 | + "kind": "window", | |
| 660 | + "name": "Fenêtre latérale", | |
| 661 | + "widthM": 1.2, | |
| 662 | + "heightM": 1.3, | |
| 663 | + "areaM2": 1.56, | |
| 664 | + "wall": "Murs extérieurs", | |
| 665 | + "exterior": true | |
| 666 | + }, | |
| 667 | + { | |
| 668 | + "kind": "window", | |
| 669 | + "name": "Fenêtre latérale", | |
| 670 | + "widthM": 1.2, | |
| 671 | + "heightM": 1.3, | |
| 672 | + "areaM2": 1.56, | |
| 673 | + "wall": "Murs extérieurs", | |
| 674 | + "exterior": true | |
| 675 | + } | |
| 676 | + ], | |
| 677 | + "footprintM2": 127.33, | |
| 678 | + "totals": { | |
| 679 | + "wallLengthM": 71.2, | |
| 680 | + "wallNetAreaM2": 156.328, | |
| 681 | + "extWallNetAreaM2": 89.96, | |
| 682 | + "floorAreaM2": 112.897, | |
| 683 | + "doors": 2, | |
| 684 | + "windows": 7 | |
| 685 | + }, | |
| 142 | 686 | "windows": 7, |
| 143 | 687 | "doors": 2 |
| 144 | 688 | }, |
@@ -150,29 +694,244 @@ | ||
| 150 | 694 | "widthPx": 830, |
| 151 | 695 | "heightPx": 770, |
| 152 | 696 | "png": "2e_e_tage.png", |
| 697 | + "crop": { | |
| 698 | + "x0": 41.5, | |
| 699 | + "y0": 41.5, | |
| 700 | + "x1": 788.5, | |
| 701 | + "y1": 728.5 | |
| 702 | + }, | |
| 153 | 703 | "objects": 20, |
| 704 | + "pins": [ | |
| 705 | + { | |
| 706 | + "key": "ext", | |
| 707 | + "label": "Murs extérieurs", | |
| 708 | + "at": { | |
| 709 | + "x": 0.5, | |
| 710 | + "y": 0.878 | |
| 711 | + } | |
| 712 | + }, | |
| 713 | + { | |
| 714 | + "key": "int", | |
| 715 | + "label": "Cloisons", | |
| 716 | + "at": { | |
| 717 | + "x": 0.5, | |
| 718 | + "y": 0.5 | |
| 719 | + } | |
| 720 | + }, | |
| 721 | + { | |
| 722 | + "key": "win", | |
| 723 | + "label": "Fenêtres", | |
| 724 | + "at": { | |
| 725 | + "x": 0.306, | |
| 726 | + "y": 0.878 | |
| 727 | + } | |
| 728 | + }, | |
| 729 | + { | |
| 730 | + "key": "door", | |
| 731 | + "label": "Portes", | |
| 732 | + "at": { | |
| 733 | + "x": 0.205, | |
| 734 | + "y": 0.878 | |
| 735 | + } | |
| 736 | + }, | |
| 737 | + { | |
| 738 | + "key": "room", | |
| 739 | + "label": "Pièces (aire, périmètre)", | |
| 740 | + "at": { | |
| 741 | + "x": 0.306, | |
| 742 | + "y": 0.689 | |
| 743 | + } | |
| 744 | + }, | |
| 745 | + { | |
| 746 | + "key": "fp", | |
| 747 | + "label": "Empreinte et périmètre", | |
| 748 | + "at": { | |
| 749 | + "x": 0.112, | |
| 750 | + "y": 0.878 | |
| 751 | + } | |
| 752 | + } | |
| 753 | + ], | |
| 754 | + "walls": [ | |
| 755 | + { | |
| 756 | + "name": "Murs extérieurs", | |
| 757 | + "exterior": true, | |
| 758 | + "lengthM": 44, | |
| 759 | + "heightM": 2.44, | |
| 760 | + "thicknessM": 0.3, | |
| 761 | + "grossAreaM2": 107.36, | |
| 762 | + "openingsAreaM2": 17.4, | |
| 763 | + "netAreaM2": 89.96 | |
| 764 | + }, | |
| 765 | + { | |
| 766 | + "name": "Logement 3 — Cloison centrale", | |
| 767 | + "exterior": false, | |
| 768 | + "lengthM": 11.6, | |
| 769 | + "heightM": 2.44, | |
| 770 | + "thicknessM": 0.12, | |
| 771 | + "grossAreaM2": 28.304, | |
| 772 | + "openingsAreaM2": 0, | |
| 773 | + "netAreaM2": 28.304 | |
| 774 | + }, | |
| 775 | + { | |
| 776 | + "name": "Logement 3 — Cloison Séjour", | |
| 777 | + "exterior": false, | |
| 778 | + "lengthM": 5.2, | |
| 779 | + "heightM": 2.44, | |
| 780 | + "thicknessM": 0.12, | |
| 781 | + "grossAreaM2": 12.688, | |
| 782 | + "openingsAreaM2": 0, | |
| 783 | + "netAreaM2": 12.688 | |
| 784 | + }, | |
| 785 | + { | |
| 786 | + "name": "Logement 3 — Cloison Chambre 1", | |
| 787 | + "exterior": false, | |
| 788 | + "lengthM": 5.2, | |
| 789 | + "heightM": 2.44, | |
| 790 | + "thicknessM": 0.12, | |
| 791 | + "grossAreaM2": 12.688, | |
| 792 | + "openingsAreaM2": 0, | |
| 793 | + "netAreaM2": 12.688 | |
| 794 | + }, | |
| 795 | + { | |
| 796 | + "name": "Logement 3 — Cloison Chambre 2", | |
| 797 | + "exterior": false, | |
| 798 | + "lengthM": 5.2, | |
| 799 | + "heightM": 2.44, | |
| 800 | + "thicknessM": 0.12, | |
| 801 | + "grossAreaM2": 12.688, | |
| 802 | + "openingsAreaM2": 0, | |
| 803 | + "netAreaM2": 12.688 | |
| 804 | + } | |
| 805 | + ], | |
| 154 | 806 | "rooms": [ |
| 155 | 807 | { |
| 156 | 808 | "name": "Logement 3 — Séjour", |
| 157 | − "usage": "séjour" | |
| 809 | + "usage": "séjour", | |
| 810 | + "areaM2": 28.426, | |
| 811 | + "perimeterM": 21.36, | |
| 812 | + "heightM": 2.44 | |
| 158 | 813 | }, |
| 159 | 814 | { |
| 160 | 815 | "name": "Logement 3 — Cuisine / salle à manger", |
| 161 | − "usage": "cuisine" | |
| 816 | + "usage": "cuisine", | |
| 817 | + "areaM2": 28.426, | |
| 818 | + "perimeterM": 21.36, | |
| 819 | + "heightM": 2.44 | |
| 162 | 820 | }, |
| 163 | 821 | { |
| 164 | 822 | "name": "Logement 3 — Chambre 1", |
| 165 | − "usage": "chambre" | |
| 823 | + "usage": "chambre", | |
| 824 | + "areaM2": 22.579, | |
| 825 | + "perimeterM": 19.04, | |
| 826 | + "heightM": 2.44 | |
| 166 | 827 | }, |
| 167 | 828 | { |
| 168 | 829 | "name": "Logement 3 — Chambre 2", |
| 169 | − "usage": "chambre" | |
| 830 | + "usage": "chambre", | |
| 831 | + "areaM2": 19.656, | |
| 832 | + "perimeterM": 17.88, | |
| 833 | + "heightM": 2.44 | |
| 170 | 834 | }, |
| 171 | 835 | { |
| 172 | 836 | "name": "Logement 3 — Salle de bain", |
| 173 | − "usage": "salle de bain" | |
| 837 | + "usage": "salle de bain", | |
| 838 | + "areaM2": 13.81, | |
| 839 | + "perimeterM": 15.56, | |
| 840 | + "heightM": 2.44 | |
| 174 | 841 | } |
| 175 | 842 | ], |
| 843 | + "openings": [ | |
| 844 | + { | |
| 845 | + "kind": "window", | |
| 846 | + "name": "Fenêtre Séjour", | |
| 847 | + "widthM": 1.8, | |
| 848 | + "heightM": 1.3, | |
| 849 | + "areaM2": 2.34, | |
| 850 | + "wall": "Murs extérieurs", | |
| 851 | + "exterior": true | |
| 852 | + }, | |
| 853 | + { | |
| 854 | + "kind": "window", | |
| 855 | + "name": "Fenêtre Cuisine / salle à manger", | |
| 856 | + "widthM": 1.8, | |
| 857 | + "heightM": 1.3, | |
| 858 | + "areaM2": 2.34, | |
| 859 | + "wall": "Murs extérieurs", | |
| 860 | + "exterior": true | |
| 861 | + }, | |
| 862 | + { | |
| 863 | + "kind": "window", | |
| 864 | + "name": "Fenêtre Chambre 1", | |
| 865 | + "widthM": 1.2, | |
| 866 | + "heightM": 1.3, | |
| 867 | + "areaM2": 1.56, | |
| 868 | + "wall": "Murs extérieurs", | |
| 869 | + "exterior": true | |
| 870 | + }, | |
| 871 | + { | |
| 872 | + "kind": "window", | |
| 873 | + "name": "Fenêtre Chambre 2", | |
| 874 | + "widthM": 1.2, | |
| 875 | + "heightM": 1.3, | |
| 876 | + "areaM2": 1.56, | |
| 877 | + "wall": "Murs extérieurs", | |
| 878 | + "exterior": true | |
| 879 | + }, | |
| 880 | + { | |
| 881 | + "kind": "window", | |
| 882 | + "name": "Fenêtre Salle de bain", | |
| 883 | + "widthM": 0.9, | |
| 884 | + "heightM": 0.9, | |
| 885 | + "areaM2": 0.81, | |
| 886 | + "wall": "Murs extérieurs", | |
| 887 | + "exterior": true | |
| 888 | + }, | |
| 889 | + { | |
| 890 | + "kind": "door", | |
| 891 | + "name": "Logement 3 — Porte d'entrée", | |
| 892 | + "widthM": 0.9, | |
| 893 | + "heightM": 2.1, | |
| 894 | + "areaM2": 1.89, | |
| 895 | + "wall": "Murs extérieurs", | |
| 896 | + "exterior": true | |
| 897 | + }, | |
| 898 | + { | |
| 899 | + "kind": "door", | |
| 900 | + "name": "Logement 3 — Porte-patio", | |
| 901 | + "widthM": 1.8, | |
| 902 | + "heightM": 2.1, | |
| 903 | + "areaM2": 3.78, | |
| 904 | + "wall": "Murs extérieurs", | |
| 905 | + "exterior": true | |
| 906 | + }, | |
| 907 | + { | |
| 908 | + "kind": "window", | |
| 909 | + "name": "Fenêtre latérale", | |
| 910 | + "widthM": 1.2, | |
| 911 | + "heightM": 1.3, | |
| 912 | + "areaM2": 1.56, | |
| 913 | + "wall": "Murs extérieurs", | |
| 914 | + "exterior": true | |
| 915 | + }, | |
| 916 | + { | |
| 917 | + "kind": "window", | |
| 918 | + "name": "Fenêtre latérale", | |
| 919 | + "widthM": 1.2, | |
| 920 | + "heightM": 1.3, | |
| 921 | + "areaM2": 1.56, | |
| 922 | + "wall": "Murs extérieurs", | |
| 923 | + "exterior": true | |
| 924 | + } | |
| 925 | + ], | |
| 926 | + "footprintM2": 127.33, | |
| 927 | + "totals": { | |
| 928 | + "wallLengthM": 71.2, | |
| 929 | + "wallNetAreaM2": 156.328, | |
| 930 | + "extWallNetAreaM2": 89.96, | |
| 931 | + "floorAreaM2": 112.897, | |
| 932 | + "doors": 2, | |
| 933 | + "windows": 7 | |
| 934 | + }, | |
| 176 | 935 | "windows": 7, |
| 177 | 936 | "doors": 2 |
| 178 | 937 | } |
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas4/E_tage.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas4/Rez_de_chausse_e.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas4/Sous_sol.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas4/data.json
+556 −12
Large diff (631 lines) is not loaded by default to keep the page fast.Load diff
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas5/2e_e_tage.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas5/E_tage.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas5/Rez_de_chausse_e.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas5/Sous_sol.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas5/data.json
+1175 −32
Large diff (1,339 lines) is not loaded by default to keep the page fast.Load diff
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas6/Rez_de_chausse_e.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas6/data.json
+197 −4
Large diff (222 lines) is not loaded by default to keep the page fast.Load diff
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas7/Rez_de_chausse_e.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas7/data.json
+102 −1
Large diff (115 lines) is not loaded by default to keep the page fast.Load diff
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas8/Rez_de_chausse_e.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas8/Sous_sol.png
+0 −0
Binary file not shown.
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/cas8/data.json
+373 −9
Large diff (427 lines) is not loaded by default to keep the page fast.Load diff
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/images/qs-cas/localisation.json
+0 −6002
Large diff (6,008 lines) is not loaded by default to keep the page fast.Load diff
modified
IMM1033-20_Methodes_du_cout/02_Slides/sources/parties/seance07_qs_cas.tex
+805 −181
Large diff (1,388 lines) is not loaded by default to keep the page fast.Load diff