fogón

← Basics3D assetfogon/banco-de-trabajo

Banco de trabajo

by fogonCC013909 blocks
Banco de trabajoDrag to turn it
// «Banco de trabajo» · gpt-6-sol (medium)
// Workbench («Banco de trabajo»).

// Wood palette: warm honey-colored top, darker frame, pale cut edges.
const wood = "#bd7837";
const light = "#df9a50";
const edge = "#edaa60";
const shadow = "#8b5028";
const dark = "#704225";
const steel = "#899ba0";
const steelLight = "#bdc8c8";
const steelDark = "#53656b";
const blue = "#376d7b";
const blueLight = "#57909a";
const blueDark = "#254e5b";

function grain(x0, x1, y, z, count) {
  for (let i = 0; i < count; i++) {
    const x = x0 + Math.floor(rand() * (x1 - x0 + 1));
    line(x, y, z, Math.min(x1, x + 1 + Math.floor(rand() * 4)), y, z, 0,
      rand() < 0.65 ? "#aa6631" : "#e5a45c");
  }
}

// Four substantial square legs.
for (const x of [9, 37]) {
  for (const y of [11, 33]) {
    box(x, y, 0, x + 3, y + 3, 21, shadow);
    box(x, y, 1, x, y + 2, 20, wood);
    box(x, y, 0, x + 2, y, 20, light);
    box(x + 3, y + 1, 1, x + 3, y + 3, 19, dark);
    box(x, y, 0, x + 3, y + 3, 1, "#9f5f2d");
  }
}

// Lower stretcher and a broad, open storage shelf.
box(12, 13, 6, 38, 35, 8, wood);
box(12, 13, 8, 38, 35, 9, light);
for (const y of [18, 25, 32]) {
  line(13, y, 9, 37, y, 9, 0, "#a96330");
}
box(12, 11, 5, 38, 13, 8, shadow);
box(12, 11, 8, 38, 12, 9, light);
box(11, 33, 7, 39, 35, 10, shadow);
box(11, 33, 10, 39, 34, 10, light);
box(10, 14, 7, 12, 33, 9, wood);
box(38, 14, 7, 40, 33, 9, wood);

// Apron below the work surface.
box(9, 10, 16, 40, 13, 21, shadow);
box(10, 10, 18, 39, 10, 21, wood);
box(10, 10, 20, 39, 10, 21, light);
box(37, 13, 16, 40, 35, 21, shadow);
box(39, 13, 19, 40, 35, 21, wood);
box(10, 34, 17, 39, 36, 21, shadow);

// Thick worktop, its individual long planks visible on top.
box(7, 9, 21, 42, 37, 23, wood);
box(7, 9, 23, 42, 37, 24, light);
box(7, 9, 21, 42, 10, 23, "#a7612e");
box(7, 9, 23, 42, 9, 24, edge);
box(41, 10, 22, 42, 37, 24, "#b36f35");
for (const y of [15, 22, 29, 35]) {
  line(9, y, 24, 40, y, 24, 0, "#ad6d37");
  line(10, y + 1, 24, 39, y + 1, 24, 0, "#e8a65a");
}
for (const y of [12, 18, 26, 32]) grain(10, 39, y, 24, 7);
for (const x of [12, 32, 39]) {
  set(x, 9, 23, "#6f7169");
  set(x, 10, 24, "#777a72");
}

// Tall upright wooden tool board at the back.
box(9, 35, 24, 38, 38, 42, shadow);
box(10, 34, 26, 37, 34, 40, "#ae6e36");
box(11, 34, 27, 36, 34, 39, "#c38646");
box(9, 34, 25, 10, 38, 42, wood);
box(9, 34, 42, 38, 38, 43, edge);
box(10, 34, 42, 37, 34, 43, "#f0ad61");
box(37, 34, 25, 38, 38, 43, "#995a2d");
box(10, 33, 25, 38, 34, 26, "#d48c43");
line(11, 34, 40, 36, 34, 40, 0, "#d99a55");
line(12, 34, 27, 35, 34, 27, 0, "#935528");

// Peg holes and scattered iron fixings on the exposed board.
for (const [x, z] of [
  [12, 29], [12, 32], [12, 35], [13, 38],
  [15, 29], [17, 31], [19, 29], [21, 32],
  [25, 30], [27, 33], [34, 29], [36, 35], [36, 39]
]) {
  set(x, 33, z, "#78502e");
  set(x, 32, z, steelDark);
  if (rand() < 0.6) set(x, 31, z + 1, steelLight);
}

// Red-handled clamp/tool at the left of the rack.
box(16, 31, 35, 19, 33, 38, "#a5402c");
box(16, 30, 36, 17, 30, 38, "#d65a39");
box(19, 31, 36, 22, 32, 38, steelDark);
box(19, 30, 38, 21, 31, 38, steelLight);
box(18, 31, 32, 19, 32, 35, steel);
set(18, 30, 32, steelLight);

// Prominent hanging steel hammer.
box(23, 31, 36, 29, 33, 38, steelDark);
box(23, 30, 38, 28, 31, 39, steelLight);
box(29, 31, 36, 30, 33, 38, "#687b80");
box(25, 30, 28, 26, 32, 36, steel);
box(25, 29, 29, 26, 29, 35, steelLight);
box(24, 30, 27, 27, 32, 29, steelDark);

// Large open-ended wrench hanging to the right.
box(32, 31, 29, 33, 33, 37, steel);
box(32, 30, 31, 32, 30, 36, steelLight);
box(30, 31, 37, 31, 33, 39, steelDark);
box(34, 31, 37, 35, 33, 39, steelDark);
box(31, 31, 36, 34, 33, 37, steel);
box(31, 30, 38, 31, 30, 39, steelLight);
box(34, 30, 38, 34, 30, 39, steelLight);
box(31, 30, 28, 34, 32, 29, steelDark);
set(32, 29, 28, steelLight);

// Thin screwdriver, with a brick-red grip.
box(36, 31, 34, 36, 32, 40, steelDark);
box(36, 30, 37, 36, 30, 40, steelLight);
box(35, 30, 29, 37, 33, 33, "#9b392a");
box(35, 29, 31, 37, 30, 33, "#c05037");
box(35, 30, 28, 37, 32, 29, dark);

// Small rear bench fixture, with an upright screw handle.
box(32, 24, 25, 38, 29, 26, blueDark);
box(33, 24, 27, 37, 28, 27, blue);
box(33, 25, 28, 37, 27, 28, steel);
box(35, 27, 29, 35, 27, 33, shadow);
box(34, 27, 32, 36, 28, 33, wood);
box(34, 26, 33, 36, 27, 33, edge);
box(31, 24, 26, 32, 28, 27, "#343f41");

// Front-mounted heavy blue vise: fixed rail and two parallel jaws.
box(21, 10, 24, 33, 17, 25, steelDark);
box(22, 10, 25, 32, 17, 26, blue);
box(23, 12, 27, 33, 15, 28, blueDark);
box(23, 12, 29, 33, 15, 29, steelLight);
box(21, 9, 27, 31, 11, 29, blue);
box(21, 9, 29, 31, 11, 30, blueLight);
box(21, 8, 27, 31, 8, 29, blueDark);
box(23, 8, 30, 30, 9, 30, steelLight);
box(25, 12, 31, 31, 13, 31, "#d0d6d0");
box(23, 11, 26, 24, 13, 28, "#2c5d6c");

// The jaw projects over the front edge; screw and T-handle below it.
box(24, 8, 21, 31, 10, 25, blueDark);
box(25, 7, 21, 30, 8, 24, blue);
box(27, 6, 19, 29, 9, 21, steelDark);
box(27, 5, 20, 29, 7, 21, steelLight);
line(25, 6, 20, 31, 6, 20, 0, steel);
set(25, 6, 20, steelLight);
set(31, 6, 20, steelLight);

// Iron bolts on the frame.
for (const [x, y, z] of [
  [10, 10, 19], [38, 10, 19], [10, 11, 3], [38, 11, 3],
  [38, 11, 9], [38, 34, 8], [37, 34, 41]
]) {
  set(x, y - 1, z, steelDark);
  set(x, y - 1, z + 1, steelLight);
}

// Narrow metal mounting plate on the right apron.
box(36, 9, 15, 41, 10, 17, steelDark);
box(37, 8, 16, 40, 9, 17, steel);
set(38, 7, 17, steelLight);
set(40, 7, 17, steelLight);