Payap scenario: Part/Draft model with roof, rooftop PV and PV parking canopies

New FreeCAD model docs/cnx_vinyl_parametric_payap_parts.FCStd: the Payap
scenario rebuilt from plain Part solids and Draft (arrays, labels,
dimensions) on the same Params sheet, no BIM objects, plus:

- monopitch roof 10 deg, low eave 7.0 m south, high side 11.4 m north
  (phase 1 RFQ geometry); gables and the fire wall follow the roof
- rooftop PV: 901 x 580 W placeholder modules, ~523 kWp, 17 rows in
  blocks of four with walkways, 1 m edge strip, 2.5 m clear over the
  fire wall (estimate)
- car canopy (10 bays, 72 modules) and scooter canopy (30 spaces,
  22 modules), ~54 kWp, RFQ footprints and heights
- module counts and kWp as sheet expressions; ~577 kWp in all

FreeCAD 26.3 RC1 does not propagate spreadsheet edits: CNX_apply_Params
macro touches the dependents and recomputes; parametric test (factory
length, pitch, car bays, walkway) matches the sheet counts.

site-candidates.md: roof/PV/canopy section with the export, battery and
BOI questions a 577 kWp array raises; mirrors in sustainability.md and
scale.md; README layout lines.
This commit is contained in:
grabowski committed 2026-10-14 20:32:43 +07:00
1 parent 1946553dd1
commit 7688d03be6
8 files changed
+80

No files matched your search

+19
View File
@@ -0,0 +1,19 @@
# CNX: apply Params
# FreeCAD 26.3 RC1 does not pass spreadsheet edits on to the objects that read them
# (a normal recompute only recomputes the sheet). Run this macro after editing Params:
# it touches every object whose expressions read the sheet, then recomputes; anything
# further down the chain (arrays, dimensions) follows normally.
import FreeCAD as App
doc = App.ActiveDocument
sheet = doc.getObject("Params") if doc else None
if sheet is None:
App.Console.PrintError("CNX apply Params: the active document has no Params sheet\n")
else:
sheet.recompute()
deps = [o for o in sheet.InList if o is not sheet]
for o in deps:
o.touch()
n = doc.recompute()
bad = [o.Label for o in doc.Objects if "Invalid" in o.State or "Error" in o.State]
App.Console.PrintMessage(f"CNX apply Params: {len(deps)} objects read Params, {n} recomputed, errors: {bad[:10]}\n")
Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 443 KiB

+3
View File
@@ -113,6 +113,9 @@ Staff parking is roofed, in the front yard clear of the loading route:
canopies — dimensions per the modelled layout in the
[construction RFQ](finance/phase1-construction-rfq.md). At 4.1 m and 3.5 m
they sit below the main building's 7.0 m low eave, so they cannot shade it.
Fully covered with the 580 W placeholder module the two canopies take 94
modules (~54 kWp); see the Payap parts model in
[site candidates](site-candidates.md#roof-pv-and-parking-canopies-part-and-draft-model-october-2026).
### Expansion headroom: a second building
+49
View File
@@ -281,4 +281,53 @@ and every equipment envelope is an estimate.
All of it is an estimate to settle against the real plot.
### Roof, PV and parking canopies (Part and Draft model, October 2026)
A second model of the same scenario,
[cnx_vinyl_parametric_payap_parts.FCStd](cnx_vinyl_parametric_payap_parts.FCStd)
([isometric](cnx_vinyl_parametric_payap_parts.png),
[top view](cnx_vinyl_parametric_payap_parts-top.png)), is built from plain
Part solids and Draft (arrays, labels, dimensions) instead of BIM objects,
on the same `Params` sheet, and adds the roof, the PV and the parking
canopies. Module counts are expressions on the sheet (`pv_roof_n`,
`pv_cp_n`, `pv_kwp`), so the drawing and the kWp change together when a
parameter does.
- **Roof**: monopitch at 10° with the low eave (7.0 m) on the south side
and the high side 11.4 m above the floor on the north, the geometry of
the [phase 1 RFQ](finance/phase1-construction-rfq.md) and the
[sustainability](sustainability.md) roof study. On this plot (road
assumed south) the whole field faces south; once Payap names a plot,
its bearing sets the azimuth and the yield derate. The fire wall rises
with the roof, 0.5 m above it.
- **Rooftop PV**: 901 modules of the generic 580 W placeholder, ~523 kWp,
in 17 rows (blocks of four with a walkway, 1 m edge strip, as in the
sustainability study): 45 columns west of the fire wall and 8 east of
it, with 2.5 m of roof kept clear over the wall (estimate; check the
Thai code and the insurer).
- **Parking canopies**, both in the car park clear of the footpath:
- car canopy, 10 bays, 27.7 × 7.0 m at 4.1 m: 72 modules;
- scooter canopy, 30 spaces, 13.7 × 5.5 m at 3.5 m: 22 modules.
Together ~54 kWp. Covering the canopies fully gives more than the
~40 kWp the RFQ states. The RFQ heights are read as the high side; at
the 10° tilt used for self-cleaning (estimate for the canopies) the low
side clears 2.9 m (cars) and 2.5 m (scooters).
- **Total ~577 kWp**: at 1,400 to 1,500 kWh/kWp/yr that is about 810 to
870 MWh a year before any azimuth derate, roughly 55 to 85 % of the
1,000 to 1,500 MWh mature two-shift use ([scale](scale.md)). Three
things follow before this size is fixed:
- at midday the array can exceed the plant's load (weekends, single
shift), so PEA's export terms decide whether the surplus is sold or
curtailed;
- the 271 kWh battery is sized for ride-through, not to absorb it;
- the BOI solar measure caps eligible spend per MW ([BOI](boi.md)).
FreeCAD 26.3.0 RC1 does not pass a cell edit on to the parts that read
the cell (a normal recompute updates only the sheet). After editing
`Params`, run the macro [CNX_apply_Params.FCMacro](CNX_apply_Params.FCMacro)
(copy it to the FreeCAD macro folder): it touches every object that reads
the sheet and recomputes. Tested with factory length, roof pitch, car bays
and walkway width; the drawn module count matches the sheet each time.
The Mueang Chi model and everything sited on it stay as they are.
+5
View File
@@ -106,6 +106,11 @@ large-format modules reach roughly 225 W/m². Roughly 70 m of plot depth
remains undeveloped behind the building for ground-mount, which matters if
the electric-boiler route is chosen.
On the Payap scenario plot the 128 m factory roof takes ~901 modules
(~523 kWp) and the car and scooter canopies another ~54 kWp, ~577 kWp in
all; what that size means for export, the battery and BOI is in
[site candidates](site-candidates.md#roof-pv-and-parking-canopies-part-and-draft-model-october-2026).
### Energy efficiency architecture: recover before generating
The deepest efficiency in this plant comes from its own thermodynamics: the