Plan Coordinates and Clearance

A reliable layout starts as a footprint table. Do not treat positions as component centers: position=(x, y) is always the bottom-left corner.

Convert a floor plan to coordinates

For a component at (x, y) with width w and depth d, its occupied ranges are x through x + w and y through y + d.

Component Position Size Occupied x-range Occupied y-range
Receiving (5, 25) 10 × 10 5–15 25–35
Cutting (30, 25) 12 × 10 30–42 25–35
WIP Buffer (58, 23) 10 × 14 58–68 23–37
Assembly (84, 25) 12 × 10 84–96 25–35
Shipping (120, 25) 10 × 10 120–130 25–35

With a 145 × 60 plant, every range remains inside 0..145 and 0..60. Adjacent horizontal edge gaps are at least 15 feet, exceeding the default six-foot clearance.

Choose the distance model

plant = Plant("Aisle Layout", 145, 60, distance_method="manhattan")
  • "manhattan" adds horizontal and vertical travel and suits orthogonal aisles.
  • "euclidean" uses straight-line distance and suits unrestricted open-floor movement.

Distance is measured center to center. Check a proposed move without running:

print(plant.distance(receiving, cutting))

Let validation check the geometry

try:
    plant.validate()
except Exception as error:
    print(error)

Validation checks every component against the plant boundary. It checks clearance between stationary Sources, Machines, Buffers, and Sinks using their rectangular edges; mobile resources do not reserve permanent floor clearance.

When a message says Assembly is 2.00 ft from WIP Buffer, move either footprint until the reported gap is at least plant.clearance. Moving only the visual label has no effect—the position and dimensions define the geometry.

Move a component safely

Use a scenario copy to preserve the baseline:

candidate = plant.copy()
candidate.name = "Candidate Layout"
candidate.move(cutting, (30, 40))
print(candidate.validate())

candidate.move(...) accepts the original component and finds its same-name, same-type copy. Validate after all related moves; an intermediate coordinate may temporarily conflict with a component that you plan to move next.

Layout planning rules

  • Reserve clearance around full footprints, not just center points.
  • Keep realistic width and depth values; undersized rectangles hide conflicts.
  • Leave extra space where queues, people, or maintenance access are expected.
  • Use unique, descriptive component names because reports and saved configurations use them.
  • Visualize before simulation and compare the arrows with the intended process chart.

Next, assign movement resources in Routes and Material Handling.