module triPrism(s = 2, h = 4) {
  difference() {
    cube([s, s, h]);
    translate([0, 0, -0.5]) rotate([0, 0, 30]) cube([1.5 * s, 1.5 * s, h + 1]);
  }
}

$fn=50;
ep = 0.01;

module industrialCenter() {

  // smokestacks
  sw = 2.5;
  sh = 17;
  translate([-1, sw / 2 - 0.1, 0]) cylinder(d=sw, 17);
  translate([-1, -sw / 2 + 0.1, 0]) cylinder(d=sw, 17);

  // base
  bw = 8;
  translate([0, -bw / 2, 0]) cube([15, bw, 8]);

  // roof
  for (i = [0:2]) {
    translate([5 * i, bw / 2, 8 - ep]) rotate([90, 0, 0]) triPrism(s = 5, h = 8);
  }

}

industrialCenter();