Genevieve Gandara

Journal Entry For
Module 9 - Share Your Design
Link to Student
image
image
image
image

Brief Overview

The Marketplace Configurator is a Grasshopper-based parametric design tool for quickly generating temporary vendor market layouts. Inspired by European Christmas markets, the tool allows users to test different spatial configurations for farmers markets, tabling events, craft fairs, or outdoor festivals. Users can adjust site dimensions, booth counts, booth spacing, path width, booth sizes, and central attraction settings to generate three layout types: rows, radial, and perimeter. The tool automatically places booths according to geometric constraints, prevents partial booths or invalid placements, and helps users compare how different configurations affect booth capacity, circulation, and open gathering space.

Time to complete: 4 hours per Layout = 12 hours total

  • fixing the edge cases took the most amount of time

Original Idea and How It Evolved

I did not submit the optional pitch in Part 1, so this section summarizes my original idea and how it evolved during implementation. My original concept was to create a configurator tool for European-style Christmas markets. I was interested in how these markets use vendor booths, central attractions, and circulation paths to create festive public spaces. The original goal was to allow a user to input a site size, booth counts, spacing assumptions, and a Christmas tree location, and then generate a valid market layout with different booth configurations.

As I developed the tool, I realized that the idea was more broadly applicable than just Christmas markets. The same layout logic could also support farmers markets, campus tabling events, outdoor craft fairs, food festivals, and other temporary marketplace or event layouts. Because of this, the project evolved from a Christmas market-specific configurator into a more general marketplace configurator. The Christmas tree still works as a central attraction or protected no-build zone, but it could also represent a stage, seating area, sculpture, information booth, or other focal point.

In general, I was able to accomplish what I had envisioned at the start. One major change during implementation was that the logic ended up being more complicated than I originally expected. I initially thought most of the tool could be built with standard Grasshopper nodes, but as I added edge cases, such as limiting the number of requested booths, preventing booths from overlapping, and making sure booths did not wrap around perimeter corners, I started using Python script components to condense and control the logic more clearly.

One limitation is that the radial and row layouts currently only uses one booth size. The perimeter layout uses both small and premium booths, but the radial and row cases are limited to premium booths only. This was a simplification because mixing booth sizes along curved rings would require additional logic for varying arc lengths, ring spacing, and booth orientation. Another limitation is that the tool does not yet simulate pedestrian flow or actual customer demand. The layouts are evaluated geometrically rather than through a full crowd or revenue model.

Marketplace Configurator Documentation

Overview

This project is a Marketplace Configurator. I was initially inspired by the Christmas markets in Europe, which often have unique spatial configurations and create lively third spaces for people to gather, eat, shop, and enjoy the atmosphere. While the original inspiration was a Christmas market, this configurator has many broader applications, including farmers markets, campus tabling events, craft fairs, or food festivals.

The intended users are event planners who need to quickly test temporary marketplace layouts. Instead of manually placing every booth one by one, the user can adjust high-level inputs such as site size, number of booths, booth type, path width, spacing between stalls, and layout type. The tool then generates a marketplace configuration that follows geometric constraints and avoids invalid placements such as partial booths, overlapping booths, or booths placed inside the central tree/plaza zone.

The configurator currently supports three layout types:

1. Rows Layout

2. Radial Layout

3. Perimeter Layout

Booth Types

The configurator uses two standard booth types: small and premium. Their dimensions can vary, but they are set to have the same depth and height; their widths can be different, with the premium width being larger. The logic places premium booths first because they are assumed to be larger, more valuable vendor spaces. Small booths are then placed in the remaining available space where applicable.

Adjustable Parameters

The user can change the following parameters:

General Market Inputs

  • Site length
  • Site width
  • Site radius (radial case)
  • Number of premium booths requested
  • Number of small booths requested (perimeter case)
  • Space between stalls
  • Booth dimensions
  • Booth height

Circulation Inputs

  • Path width
  • Distance between rows or rings
  • Tree/plaza clearance radius

Tree / Central Attraction Inputs

  • Tree location
  • Tree radius
  • Tree height
  • Tree clearance or protected zone radius

The tree is treated not only as a visual element, but also as a protected no-build zone. Booths are prevented from being placed where the tree or its required plaza space is located.

Layout Case 1: Rows Layout

The rows layout arranges booths in straight rows across the site. This is the most efficient and dense configuration. It is useful for markets where maximizing the number of vendors is the priority, such as tabling events, farmers markets, or vendor fairs.

The rows layout uses the site length to determine how many booths fit along each row, and the site width to determine how many rows fit. If a full booth cannot fit at the end of a row, the remaining space is left blank rather than placing a partial booth.

Logic

The rows layout calculates:

  • Number of booths that fit per row
  • Number of rows that fit within the site width
  • Booth placement points
  • Valid booth locations after removing booths that conflict with the tree zone

The number of booths per row is based on:

Booths per row = Floor((Site Length) / (Booth Width + Spacing))

The number of rows is based on:

Number of rows = Floor((Site Width + Path Width) / (Booth Depth + Path Width))

The tool then creates a grid of booth positions.

Tree Logic

For the rows layout, the Christmas tree is treated as a protected circular zone. The tool checks the distance between each booth center and the tree center. If a booth is too close to the tree, it is removed. The protected radius accounts for the tree/plaza radius plus the booth half-diagonal, so the full rectangular booth is kept outside the tree zone.

Edge Cases Considered

  • If the site length cannot fit another full booth, the tool leaves blank space at the end of the row.
  • If the site width cannot fit another full row, the extra width is left unused.
  • Booths are culled if they interfere with the tree clearance zone.
  • Requested booth count is limited by the number of booths that can actually fit.

Layout Case 2: Radial

The radial layout arranges booths in concentric horseshoe rings around the central tree or attraction. This layout is less grid-like and creates a more festive spatial experience. It is inspired by markets where visitors move around a central landmark, plaza, performance area, or Christmas tree. This layout is useful when the market is intended to feel more like a destination or gathering space rather than just a dense vendor layout.

Logic

The radial layout begins with the Christmas tree as the center point. Rings are generated outward from the tree based on the tree clearance radius, booth depth, and path width.

The ring radius is calculated as:

Ring Radius = Tree Protected Radius + Path Width + Booth Depth / 2 + i(Booth Depth + Path Width) where i is the ring number.

For each ring, the tool calculates the arc length available for booth placement. The number of booths that can fit on each ring is calculated from the ring’s horseshoe arc length and the premium booth pitch.

Max Booths Per Ring = Floor(Arc Length / Booth Pitch)

A Python script is then used to limit the total number of booths by the number of premium booths requested. For example, if the rings can fit: [2, 6, 10]

but the user only requests 8 booths, the actual booths per ring become: [2, 6, 0]

This means the first ring receives 2 booths, the second ring receives 6 booths, and the third ring is not used.

Edge Cases Considered

  • Rings that exceed the site radius are removed.
  • Rings with zero requested booths are removed.
  • The total number of booths is capped by the number requested.
  • If the requested number is larger than the total capacity, the tool reports unplaced booths.
  • Booths are placed only on valid rings with positive booth counts.
  • The layout preserves a central no-build zone around the tree.

Layout Case 3: Perimeter Layout

The perimeter layout places booths only around the outside edge of the site. This layout creates a clear open area in the center, similar to a plaza or Zócalo. This configuration is useful when the goal is to frame a central public space rather than fill the entire site with vendors.

Logic

The perimeter layout treats each side of the site as a separate placement line. This is important because a booth cannot be split across a corner. The tool places full booths along one side at a time.

The logic is:

1. Divide the rectangular perimeter into four side curves.

2. Calculate the usable length of each side.

3. Place premium booths first.

4. Move to the next side when a side is full.

5. After all requested premium booths are placed, place small booths in the remaining available space.

6. Prevent any booth from exceeding the length of its side.

This avoids the invalid condition where part of a booth is on one side of the rectangle and part of it wraps around the corner onto another side.

Edge Cases Considered

  • Booths cannot straddle corners.
  • Booths are only placed if the full booth fits on one side.
  • If a side is full, remaining booths move to the next side.
  • The total number of placed booths is capped by the requested number.
  • Premium booths are placed first, then small booths.
  • If not all requested booths fit, the remaining booths are counted as unplaced.
  • The tool avoids placing the same booth distance on all four sides by tracking side indices.

Outputs

The configurator produces both geometry and numerical feedback.

Geometry Outputs

  • Small booth geometry
  • Premium booth geometry
  • Tree / central attraction geometry
  • Tree protected zone
  • Layout-specific booth arrangement

Numerical Outputs

  • Number of premium booths placed
  • Number of small booths placed
  • Number of unplaced premium booths
  • Number of unplaced small booths
  • Booths per row, ring, or side depending on layout
  • Valid/invalid placement information

These outputs help users understand not just what the layout looks like, but also whether it satisfies the requested program.

Why This Tool Is Useful

The Marketplace Configurator is useful because it turns a repetitive manual layout task into a parametric design process. Instead of redrawing a market every time the site size, booth count, or circulation assumptions change, the user can adjust sliders and immediately see the updated layout.

The tool also makes tradeoffs visible. A dense rows layout may fit more booths, but it may feel less open. A radial layout may create a stronger sense of place around a central attraction, but it may fit fewer vendors. A perimeter layout preserves the most central open space, but it may limit vendor capacity. By comparing these three layout types, the user can make a more informed decision about which configuration best fits the goals of the market.

Overall, this project demonstrates how parametric design can support temporary event planning by making spatial constraints, booth capacity, and layout tradeoffs easier to test and visualize.

image