← Indice Parete con nicchia letto

Parete con nicchia letto

Questa pagina ridisegna da codice la tavola di riferimento: una parete attrezzata larga 237 cm, alta 316 e profonda 80, con una nicchia letto rialzata, cassetti in alto e ante, gradini e cassetti in basso. Tutte le misure sono in cm.

Il mobile è descritto da un oggetto di parametri e da una funzione che lo trasforma in parti (scatole). Viste, quote, 3D e distinta vengono tutte da lì. Per capire come funziona il codice, passo passo: come funziona Caderò.

import cadero, parete    # libreria (src/) e modello del mobile (models/)

let p = rilievo()        # i parametri letti dal disegno
let m = parete(p)        # il modello: una lista di parti
echo "parti: ", m.parts.len, ", altezza totale: ", fmtNum(p.altezza)
parti: 76, altezza totale: 316

La tavola

Prospetto frontale, vista laterale (sezione dentro la colonna destra guardando verso sinistra, con la libreria tagliata e il cassetto centrale aperto) e pianta (sezione all'altezza della nicchia, col materasso tratteggiato). In testa al letto la colonna destra è aperta verso la nicchia: sotto c'è la testata con il gavone, sopra il piano della testata, che fa da comodino, e la libreria con scaffali meno profondi. Dietro a destra, tratteggiata, la risega del muro: la colonna si ferma contro di essa. Le quote sono generate dai parametri: se cambia una misura, cambiano anche loro.

let svgTavola = tavola(p, m)
6 95 30 122 12 43 8 316 237 104 58 103 51 104 27 34.3 34.3 34.3 80 198.2 38.8 190 80 26.5 SCALA 1 : 25 @ A4

Vista 3D

Per vederla a tutto schermo, con viste predefinite (anche da dentro la nicchia), le parti che si aprono toccandole e l'esploso: Visore 3D - Idea.

Trascina per ruotare, pizzica o usa la rotella per lo zoom.

Cambiare le misure

Una variante: nicchia più bassa di 10 cm, quattro gradini invece di cinque e cassetti in basso tutti chiusi. L'altezza è quella della stanza e resta 316: le ribalte stanno dove sono, si allunga lo stacco tra la nicchia e le ribalte.

var p2 = rilievo()
p2.altezze.nicchia = 149.2
p2.bassa.nGradini = 4
p2.disegno.cassettoAperto = -1
let m2 = parete(p2)
echo "altezza totale: ", fmtNum(p2.altezza), ", apertura della nicchia: ", fmtNum(p2.nicchiaH)

var foglio = initSheet()
let fronte = View(kind: vFront)
foglio.draw(fronte, m2)
for q in quote(p2):
  if q.view == vFront: foglio.draw(fronte, q)
altezza totale: 316, apertura della nicchia: 112
6 95 30 112 22 43 8 316 237

Variante: tavolino estraibile

I primi tre gradini stanno nel frontale di un blocco che si estrae del tutto. Il frontale ha gli spigoli dritti (tondi sono solo i vani) e nasconde il piano, che fa da tavolino. Davanti i gradini sono cassetti senza frontale: due fianchi da terra al piano, un fondo in comune dietro e un ripiano sotto ogni gradino. Dietro i cassetti non c'è altro, solo due gambe a pannello alte e sottili sotto il piano, messe di traverso agli angoli: tengono il blocco anche di lato e lasciano libero il fianco, da dove entrano le gambe di chi si siede. Da chiuso le gambe arrivano vicino al muro, senza toccarlo, ed è di nuovo una scaletta.

let pt = rilievo().conTavolino
let mt = parete(pt)
let piano = mt.find("piano tavolino")
let fondo = mt.find("fondo cassetti")
let gamba = mt.find("gamba tavolino")
echo "piano: ", fmtNum(piano.size.x), " × ", fmtNum(piano.size.y), " cm, alto ",
     fmtNum(piano.z1), " da terra"
echo "spazio per le gambe, seduti di lato: largo ", fmtNum(gamba.pos.y - fondo.y1),
     ", sotto il piano ", fmtNum(piano.size.x), ", alto ", fmtNum(piano.pos.z), " cm"

var foglioT = initSheet()
let fronteT = View(kind: vFront)
foglioT.draw(fronteT, parete(rilievo().conTavolino(aperto = false)))
piano: 32.6 × 76.8 cm, alto 62.6 da terra
spazio per le gambe, seduti di lato: largo 53.2, sotto il piano 32.6, alto 60.8 cm

Trascina per ruotare, pizzica o usa la rotella per lo zoom.

Cosa non torna

controlli(p) confronta le misure con le decisioni prese e segnala i conflitti. Con i parametri attuali segnala solo il bordo davanti al materasso (vincolo soft: almeno 16 cm); con il materasso da 80 delle prime note anche quello:

echo "controlli: ", p.controlli.len
var p80 = rilievo()
p80.materasso.larghezza = 80
for c in p80.controlli: echo "- ", c
controlli: 1
- materasso largo 80 ma tra fronte e muro ci sono 78.2 cm
- il bordo davanti al materasso è alto 10 cm: meno di 16

Un controllo a parte guarda se ogni pezzo si ricava da una lastra di multistrato (ipotesi: 300 × 150). Il fronte, 316 × 237, no: va diviso, e dove dividerlo è ancora da decidere.

for f in fuoriLastra(m): echo "- ", f
- fronte 316 x 237: non sta in una lastra 300 x 150

Distinta dei pezzi

Pezzi uguali sono contati insieme; misure dalla più grande alla più piccola.

pezzi parte tipo misure (cm)
1 fronte pannello 316 × 237 × 1.8
2 fianco gradini pannello 102.2 × 31.8 × 1.8
1 fondo gradini pannello 102.2 × 29 × 1.8
5 ripiano gradino pannello 30 × 29 × 1.8
2 piano letto, soffitto nicchia pannello 237 × 78.2 × 1.8
1 fianco sx basso pannello 102.2 × 78.2 × 1.8
3 fianco dx basso, fianco anta stretta pannello 102.2 × 69.4 × 1.8
1 schienale colonna basso pannello 102.2 × 40.6 × 1.8
1 pannellino risega basso pannello 102.2 × 7 × 1.8
1 fianco sx medio pannello 159.2 × 78.2 × 1.8
1 fianco dx medio pannello 159.2 × 69.4 × 1.8
1 schienale colonna medio pannello 159.2 × 40.6 × 1.8
1 pannellino risega medio pannello 159.2 × 7 × 1.8
3 fianco sx alto, divisorio vani alti pannello 78.2 × 51 × 1.8
1 fianco dx alto pannello 69.4 × 51 × 1.8
1 schienale colonna alto pannello 51 × 40.6 × 1.8
1 pannellino risega alto pannello 51 × 7 × 1.8
1 divisorio pannello 69.4 × 56.2 × 1.8
1 materasso materasso 190 × 78 × 17
1 piano testata (comodino) pannello 69.4 × 38.8 × 1.8
2 coperchio gavone pannello 28.6 × 28.3 × 1
2 ripiano libreria pannello 69.4 × 26.5 × 1.8
1 scatola prese (schuko, 2 USB-C, interruttore luce) accessorio 16 × 9 × 6
3 ribalta alta frontale 68 × 43 × 1.8
2 fianco anta pannello 102.2 × 76.8 × 1.8
1 fondo anta pannello 75 × 71 × 1.8
1 schiena anta pannello 96.2 × 71 × 1.8
2 ripiano anta pannello 73 × 71 × 1.8
1 anta frontale 95 × 71 × 1.8
2 fianco cassetti pannello 102.2 × 75 × 1.8
3 frontale cassetto frontale 52 × 29 × 1.8
3 fondo cassetto pannello 71.4 × 46.4 × 1.8
6 fianco cassetto pannello 73.2 × 26 × 1.8
3 schiena cassetto pannello 46.4 × 24.2 × 1.8
1 fondo anta stretta pannello 67.6 × 38.5 × 1.8
1 schiena anta stretta pannello 96.2 × 38.5 × 1.8
1 bastone appendiabiti accessorio 38.5 × 2.5 × 2.5
1 anta stretta frontale 95 × 38.5 × 1.8

Ipotesi da verificare

Le misure scritte sulla tavola sono usate così come sono. Le altre le ho rilevate in scala dal disegno o inventate; sono tutte parametri in models/parete.nim.

import nimib, tema   # tema: stessi colori e caratteri degli artefatti
import std/[strformat, strutils]

nbInit(theme = useTema)
nb.title = "Parete con nicchia letto"

nbText: """
# Parete con nicchia letto

Questa pagina ridisegna da codice la tavola di riferimento: una parete attrezzata
larga 237 cm, alta 316 e profonda 80, con una nicchia letto rialzata, cassetti in
alto e ante, gradini e cassetti in basso. Tutte le misure sono in cm.

Il mobile è descritto da un oggetto di parametri e da una funzione che lo
trasforma in parti (scatole). Viste, quote, 3D e distinta vengono tutte da lì.
Per capire come funziona il codice, passo passo: [come funziona Caderò](come_funziona.html).
"""

nbCode:
  import cadero, parete    # libreria (src/) e modello del mobile (models/)

  let p = rilievo()        # i parametri letti dal disegno
  let m = parete(p)        # il modello: una lista di parti
  echo "parti: ", m.parts.len, ", altezza totale: ", fmtNum(p.altezza)

nbText: """
## La tavola

Prospetto frontale, vista laterale (sezione dentro la colonna destra guardando verso
sinistra, con la libreria tagliata e il cassetto centrale aperto) e pianta (sezione
all'altezza della nicchia, col materasso tratteggiato). In testa al letto la colonna
destra è aperta verso la nicchia: sotto c'è la testata con il gavone, sopra il piano
della testata, che fa da comodino, e la libreria con scaffali meno profondi.
Dietro a destra, tratteggiata, la risega del muro: la colonna si ferma contro di essa.
Le quote sono generate dai parametri: se cambia una misura, cambiano anche loro.
"""

nbCode:
  let svgTavola = tavola(p, m)
nbRawHtml: svgTavola

nbText: """
## Vista 3D

Per vederla a tutto schermo, con viste predefinite (anche da dentro la nicchia),
le parti che si aprono toccandole e l'esploso: [Visore 3D - Idea](visore3d_idea.html).
"""
nbRawHtml: viewer3d(m)

nbText: """
## Cambiare le misure

Una variante: nicchia più bassa di 10 cm, quattro gradini invece di cinque e
cassetti in basso tutti chiusi. L'altezza è quella della stanza e resta 316: le
ribalte stanno dove sono, si allunga lo stacco tra la nicchia e le ribalte.
"""

nbCode:
  var p2 = rilievo()
  p2.altezze.nicchia = 149.2
  p2.bassa.nGradini = 4
  p2.disegno.cassettoAperto = -1
  let m2 = parete(p2)
  echo "altezza totale: ", fmtNum(p2.altezza), ", apertura della nicchia: ", fmtNum(p2.nicchiaH)

  var foglio = initSheet()
  let fronte = View(kind: vFront)
  foglio.draw(fronte, m2)
  for q in quote(p2):
    if q.view == vFront: foglio.draw(fronte, q)
nbRawHtml: foglio.render()

nbText: """
## Variante: tavolino estraibile

I primi tre gradini stanno nel frontale di un blocco che si estrae del tutto. Il
frontale ha gli spigoli dritti (tondi sono solo i vani) e nasconde il piano, che fa
da tavolino. Davanti i gradini sono cassetti senza frontale: due fianchi da terra al
piano, un fondo in comune dietro e un ripiano sotto ogni gradino. Dietro i cassetti
non c'è altro, solo due gambe a pannello alte e sottili sotto il piano, messe di
traverso agli angoli: tengono il blocco anche di lato e lasciano libero il fianco,
da dove entrano le gambe di chi si siede. Da chiuso le gambe arrivano vicino al muro, senza
toccarlo, ed è di nuovo una scaletta.
"""

nbCode:
  let pt = rilievo().conTavolino
  let mt = parete(pt)
  let piano = mt.find("piano tavolino")
  let fondo = mt.find("fondo cassetti")
  let gamba = mt.find("gamba tavolino")
  echo "piano: ", fmtNum(piano.size.x), " × ", fmtNum(piano.size.y), " cm, alto ",
       fmtNum(piano.z1), " da terra"
  echo "spazio per le gambe, seduti di lato: largo ", fmtNum(gamba.pos.y - fondo.y1),
       ", sotto il piano ", fmtNum(piano.size.x), ", alto ", fmtNum(piano.pos.z), " cm"

  var foglioT = initSheet()
  let fronteT = View(kind: vFront)
  foglioT.draw(fronteT, parete(rilievo().conTavolino(aperto = false)))
nbRawHtml: foglioT.render()
nbRawHtml: viewer3d(mt, id = "tavolino3d", height = 420)

nbText: """
## Cosa non torna

`controlli(p)` confronta le misure con le decisioni prese e segnala i conflitti.
Con i parametri attuali segnala solo il bordo davanti al materasso (vincolo soft:
almeno 16 cm); con il materasso da 80 delle prime note anche quello:
"""

nbCode:
  echo "controlli: ", p.controlli.len
  var p80 = rilievo()
  p80.materasso.larghezza = 80
  for c in p80.controlli: echo "- ", c

nbText: """
Un controllo a parte guarda se ogni pezzo si ricava da una lastra di multistrato
(ipotesi: 300 × 150). Il fronte, 316 × 237, no: va diviso, e dove dividerlo è
ancora da decidere.
"""

nbCode:
  for f in fuoriLastra(m): echo "- ", f

nbText: """
## Distinta dei pezzi

Pezzi uguali sono contati insieme; misure dalla più grande alla più piccola.
"""

block:
  var t = "| pezzi | parte | tipo | misure (cm) |\n| ---: | --- | --- | --- |\n"
  for r in bom(m):
    t.add &"| {r.count} | {r.name} | {r.kind} | {fmtNum(r.dims[0])} × {fmtNum(r.dims[1])} × {fmtNum(r.dims[2])} |\n"
  nbText: t

nbText: """
## Ipotesi da verificare

Le misure scritte sulla tavola sono usate così come sono. Le altre le ho
rilevate in scala dal disegno o inventate; sono tutte parametri in
`models/parete.nim`.

- **Spessore pannelli** 1.8 cm (multistrato), ipotesi.
- **Posizioni orizzontali** di frontali e aperture, rilevate in scala: margini laterali
  12.5, nicchia da 16 a 181.5 con raggio 18, colonne in basso larghe 71, 29, 52 e 38.5.
- **Risega del muro**: pilastro dietro a destra per tutta l'altezza, sporge 7 e largo 38.
  La colonna destra è quindi profonda 73. È rivestita da un pannello sulla faccia larga
  e da un pannellino lungo sul bordo sottile, spezzati in tre come i fianchi. Variante
  `risegaScoperta` (nel visore "Scopri risega"): niente rivestimento, la carta da parati
  è applicata con cura anche su tutta la risega (Pietro).
- **Vincoli costruttivi** (Pietro): dietro, ai lati, sopra e sotto c'è il muro, quindi
  niente schienale, niente cielo e niente fondo. Ci sono due soli pannelli lunghi
  orizzontali, da un fianco all'altro: il **piano letto**, che sotto la testata fa da
  fondo al gavone, e il **soffitto della nicchia**, che fa anche da fondo ai vani alti
  (prima erano due pannelli). Dietro a destra hanno una tacca per girare intorno alla
  risega (e il suo rivestimento). I **fianchi** sono tre per lato, spezzati dai due pannelli lunghi. Il
  divisorio tra nicchia e colonna poggia sul piano letto e porta il comodino.
- **Materasso** 78 × 190, spesso 17 (su misura: 80 non entra nei 78.2 cm tra fronte e
  muro), appoggiato direttamente sul piano a 104.
- **Testata e libreria** (decisioni dopo il confronto con i nonni): piano della testata
  58 sopra il piano letto (17 di materasso + 41 di schienale; era 55, alzata di 3 cm), profondo 37.9 a filo della
  risega, fa da comodino. Sopra, fino al soffitto della nicchia (265), tre vani alti
  con la stessa altezza libera (32.5, un passo di 34.3 tra i piani, quotato nella
  laterale) e scaffali profondi 26.5 (quotati in pianta) appoggiati al fianco destro. Il divisorio è aperto
  tra il comodino (162) e il soffitto; sotto fa da testata.
- **Gavone**: il vano chiuso dentro la colonna, tra il piano letto (104), che gli fa da
  fondo, e il comodino (162). Si apre dall'alto: il piano del comodino ha un'apertura
  stondata (28 × 57.4, a 4 cm dai fianchi e 6 da fronte e schiena) in cui appoggiano due
  coperchi leggeri da 1 cm, ognuno metà apertura, che si alzano.
- **Scatola dei gradini**: una sola, profonda 30 (da definire), che non sta sospesa: due
  fianchi da terra al piano letto (con il tavolino, da sopra il tavolino), un fondo dietro
  e un ripiano sotto ogni gradino, dove si appoggia il piede.
- **Tavolino** (variante): largo quanto le scatole dei gradini (32.6), piano profondo 76.8
  (1.4 di gioco dal muro) a 62.6 da terra, sopra il terzo gradino. Cassetti-gradino
  profondi 20 (le scatole fisse 30); gambe dietro di traverso, larghe 8. Esce di tutta la sua profondità;
  i fianchi e le gambe scorrono sul pavimento (pattini o feltrini da scegliere).
- **Antina del tavolino** (variante `antinaTavolino`, nel visore "Antina tavolino"): un
  pannello sotto il piano, solo dietro i cassetti-gradino (tra il loro fondo e le gambe),
  incernierato sullo spigolo destro del piano. Con il tavolino estratto si ribalta a
  destra e si affianca al piano alla stessa quota, raddoppiandone la larghezza nella parte
  dietro. Il fermo che la tiene aperta non è ancora disegnato.
- **Scatola delle prese** (presa schuko, 2 USB-C e interruttore della luce, placca a 4
  moduli; ingombro ipotizzato 6 × 16 × 9): contro il fianco destro, vicino al fronte,
  rivolta verso il letto. Il cavo arriva nel muro a destra, dietro il fianco, e passa da
  un foro nel fianco. Due posizioni: appesa sotto il primo scaffale (di base) oppure,
  con `preseSulComodino` (nel visore "Prese sul comodino"), appoggiata sul comodino; in
  quel caso l'apertura del gavone si stringe e finisce 2 cm prima della scatola.
- **Cassetti in basso** profondi 75, con cassa (fondo, fianchi, schiena) 1 cm più stretta
  del frontale per lato; scorrono tra due fianchi fissi da terra al piano letto (le guide,
  nel centimetro per lato, non sono disegnate); escono di 60, il centrale è disegnato aperto.
- **Ante in basso**: dietro ognuna una scatola con i fianchi da terra al piano letto,
  che fa da cielo, fondo e schiena. Nell'anta a sinistra due ripiani, a un terzo e due
  terzi dell'altezza; nell'anta stretta un bastone appendiabiti da fianco a fianco, a
  metà profondità e 7 cm sotto il cielo.
- **Vani alti**: sotto il soffitto della nicchia, dietro e sopra il muro, ai lati i
  fianchi alti; due divisori tra le ribalte, dal soffitto della nicchia al muro.
- **Fori maniglia** di 4 cm; quelli delle ante a 10 cm dal bordo e 12 dall'alto.
- Le **linee tratteggiate** davanti al mobile nella laterale e nella pianta del disegno
  originale non sono riprodotte: non è chiaro cosa rappresentino.
- In alto ci sono tre vani con **ribalte** che si alzano (nel disegno sembravano cassetti).
- **Carta da parati** Vårklockor (Josef Frank, Svenskt Tenn): le misure non sono note.
  Dalla foto il motivo è a mezza caduta; ho assunto rotolo da 53 cm e rapporto di 53.
"""

nbSave