   (apply union
          (concat
           ;; Row connections
-          (for [column (drop-last columns)
-                row rows
-                :when (or (not= column 0)
-                          (not= row 4))]
+          (for [column (range 0 (dec ncols))
+                row (range 0 lastrow)]
             (triangle-hulls
              (key-place (inc column) row web-post-tl)
              (key-place column row web-post-tr)


          ;; Column connections
          (for [column columns
                row (drop-last rows)
                :when (or (not= column 0)
                          (not= row 3))]
            (triangle-hulls
             (key-place column row web-post-bl)
             (key-place column row web-post-br)

(def column-radius (+ (/ (/ (+ mount-width 2.0) 2)
                         (Math/sin (/ β 2)))
                      cap-top-height))
(def column-x-delta (+ -1 (- (* column-radius (Math/sin β)))))

(defn key-place [column row shape]
  (let [row-placed-shape (->> shape
                              (translate [0 0 (- row-radius)])
                              (rotate (* α (- centerrow row)) [1 0 0])      
                              (translate [0 0 row-radius]))
        column-offset (cond
                        (= column 2) [0 2.82 -4.5]
                        (>= column 4) [0 -5.8 5.64]
                        ; (= column 22) [0 2.82 -4.5]
                        ; (>= column 24) [0 -5.8 5.64]
                        :else [0 0 0])
        column-angle (* β (- centercol column))   
        placed-shape (->> row-placed-shape
                          (translate [0 0 (- column-radius)])
                          (rotate column-angle [0 1 0])
                          (translate [0 0 column-radius])
                          (translate column-offset))
        column-z-delta (* column-radius (- 1 (Math/cos column-angle)))
        placed-shape-ortho (->> row-placed-shape
                                (rotate column-angle [0 1 0])
                                (translate [(- (* (- column centercol) column-x-delta)) 0 column-z-delta])
                                (translate column-offset))]
    (->> (if orthographic-x placed-shape-ortho placed-shape)
         (rotate (/ π 12) [0 1 0])
         (translate [0 0 24]))))

(def key-holes
  (apply union
         (for [column columns
               row rows
               :when (or (.contains [2 3] column)
                         (not= row lastrow))]
           (->> single-plate
                (key-place column row)))))

