3101 20th Street — how this model was built

Sources: Studio BBA “CONDUCTOR — 3101 20th Street”, SD Final Pricing Rev 2 (2026-07-14), 17 sheets; Calco Commercial listing brochure (photos, floorplans). APN 4084/001.

Method

  1. Vector extraction, not tracing. The architect's PDF is vector. Every wall line, door swing, glazing panel, stair tread and text label was read from the sheet's drawing operators (PyMuPDF), not digitised from an image.
  2. Scale calibration. Sheets are full-size 36×24 at 1/4" = 1'-0", i.e. 18 pt per foot. Verified against the drawing's own dimension: the open office interior measures 423.5 pt = 23'-6", which matches the 23'-6" dimension string on A2.2.
  3. Registration between floors. Each level is aligned on structural grid 1 (north face) and the east outer face. The grid spacings agree on all three plan sheets to 0.01 pt (232.76, 232.76, 201.23, 231.26, 243.27×4). Sheet A2.1 is stored with a 180° page rotation, so its floor plan and RCP swap places in vector space. This was detected and corrected.
  4. Walls. Wall linework was rasterised at 4 px/inch with the exterior inner faces sealed. Thin enclosed regions (≤ 7½" half-thickness) were classified as wall poché, and their outlines were snapped back to the exact vector coordinates. False positives (fixtures, door leaves, sills, an elevation tag) were removed by hand.
  5. Openings. Exterior window and door jambs come from breaks in the outer-face line on each plan. Door swings were fitted as circles to the arc polylines, giving hinge, leaf width and swing direction.
  6. Heights. Taken from section A4.4 and interior elevations A6.0 / A6.3 at 3/8" = 1'-0" (27 pt/ft).
  7. Check. In the viewer, Drawing overlay draws the original A2.x linework at its true coordinates on each floor, so any deviation is visible.

What is exact vs. estimated

ElementValueStatus
Footprint103'-11 ½" (grid 1–9) × 24'-10 ⅜"from drawings
Exterior wall thickness8"from drawings
Interior walls, WC blocks, shafts, posts, guardsA2.1–A2.3 pochéfrom drawings
Window/door positions in plan (all façades)A2.1–A2.3 (L1 east from L1 RCP)from drawings
Door hinges, widths, swingsarc fitsfrom drawings
Level 1 / 2 / 3 floor elevations1'-3" / 12'-7" / 23'-4"from drawings
Top of parapet35'-7"from drawings
Mezzanine opening (great room)u 63.91–99.26, v 4.32–20.36 ftfrom drawings
L1 east windowssill 4'-0", head 9'-9" AFFA6.0
L2 east windowssill 3'-10", head 9'-0" AFFA6.3
Kitchen island / back counter, Fish Bowl glazing, gym rubber & turfcoloured fills on A2.1/A2.2from drawings
Stairs (south stack; north L2→L3)tread lines + UP/DN on plansinferred
North stair L1→L2 (lobby run, landing, return)tread lines on A2.1; janitor “sloped ceiling under stair”inferred
L3 window and 20th St façade window heightsno elevation in setfrom photos
Roof deckflat at ≈34'-11" (drawn with a slight slope on A4.4)simplified
“Pipe Organs” gable, cornice, arches, signage, colourslisting photosfrom photos
Joists (2×10 @ 16" o.c.), roof cyclone, hatchRCPs + photosrepresentative
Furniturepositioned from A2.x furniture layoutsapproximate
Streets, neighbours, cars, treesphotoscontext only

Coordinates in the viewer

Hovering reads out position as feet south of grid 1 (the 20th St face), feet west of the east face (the Alabama St face), and elevation above the Level 1 datum. The measure tool reports true distances in feet-inches.

Pipeline (re-runnable)

tools/extract.py → tools/walls2.py / export_walls.py → tools/openings.py → tools/build_data.py writes site/data/building.json. The viewer (site/js, Three.js r170, vendored) generates all geometry from that file at load.

← back to the model