← Back to Gallery

Loading 3D viewer…

Alpine cable-car summit station (bare)

by Jorge Barbero

Dimensions
80×56×72
Blocks
79,822
Compute Time
1.2s
Generation Time
4.4s
Model
claude-opus-5
Created
September 13, 2026
alpinestationcable-carautoevalbare
Prompt

User Prompt

an alpine cable-car summit station perched on a rocky spur: a concrete-and-timber station hall with a wide overhanging eave, a steel gantry carrying the big cable bull-wheels, a gondola cabin docked at the boarding platform, a panoramic glazed waiting room with benches and a ticket counter inside, an internal timber stair down to a lower machinery floor, snow-dusted rock terrain and a support pylon with cables running downslope

Enhanced Prompt

bare condition: no prepare_build guidance consumed, no docs read. Plain fill/pb/ps construction as a naive agent would write it.

Photos

Station
Stationexterior
Waiting hall
Waiting hallinterior
Machinery floor
Machinery floorinterior
CraftScript Source
// Alpine cable car summit station
// station hall + platform + gondola + pylon

var x, y, z;

// ---- rocky ground with some snow on top
for (x = 0; x < 80; x++) {
  for (z = 0; z < 72; z++) {
    var h = 20 - Math.floor(x / 4);
    if (h < 6) h = 6;
    for (y = 0; y <= h; y++) {
      pb(x, y, z, 'stone');
    }
    if (h > 14) {
      pb(x, h, z, 'snow_block');
    } else {
      pb(x, h, z, 'gravel');
    }
  }
}

// ---- flatten a platform for the station
for (x = 10; x <= 40; x++) {
  for (z = 20; z <= 50; z++) {
    for (y = 18; y <= 24; y++) pb(x, y, z, 'air');
    pb(x, 17, z, 'stone_bricks');
  }
}
checkpoint('GROUND');

// ---- station hall: 20 x 16 box
var fy = 18;   // floor
for (x = 14; x <= 34; x++) {
  for (z = 24; z <= 40; z++) {
    pb(x, fy, z, 'polished_andesite');
  }
}
// walls
for (y = fy + 1; y <= fy + 6; y++) {
  for (x = 14; x <= 34; x++) {
    pb(x, y, 24, 'gray_concrete');
    pb(x, y, 40, 'gray_concrete');
  }
  for (z = 24; z <= 40; z++) {
    pb(14, y, z, 'gray_concrete');
    pb(34, y, z, 'gray_concrete');
  }
}
// windows on the south (panorama) wall
for (x = 16; x <= 32; x++) {
  for (y = fy + 2; y <= fy + 4; y++) {
    pb(x, y, 40, 'glass');
  }
}
// windows on the east wall
for (z = 26; z <= 38; z++) {
  pb(34, fy + 3, z, 'glass');
  pb(34, fy + 4, z, 'glass');
}
// door to the platform on the west wall
pb(14, fy + 1, 32, 'air');
pb(14, fy + 2, 32, 'air');
pb(14, fy + 1, 33, 'air');
pb(14, fy + 2, 33, 'air');
checkpoint('HALL');

// ---- roof with an overhang
var ry = fy + 7;
for (x = 12; x <= 36; x++) {
  for (z = 22; z <= 42; z++) {
    pb(x, ry, z, 'spruce_planks');
  }
}
for (x = 12; x <= 36; x++) {
  for (z = 22; z <= 42; z++) {
    if (x > 16 && x < 32 && z > 26 && z < 38) pb(x, ry + 1, z, 'spruce_planks');
  }
}
for (x = 18; x <= 30; x++) {
  for (z = 28; z <= 36; z++) {
    pb(x, ry + 2, z, 'spruce_planks');
  }
}
checkpoint('ROOF');

// ---- interior: benches and a ticket counter
for (z = 34; z <= 38; z = z + 2) {
  for (x = 18; x <= 30; x++) {
    ps(x, fy + 1, z, 'spruce_stairs[facing=north]');
  }
}
for (x = 16; x <= 22; x++) {
  pb(x, fy + 1, 26, 'oak_planks');
  pb(x, fy + 2, 26, 'oak_slab');
}
pb(23, fy + 1, 26, 'chest');
pb(17, fy + 1, 27, 'barrel');
pb(20, fy + 5, 30, 'lantern');
pb(26, fy + 5, 30, 'lantern');
pb(20, fy + 5, 36, 'lantern');
pb(26, fy + 5, 36, 'lantern');
checkpoint('INTERIOR');

// ---- lower machinery floor + stairs down
for (x = 24; x <= 32; x++) {
  for (z = 28; z <= 36; z++) {
    for (y = 12; y <= 16; y++) pb(x, y, z, 'air');
    pb(x, 11, z, 'stone_bricks');
  }
}
// hole in the floor and a stair going down
for (x = 24; x <= 27; x++) {
  for (z = 28; z <= 30; z++) pb(x, fy, z, 'air');
  pb(x, 17, z, 'air');
}
var sy = fy;
var sx = 24;
while (sy > 12) {
  ps(sx, sy, 29, 'spruce_stairs[facing=east]');
  pb(sx, sy + 1, 29, 'air');
  pb(sx, sy + 2, 29, 'air');
  sx = sx + 1;
  sy = sy - 1;
}
// machinery
pb(29, 12, 31, 'iron_block');
pb(29, 13, 31, 'iron_block');
pb(30, 12, 31, 'iron_block');
pb(29, 12, 33, 'iron_block');
pb(30, 12, 33, 'iron_block');
pb(28, 12, 32, 'anvil');
pb(31, 12, 32, 'barrel');
pb(26, 15, 32, 'lantern');
pb(30, 15, 32, 'lantern');
checkpoint('MACHINERY');

// ---- boarding platform west of the hall
for (x = 2; x <= 14; x++) {
  for (z = 28; z <= 38; z++) {
    pb(x, fy, z, 'smooth_stone');
  }
}
for (x = 2; x <= 14; x++) {
  pb(x, fy + 1, 28, 'iron_bars');
  pb(x, fy + 1, 38, 'iron_bars');
}
// canopy
for (x = 4; x <= 14; x++) {
  for (z = 28; z <= 38; z++) {
    pb(x, fy + 6, z, 'smooth_stone_slab');
  }
}
pb(6, fy + 1, 30, 'iron_block');
pb(6, fy + 2, 30, 'iron_block');
pb(6, fy + 3, 30, 'iron_block');
pb(6, fy + 4, 30, 'iron_block');
pb(6, fy + 5, 30, 'iron_block');
pb(6, fy + 1, 36, 'iron_block');
pb(6, fy + 2, 36, 'iron_block');
pb(6, fy + 3, 36, 'iron_block');
pb(6, fy + 4, 36, 'iron_block');
pb(6, fy + 5, 36, 'iron_block');
checkpoint('PLATFORM');

// ---- gantry with bull wheels over the platform
for (y = fy + 7; y <= fy + 12; y++) {
  pb(10, y, 30, 'iron_block');
  pb(10, y, 36, 'iron_block');
}
for (z = 30; z <= 36; z++) pb(10, fy + 12, z, 'iron_block');
// wheels
var a;
for (a = 0; a < 360; a = a + 10) {
  var wx = 10 + Math.round(3 * Math.cos(a * Math.PI / 180));
  var wy = fy + 9 + Math.round(3 * Math.sin(a * Math.PI / 180));
  pb(wx, wy, 31, 'iron_block');
  pb(wx, wy, 35, 'iron_block');
}
checkpoint('GANTRY');

// ---- gondola cabin at the platform
for (x = 3; x <= 7; x++) {
  for (z = 31; z <= 35; z++) {
    pb(x, fy + 1, z, 'smooth_stone');
    pb(x, fy + 5, z, 'white_concrete');
  }
}
for (y = fy + 2; y <= fy + 4; y++) {
  for (x = 3; x <= 7; x++) {
    pb(x, y, 31, 'red_concrete');
    pb(x, y, 35, 'red_concrete');
  }
  for (z = 31; z <= 35; z++) {
    pb(3, y, z, 'red_concrete');
    pb(7, y, z, 'red_concrete');
  }
}
for (x = 4; x <= 6; x++) {
  pb(x, fy + 3, 31, 'glass');
  pb(x, fy + 3, 35, 'glass');
  pb(3, fy + 3, x + 28, 'glass');
  pb(7, fy + 3, x + 28, 'glass');
}
pb(5, fy + 6, 33, 'chain');
pb(5, fy + 7, 33, 'chain');
checkpoint('GONDOLA');

// ---- cables running downslope and a pylon
for (x = 0; x <= 10; x++) {
  var cy = fy + 9 + Math.floor((10 - x) / 3);
  pb(x, cy, 31, 'chain');
  pb(x, cy, 35, 'chain');
}
for (x = 46; x <= 78; x++) {
  var cy2 = 30 - Math.floor((x - 46) / 3);
  pb(x, cy2, 31, 'chain');
  pb(x, cy2, 35, 'chain');
}
for (y = 8; y <= 30; y++) {
  pb(60, y, 31, 'iron_block');
  pb(60, y, 35, 'iron_block');
}
for (z = 31; z <= 35; z++) pb(60, 30, z, 'iron_bars');
checkpoint('CABLES');

// ---- a few trees lower down
placeTree(70, 9, 12, 'spruce');
placeTree(66, 10, 24, 'spruce');
placeTree(74, 8, 44, 'spruce');
placeTree(62, 11, 58, 'spruce');
checkpoint('TREES');

Static Renders

Alpine cable-car summit station (bare) isometric viewisometric
Alpine cable-car summit station (bare) front viewfront
Alpine cable-car summit station (bare) side viewside
Alpine cable-car summit station (bare) back viewback
Alpine cable-car summit station (bare) top viewtop