Press hall laid out 60/40 for Duplex systems (special pressings first)
Deploy test site / deploy (push) Successful in 46s
Deploy test site / deploy (push) Successful in 46s
User (October 2026): "the factory should have more space for duplex setups than classic, we will mainly focus on special prints and not mono colours plan it to be 60/40 duplex classic". - Press hall (~870 m2) planned 60/40 by floor: four Duplex bays along the visitor corridor and six Classic positions in the second row (440 + 300 = ~740 m2 at 110 / 50 m2), the rest open for mould carts and staging; the launch plant fills one of each, growth adds Duplex systems first. Replaces "room for ten more Classics". - Full hall: 8 semi-automatic presses + 6 Classics, 57/43 by press count, ~1,250 to 1,410 records/h gross, ~3.6 to 4.7M a year on the scale.md basis (was 4.7 to 5.8M for 2 Duplex + 11 Classics); ~2.1 to 2.5 t/h steam and up to ~1.8 MW cooling, still a utility phase of its own. By hourly output the six automatic Classics still press more than the eight semi-automatic presses (estimate). - pressing-line.md, scale.md (capacity table, utilities), site-candidates .md, crane-workshop-tours.md, roadmap.md, README (the FreeCAD Payap model still draws the earlier layout; noted, not redrawn). - Calculator: preset "Full hall 60/40 (4 D + 6 C)", fleet ladder Duplex first (1+1, 2+1, 3+2, 4+3, 4+6) plus the same floor Classic-led (2+11) and Duplex-only (7+0) for comparison; plant view reserves 4 Duplex bays and 6 Classic positions. - Business plan draft 0.2 rebuilt (capacity table row, plot fit, layout). Checks: renderer 720 checks pass (node budget 2,700 for the Duplex-heavy stress preset, 60 fps), calculator regression 0 fails, level selector and page checks clean at 390 / 1024 / 1440 px dark and light; PDF 47 pages with a filled table of contents.
This commit is contained in:
1 parent
4beda7f27a
commit
d8b2c1e2db
11 files changed
+71
-40
No files matched your search
+16
-12
@@ -612,7 +612,7 @@ html[data-theme=light] .iso-svg .iso-glint { display: inline; }
|
||||
<button type="button" data-p="levers">Investor levers (216M)</button>
|
||||
<button type="button" data-p="lean">Lean: bought stampers, outsourced cutting</button>
|
||||
<button type="button" data-p="five">Five-press fleet (second Duplex)</button>
|
||||
<button type="button" data-p="full">Full hall, Classic-led (2 D + 11 C)</button>
|
||||
<button type="button" data-p="full">Full hall 60/40 (4 D + 6 C)</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@@ -813,9 +813,10 @@ html[data-theme=light] .iso-svg .iso-glint { display: inline; }
|
||||
|
||||
<section class="card">
|
||||
<h2>From small to fully equipped</h2>
|
||||
<p class="note" style="margin-top:0">Fleets from the launch plant to a full Payap press hall (about 870 m²:
|
||||
the two Duplex bays plus the Classic and ten more Classic positions, or the same floor
|
||||
with more Duplex systems), at the current settings and plant configuration. Click a row to load it.</p>
|
||||
<p class="note" style="margin-top:0">Fleets from the launch plant to a full Payap press hall (about 870 m²,
|
||||
laid out 60/40 by floor for Duplex systems because the plant focuses on special pressings: four
|
||||
Duplex bays and six Classic positions, ~740 m²), then the same floor filled Classic-led or with
|
||||
Duplex systems only, for comparison, at the current settings and plant configuration. Click a row to load it.</p>
|
||||
<div class="tscroll"><table id="ladT"></table></div>
|
||||
</section>
|
||||
|
||||
@@ -1238,7 +1239,9 @@ html[data-theme=light] .iso-svg .iso-glint { display: inline; }
|
||||
function X(fx) { return FX + fx; }
|
||||
function Y(fy) { return FY + fy; }
|
||||
// Press hall: 2 rows, 8 m deep. Slot lengths follow the calculator's floor
|
||||
// figures (110 m2 per Duplex bay, 50 m2 per Classic, 870 m2 hall).
|
||||
// figures (110 m2 per Duplex bay, 50 m2 per Classic, 870 m2 hall). Laid out 60/40 by floor
|
||||
// for Duplex systems (special pressings first, October 2026): 4 Duplex bays + 6 Classic positions.
|
||||
var HALL_D = 4, HALL_C = 6;
|
||||
var HALL = { cap: 870, aD: 110, aC: 50 };
|
||||
var HROWS = [{ x: X(40), y0: Y(3.6), y1: Y(11.6), len: 52 }, { x: X(47.8), y0: Y(12.4), y1: Y(20.4), len: 44.2 }];
|
||||
var LTOT = 52 + 44.2, WD = HALL.aD / HALL.cap * LTOT, WC = HALL.aC / HALL.cap * LTOT;
|
||||
@@ -1279,8 +1282,8 @@ html[data-theme=light] .iso-svg .iso-glint { display: inline; }
|
||||
var D = cfg.duplex, Cn = cfg.classic, A = 0, Dh = 0, Ch = 0, i, items = [];
|
||||
while (Dh < D && A + HALL.aD <= HALL.cap + 1e-9) { Dh++; A += HALL.aD; }
|
||||
while (Ch < Cn && A + HALL.aC <= HALL.cap + 1e-9) { Ch++; A += HALL.aC; }
|
||||
var eD = Math.max(0, 2 - Dh); while (eD > 0 && A + eD * HALL.aD > HALL.cap) eD--;
|
||||
var eC = Math.max(0, 11 - Ch); while (eC > 0 && A + eD * HALL.aD + eC * HALL.aC > HALL.cap) eC--;
|
||||
var eD = Math.max(0, HALL_D - Dh); while (eD > 0 && A + eD * HALL.aD > HALL.cap) eD--;
|
||||
var eC = Math.max(0, HALL_C - Ch); while (eC > 0 && A + eD * HALL.aD + eC * HALL.aC > HALL.cap) eC--;
|
||||
for (i = 0; i < Dh; i++) items.push({ t: "D", n: i + 1 });
|
||||
for (i = 0; i < eD; i++) items.push({ t: "D", e: 1 });
|
||||
for (i = 0; i < Ch; i++) items.push({ t: "C", n: i + 1 });
|
||||
@@ -1562,7 +1565,7 @@ html[data-theme=light] .iso-svg .iso-glint { display: inline; }
|
||||
sc.inf("factory", "Factory, 128 x 25 m",
|
||||
"Production floor only (Payap scenario model): workshop, galvanics, stamper prep, PVC lab, colour store, press hall, finishing block; warehouse and dispatch behind the fire wall. Monopitch roof, low eave 7.0 m, high side 11.4 m.");
|
||||
sc.inf("presshall", "Press hall, ~870 m2",
|
||||
al.Dh + " Duplex system" + (al.Dh === 1 ? "" : "s") + " and " + al.Ch + " Classic" + (al.Ch === 1 ? "" : "s") + " in the hall; laid out for 2 Duplex bays + 11 Classic positions (Payap scenario model)" +
|
||||
al.Dh + " Duplex system" + (al.Dh === 1 ? "" : "s") + " and " + al.Ch + " Classic" + (al.Ch === 1 ? "" : "s") + " in the hall; laid out 60/40 by floor for special pressings: 4 Duplex bays and 6 Classic positions, ~740 m2 (pressing-line.md)" +
|
||||
(al.p2need ? "; " + (al.ovD + al.ovC) + " more in the phase 2 building" : ""));
|
||||
sc.inf("galvanics", cfg.galvanics ? "Galvanics clean room (Pheenix Alpha line)" : "Galvanics room: stampers bought in",
|
||||
cfg.galvanics ? "PASU, PPPU, PDPU, PMPB; one PDPU covers full-capacity demand, a second is redundancy (galvanics.md). Room-in-room under the crane, open to stamper prep." :
|
||||
@@ -1680,7 +1683,7 @@ html[data-theme=light] .iso-svg .iso-glint { display: inline; }
|
||||
fl.flat(pts, z + 0.015, "iso-slot iso-empty", id);
|
||||
sc.inf(id, sl.t === "D" ? "Duplex bay (room reserved)" : "Classic position (reserved)",
|
||||
sl.t === "D" ? "Growth option: room, utility modules and ring-main tees reserved, not in the investment (pressing-line.md)" :
|
||||
"Floor kept for up to ten more Classics (option, not in the plan)");
|
||||
"Classic position kept for growth (option, not in the investment); the hall is laid out 60/40 for Duplex systems (pressing-line.md)");
|
||||
} else fl.flat(pts, z + 0.015, "iso-slot", sl.t === "D" ? "duplex-" + sl.n : "classic-" + sl.n);
|
||||
if (!sl.e && sl.t === "D") {
|
||||
var cx = (sl.x0 + sl.x1) / 2, cy = (sl.y0 + sl.y1) / 2;
|
||||
@@ -3076,8 +3079,9 @@ function caseNow() {
|
||||
return "";
|
||||
}
|
||||
const LADDER = [
|
||||
["Launch plant", 1, 1], ["Second Duplex", 2, 1], ["Step 1", 2, 3], ["Step 2", 2, 5], ["Step 3", 2, 8],
|
||||
["Full hall, Classic-led", 2, 11], ["Full hall, mixed", 4, 7], ["Full hall, specials-led", 6, 3],
|
||||
// Duplex systems first: the hall is laid out 60/40 by floor for them (special pressings, October 2026)
|
||||
["Launch plant", 1, 1], ["Second Duplex", 2, 1], ["Step 1", 3, 2], ["Step 2", 4, 3],
|
||||
["Full hall 60/40", 4, 6], ["Same floor, Classic-led", 2, 11], ["Same floor, Duplex only", 7, 0],
|
||||
];
|
||||
// presets: fleet plus plant configuration; prices, case and assumptions stay as they are
|
||||
const CFG0 = Object.fromEntries(CFGK.map(k => [k, S0[k]]));
|
||||
@@ -3087,7 +3091,7 @@ const PRESETS = {
|
||||
levers: { ...LAUNCH, solar: "ppa", metro: "launch", galvPrice: "oms", corridor: "later" },
|
||||
lean: { ...LAUNCH, galv: "bought", cut: "out" },
|
||||
five: { mode: "fleet", dFleet: 2, cFleet: 1, ...CFG0 },
|
||||
full: { mode: "fleet", dFleet: 2, cFleet: 11, ...CFG0 },
|
||||
full: { mode: "fleet", dFleet: 4, cFleet: 6, ...CFG0 },
|
||||
};
|
||||
|
||||
let S = { ...S0 }, A = { ...A0 };
|
||||
|
||||
Reference in new issue
Block a user