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

+4
View File
@@ -282,6 +282,10 @@ docs/
├── cnx_vinyl_parametric_payap-iso.png Isometric view of the Payap model ├── cnx_vinyl_parametric_payap-iso.png Isometric view of the Payap model
├── cnx_vinyl_parametric_payap-office.png Office building floor plans ├── cnx_vinyl_parametric_payap-office.png Office building floor plans
├── cnx_vinyl_parametric_payap-block.png Finishing and print block plans ├── cnx_vinyl_parametric_payap-block.png Finishing and print block plans
├── cnx_vinyl_parametric_payap_parts.FCStd Payap model in Part/Draft: roof, PV, parking canopies
├── cnx_vinyl_parametric_payap_parts.png Isometric view of the parts model
├── cnx_vinyl_parametric_payap_parts-top.png Top view of the parts model
├── CNX_apply_Params.FCMacro Pushes Params edits to the model (FreeCAD 26.3 RC1)
├── crane-workshop-tours.md Overhead crane, workshop, visitor corridor ├── crane-workshop-tours.md Overhead crane, workshop, visitor corridor
├── digital-factory.md Data platform, NixOS/Clan fleet, acquisition, app ├── digital-factory.md Data platform, NixOS/Clan fleet, acquisition, app
├── facility-security.md Security, HVAC, fire and life safety, compliance ├── facility-security.md Security, HVAC, fire and life safety, compliance
+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 canopies — dimensions per the modelled layout in the
[construction RFQ](finance/phase1-construction-rfq.md). At 4.1 m and 3.5 m [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. 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 ### 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. 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. 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 remains undeveloped behind the building for ground-mount, which matters if
the electric-boiler route is chosen. 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 ### Energy efficiency architecture: recover before generating
The deepest efficiency in this plant comes from its own thermodynamics: the The deepest efficiency in this plant comes from its own thermodynamics: the