Negative Space

Carved from real building volumes Β· Hudson Yards

How this works

What this is

Takes a bounding "mold" volume the size of a chosen NYC neighborhood β€” footprint Γ— tallest building β€” and subtracts every real building from it. What's left is the negative space: the shape of the air around and above the buildings, capped by the mold's own outer boundary.

Getting started

Neighborhood
Pick a real, pre-built site from the dropdown. Each one is real Overture Maps building data, not a live search-any-area system.
Compute negative space
Runs the boolean subtraction. Needed once per neighborhood before Negative space, drawing a section, or pochΓ© become available.
Buildings / Negative space
Independent toggles, not either/or β€” turn on Buildings, Negative space, or both together (useful for confirming the carve is accurate). Turning Negative space on also switches to the Advanced tab and opens Display below β€” a flat void shell doesn't show much on its own; cutting through it (Advanced) and seeing where it sits in context (Display) are the actual point.

Drawing a section

The main way to see inside the mold: click Draw section box, drag a rectangle around the area you want to see in section, then pick N/S/E/W to cut through just that box, centered on it. Full width (appears once a box is active) clears it and goes back to the whole site's elevation. The top View compass and the box panel's own N/S/E/W do the same thing once a box is drawn β€” either works.

Fine-tuning a cut (Advanced tab)

Switch from Simple to Advanced for precision controls, whether or not a box is drawn:

Height / X / Y cutaway
Sliders carve away one octant of the mold, corner by corner, or fine-tune a box-drawn section's slab position. Flip X / Flip Y mirror which side gets carved, without moving the cut itself.
Recenter cutaway
Back to the site's own center β€” or, if a box is active, that box's own center. Doesn't clear the box itself; that's Full width, next to it once a box is active.
Section fill (pochΓ©)
Shades the newly-exposed cut faces translucent β€” red for negative space (the void), charcoal for Buildings (cut solid mass) β€” so a cut reads as solid material instead of a hollow outline. Negative space's own fill switches to a thin outline instead, on whichever cut face currently exposes more than about half the site β€” a full fill at that size reads as an overwhelming wash rather than useful shading, so the outline takes over automatically as the exposed area grows. Works in a locked N/S/E/W section, and in free Perspective/Plan wherever the current viewing angle isn't too edge-on to the cut face.
3D drag handles
Colored handles (blue = Height, orange = X, green = Y) sit at the center of each cut face and can be dragged directly in the viewport instead of using the sliders.
Reading the numbers
X and Y read as the distance from the slider's low end (0 at the left, like Height). The fill on a cut face only shows while you are facing the cut, not from behind it.
Units
Metric (m) / Imperial (ft) β€” only affects these slider labels and values; the underlying geometry always stays in meters.

Navigation

N / S / E / W
True flat orthographic elevations (no perspective foreshortening) β€” an actual architectural elevation, not just a rotated 3D view.
P (Plan)
True straight-down orthographic plan view, north-up. Also where you draw a section box.
βŒ‚ (Home)
Returns to the default 3/4 perspective view, free orbit, framed to the current model.
Compass
Needle always points at real true north, corrected for Manhattan's own ~29Β° street-grid tilt.

Context

Manhattan context
Zooms out to show the neighborhood's real position on the island β€” still a free 3D view, cutaway tools stay usable while it's on.
Major streets
Every real named street (Street Centerline data) around the site β€” not just avenues.
Terrain
Buildings stand on the real ground, the negative space is carved above it and streets drape over it. Elevation data is fetched live (public tiles) the first time you switch it on, and turning it on or off rebuilds the site.
High detail (slower)
Builds the negative space at a finer resolution. Slower to compute.

Export

Exports whichever layer is currently showing (Buildings or Negative space) as a binary STL. Set "Model scale 1:N" first (default 1:500) β€” the app's geometry is real-world meters, converted to millimeters at that scale. Negative space must be computed first. Copy link grabs a URL to this exact district, cutaway position, and layer(s) shown β€” anyone who opens it lands in the same configuration. Camera view/orientation and a drawn box aren't included yet.

Export image (PNG)
Saves the current view at 1x, 2x or 4x, optionally on a white background.
Export DXF (CAD)
Vector linework in meters at 1:1. An elevation exports the section, Plan exports footprints, streets and street names, and Perspective adds the 3D masses with real heights, with your current X / Y / Height cutaway applied; the cut faces are capped on their own layers, CUT_POCHE_NEGATIVE (red) and CUT_POCHE_BUILDINGS (brown-orange), and flat faces draw without their triangulation lines. With Terrain on, the Plan export also carries the contour lines as TOPO, every 5th contour as TOPO_INDEX and the elevation text (metres above sea level) as TOPO_LABELS. The Perspective export adds the ground surface as TERRAIN (a few polyface meshes with hidden edges, so it reads as a smooth surface; AutoCAD can convert them to a surface) plus the same contour layers, and the footprints, street lines and section box follow the ground instead of lying flat under it (without Terrain they stay flat at 0). Details: Vector linework for AutoCAD, Rhino, Revit link, LibreCAD and other CAD tools, in real-world meters at 1:1 (local coordinates from this district's own origin; north is +Y in Plan). In a North/South/East/West elevation it exports the section: SKYLINE (the red building envelope, built from building bounding boxes, so rotated blocks read as their bounding width), POCHE (the negative-space fill, when computed), GROUND and, with Terrain on, EARTH. In Plan it exports the plan: BUILDINGS (footprints), STREETS (centrelines), STREET_NAMES (text) and SECTION_BOX (if drawn), plus, with Terrain on, the contour layers TOPO, TOPO_INDEX and TOPO_LABELS. In Perspective it exports the same plan plus the 3D masses with real Z heights: BUILDINGS_3D and/or NEGATIVE_SPACE_3D (whichever is showing, with the current X / Y / Height cutaway applied to the geometry; the cut faces are capped on their own CUT_POCHE layers; flat faces draw without their triangulation lines; with Terrain on it also adds TERRAIN (the ground surface as a few polyface meshes with hidden inner edges, so it reads as one smooth surface) TOPO (contour lines at round elevations, each at its real Z), TOPO_INDEX (every 5th contour, heavier) and TOPO_LABELS (its elevation in metres above sea level), and the footprints, street lines and section box are draped onto the ground; large files). Street widths are not included.
Export solid (DXF mesh)
The negative space as closed 3D meshes (DXF 2010) with your X / Y / Height cutaway already subtracted, so it is a volume, not loose surfaces. It is the computed negative space only (no buildings, no terrain surface, no linework). AutoCAD only turns small closed meshes into solids reliably, so the volume is cut into square tiles (200 m by default, set in Tile size; 0 = one piece), each its own closed mesh on its own layer (NEG_SOLID_Tnn_nn), and neighbouring tiles touch exactly along their cut faces. To make them one 3D solid in AutoCAD: open the DXF, press Download AutoCAD join script (.lsp) (enabled after the export), type APPLOAD, load the script and type NSUJOIN. The script does everything: it sets SMOOTHMESHCONVERT to 3 and runs CONVTOSOLID, and it shows a percentage as it works (a whole district takes tens of minutes, and AutoCAD does not redraw during a long join). Every tile is also exported with smaller backup tiles (half and quarter size) on hidden frozen layers (NSB_ / NSC_, which is why the file is larger and the export takes longer). If a tile will not convert, the script swaps in its backup tiles. It then joins every pair of neighbouring tiles on copies, swaps the tiles at any seam that will not join for their backup tiles and tests those seams again, joins the tiles in blocks of 4 by 4 and then joins the blocks. If two big pieces still will not join, it moves one into the other by 5 mm and then 20 mm (the volume changes by less than 0.001%) and retries, then cleans both pieces and retries. The backup layers are removed at the end. The result is on layer NSU_RES, and the last lines of the log say how many pieces are left (1 = one solid) and list any tile that is missing a small piece because it would not convert at any size. Midtown with Terrain on is the hardest case so far. Joining tile by tile on the whole model ran for a day and crashed AutoCAD, so the script does not do that. The cut seams stay visible as lines on the faces; SOLIDEDIT > Body > Clean can remove them. Tested in AutoCAD Architecture 2027: Midtown (Community District 5, 167 tiles) and Chelsea / Clinton / Hudson Yards (District 4, 196 tiles) converted completely. With Terrain on, three Midtown tiles at 200 m did not convert; a Tile size of 100 converted all but two, which converted after a 5 cm change to the building offset. If a tile will not convert, run CONVTOSURFACE and then SURFSCULPT on that tile alone (SURFSCULPT on the whole batch fails). To keep the meshes watertight, the export grows every building by 60 cm (gaps narrower than 1.2 m between buildings close up, and buildings that touch at a corner overlap), so the volume is about 0.2% smaller than on screen. Each tile is built on its own in local coordinates (more precise than cutting tiles from one huge model), the buildings reach 2 m below the floor, tiny edges and slivers are tidied, and every mesh is checked for triangles that cut through each other (a tile that fails gets gentler tidying) so AutoCAD accepts it. Flat triangles are merged into bigger faces (the checkbox, off by default). Tick it for far fewer lines (District 2: 52,000 faces instead of 190,000, converted and joined), but in Midtown 4 merged tiles did not convert, so plain triangles are the safe default. Each tile is checked for zero-thickness sheets (two faces back to back) and rebuilt with a 1 cm change to the building offset when it has one. A mesh face cannot have a hole, so the floor around buildings shows long thin triangles.
Guided tour
Runs automatically on your first visit. Replay it any time with the Tour button at the top right, or the button at the top of this window.
Exercises
Five short tasks in the side panel (below Display). Each one ticks by itself when you have done it, and Check my work tells you what is still missing.

Data and credits

Buildings: Overture Maps Foundation (building and building-part footprints and heights). Streets and the Manhattan outline: NYC Open Data. Terrain: Terrain Tiles (Terrarium) hosted on AWS, built from public elevation sources including NASA SRTM and USGS 3DEP. Check each source's own terms before reusing the data.

Full write-up: README.md Β· deeper technical notes: EXTENDED.md

Pick a neighborhood below, then Compute negative space to get started.

Neighborhood

Data source

– building solids
– from Overture parts

NEGATIVE SPACE

This tool needs a tablet or desktop display for the 3D viewport and its controls. Please open it on a larger screen.

Joe.K Β· axisbim.io