fogón

← BásicoObjeto 3Dfogon/archivero

Archivero

de fogonCC044717 bloques
ArchiveroArrastrá para girarlo
// «Archivero» · gpt-6-sol (medium)
// Filing cabinet («Archivero»).

// Filing cabinet — dark teal steel with an open top drawer.
const C = {
  shadow: "#203936",
  side: "#304b47",
  sideLight: "#395753",
  body: "#405d59",
  edge: "#587c79",
  edgeLight: "#779e9b",
  top: "#86b4b3",
  topInset: "#79aaa9",
  drawer: "#527472",
  drawerLight: "#668a87",
  drawerDark: "#334f4d",
  metalDark: "#536560",
  metal: "#abbcb4",
  metalLight: "#d3ded2",
  paper: "#c99850",
  paperLight: "#e1bd76",
  paperDark: "#936b3c"
};

// Recessed base and the solid cabinet.
box(10, 13, 0, 38, 36, 2, C.shadow);
box(8, 11, 2, 39, 38, 38, C.body);
box(8, 11, 3, 12, 38, 38, C.side);
box(9, 12, 5, 9, 37, 36, C.sideLight);
box(12, 10, 2, 39, 12, 37, C.shadow);
box(12, 10, 3, 13, 10, 37, C.edge);
box(38, 11, 3, 39, 38, 37, C.side);
box(13, 10, 3, 38, 10, 37, C.drawerDark);

// Slightly projecting beveled top.
box(6, 8, 38, 41, 40, 39, C.shadow);
box(5, 8, 40, 41, 40, 41, C.edgeLight);
box(7, 10, 41, 39, 38, 41, C.top);
box(9, 12, 42, 37, 36, 42, C.topInset);
box(5, 8, 40, 41, 9, 41, "#a1c6c2");
box(5, 8, 40, 6, 40, 41, "#9fc4c0");
box(7, 39, 39, 40, 40, 40, C.side);
for (let i = 0; i < 105; i++) {
  const x = 10 + Math.floor(rand() * 27);
  const y = 13 + Math.floor(rand() * 23);
  if (rand() < 0.42) set(x, y, 42, "#86b4b1");
}

// Three closed drawers. Each has a dark reveal, a raised rim, and a broad handle.
for (const [lo, hi] of [[3, 10], [11, 18], [19, 26]]) {
  box(13, 8, lo - 1, 39, 10, hi + 1, C.drawerDark);
  box(14, 7, lo, 38, 9, hi, C.drawer);
  box(14, 7, hi, 38, 9, hi, C.drawerLight);
  box(14, 7, lo, 15, 9, hi, C.edgeLight);
  box(37, 7, lo, 38, 9, hi, C.side);
  box(16, 6, lo + 1, 36, 6, lo + 1, C.drawerDark);

  const hz = lo + 4;
  box(22, 5, hz - 2, 35, 6, hz + 1, C.metalDark);
  box(23, 4, hz - 1, 34, 4, hz, C.metal);
  box(24, 4, hz, 33, 4, hz, C.metalLight);
  box(22, 4, hz - 1, 23, 5, hz + 1, C.metalLight);
  box(34, 4, hz - 1, 35, 5, hz + 1, C.metalLight);
  box(24, 5, hz - 2, 33, 5, hz - 2, C.shadow);
}

// Top drawer pulled out: tray bottom and thick side walls.
box(14, 3, 26, 43, 19, 27, C.shadow);
box(15, 4, 28, 42, 18, 28, C.drawerDark);
box(14, 3, 27, 16, 19, 34, C.drawer);
box(41, 3, 27, 43, 19, 34, C.drawerDark);
box(14, 17, 27, 43, 19, 33, C.side);
box(14, 3, 34, 16, 19, 34, C.edgeLight);
box(41, 3, 34, 43, 19, 34, C.edgeLight);
box(17, 18, 33, 40, 19, 33, C.edge);

// Upright manila folders visible inside the open tray.
for (let y = 9; y <= 16; y += 2) {
  const shade = y % 4 === 1 ? C.paperLight : C.paper;
  box(19, y, 29, 38, y, 35, shade);
  box(20, y, 36, 34, y, 36, C.paperLight);
  box(19, y + 1, 30, 38, y + 1, 34, C.paperDark);
}
box(24, 7, 29, 38, 7, 34, C.paper);
box(28, 7, 35, 35, 7, 35, C.paperLight);
box(18, 6, 29, 21, 6, 33, C.paperDark);

// The pulled-out drawer's front covers the near edge of the folders.
box(14, 2, 27, 43, 4, 33, C.drawer);
box(14, 2, 33, 43, 4, 34, C.edgeLight);
box(14, 2, 27, 16, 4, 34, C.side);
box(41, 2, 27, 43, 4, 34, C.drawerDark);
box(17, 1, 27, 40, 1, 27, C.shadow);
box(23, 1, 29, 36, 1, 31, C.metalDark);
box(24, 0, 30, 35, 0, 31, C.metal);
box(25, 0, 31, 34, 0, 31, C.metalLight);
box(23, 0, 29, 24, 1, 31, C.metalLight);
box(35, 0, 29, 36, 1, 31, C.metalLight);

// Small corner highlights and the lower toe-kick.
box(13, 8, 2, 14, 10, 3, C.edgeLight);
box(37, 8, 2, 39, 10, 3, C.edgeLight);
box(13, 11, 1, 38, 12, 2, C.side);