Facade layout schedule
Derive synthesize_facade_layout inputs from a saved AreaSchedule.
A tiled facade run is made of many tiles, so a caller reloading one should not
have to recompute each tile's frame by hand. This module derives
site_origin and jobs from the run's saved AreaSchedule, using the
same computation run_area used to anchor each tile when it submitted it, so
a schedule-derived tile_origin cannot drift from the one the live
submission used.
tile_origin_of
tile_origin_of(schedule: 'AreaSchedule', job_id: str) -> Tuple[float, float]
Return the (lon, lat) of a job's tile south-west corner.
This is the same computation run_area used to anchor that tile when it
submitted it.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
schedule
|
AreaSchedule
|
The saved schedule of a tiled run. |
required |
job_id
|
str
|
A job id from |
required |
Returns:
| Type | Description |
|---|---|
tuple of float
|
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
jobs_from_schedule
jobs_from_schedule(
schedule: "AreaSchedule",
) -> Tuple[Tuple[float, float], List["FacadeLayoutJobSpec"]]
Return (site_origin, jobs) for every job a saved tiled run submitted.
Each job's building ids come from schedule.batch_membership. It is
None on an untiled or non-facade schedule, and each job's active_ids
is then None too, which synthesize_facade_layout reads as "every
building". Jobs follow the sorted order of the schedule's keys, so the
jobs list is deterministic.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
schedule
|
AreaSchedule
|
The saved schedule of a tiled run. |
required |
Returns:
| Type | Description |
|---|---|
tuple
|
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
apply_site_frame_shift
apply_site_frame_shift(
layout: "FacadeLayout", schedule: "AreaSchedule"
) -> None
Move a schedule-derived rebuild from its tile frames into the site frame.
A rebuild made with schedule= comes back with each job's frames in that
tile's own local frame. The merged SurfaceColumns of the live run is in
the site frame, so this adds each job's tile south-west offset to its
coordinates. Without this step attach_values refuses every tiled
surface.
frame.origin, job.points and job.cell_tris are shifted. Axes and
normals are directions and are unaffected by a translation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layout
|
FacadeLayout
|
The rebuilt layout. Its |
required |
schedule
|
AreaSchedule
|
The saved schedule of the tiled run the layout was rebuilt from. |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
If a job of |