EN 1090-2 Execution ClassPro + Studio
FrameAI automatically assigns an execution class (EXC1–EXC4) to every fabrication job using the EN 1090-2:2018 §4.1.2 + Annex B decision matrix. The result appears on the PDF cover sheet, in the Fabrication Requirements tab, and as a SI block in every DSTV NC1 file.
How it works
On every pipeline run FrameAI inspects the computed job data and derives three inputs:
- Consequence Class (CC) — driven by EN 1990 Annex B: structure type, number of occupants, economic consequences. Defaults to CC2 when not specified.
- Service Category (SC) — driven by fatigue and seismic results: SC2 if the fatigue module computed a non-zero Palmgren-Miner damage ratio, or if the seismic module derived ag·S ≥ 0.10g.
- Production Category (PC) — driven by material grade, welded thickness, and connection complexity: PC2 if any member is above S355, any welded thickness exceeds 30 mm, or any complex (multi-bolt + welded) node is detected.
These three inputs feed into the EN 1090-2:2018 Table B.3 lookup. The result, plus a rationale list referencing specific clauses, is stored as exc_data on the job row.
Entitlement
EXC auto-assignment is included in Pro and Studio. Free-tier users see the EXC value on the demo job only. Upgrade at /pricing.
Decision Matrix — EN 1090-2:2018 Table B.3
| SC × PC | CC1 | CC2 | CC3 |
|---|---|---|---|
| SC1 × PC1 | EXC1 | EXC2 | EXC3 |
| SC1 × PC2 | EXC2 | EXC2 | EXC3 |
| SC2 × PC1 | EXC2 | EXC3 | EXC4 |
| SC2 × PC2 | EXC2 | EXC3 | EXC4 |
CC1 = low consequence (storage, agricultural). CC2 = medium (offices, commercial buildings). CC3 = high (grandstands, public buildings with large crowds). Default is CC2.
Auto-Derivation Rules
Service Category (SC)
- SC2 if the fatigue module ran and computed Palmgren-Miner damage D > 0 on any detail (EN 1993-1-9 §6).
- SC2 if the seismic module ran and computed ag·S ≥ 0.10g at the site (EN 1998-1 §3.2.1 / EN 1090-2 Annex B §B.2).
- SC1 otherwise.
Production Category (PC)
- PC2 if any member has material grade above S355 (S420, S460, S500, S550, S620, S690…).
- PC2 if any welded thickness exceeds 30 mm (plate thickness in welds_data, or flange/web thickness from extracted_data).
- PC2 if any complex node is detected: a connection with more than two bolt positions AND a weld (multi-bolt + welded combined detail).
- PC1 otherwise.
All derivation decisions are included in the rationale array in the API response, with EN 1090-2 clause references.
NDT Scope — EN 1090-2:2018 Table 24
| Class | VT | MT/PT | UT/RT | Quality Level |
|---|---|---|---|---|
| EXC1 | 100% | 0% | 0% | D (EN ISO 5817) |
| EXC2 | 100% | 10% | 0% | C (EN ISO 5817) |
| EXC3 | 100% | 20% | 20% | B (EN ISO 5817) |
| EXC4 | 100% | 50% | 50% | B+ (EN ISO 5817) |
Tolerance Class
EXC1 + EXC2: Class 1 — essential tolerances only (EN 1090-2 Table D.1.1).
EXC3 + EXC4: Class 2 — functional tolerances including additional requirements on straightness, camber, and end-plate flatness (EN 1090-2 Table D.1.2).
Welder Qualification + WPS/WPQR
- EXC1: EN ISO 9606-1 basic qualification; BPQR sufficient.
- EXC2: EN ISO 9606-1 full qualification; WPQR (EN ISO 15614-1) required for structural welds.
- EXC3: EN ISO 9606-1 strict qualification with periodic renewal; pre-qualified details limited; 3rd-party surveillance.
- EXC4: Highest qualification class with 6-monthly reassessment; all non-standard procedures require separate approval; independent on-site QC inspector.
POST /api/exc/assign
POST/api/exc/assign
Assign EXC class from a job (auto-derives SC/PC) or from explicit inputs. Stores the result in exc_data on the job row.
Request body
{
"job_id": 42, // optional — if provided, auto-derives SC/PC
"cc": "CC2", // optional override (CC1 / CC2 / CC3)
"sc": "SC1", // optional override (SC1 / SC2)
"pc": "PC1", // optional override (PC1 / PC2)
"reason": "Seismic zone upgraded by project engineer", // optional; logged to job_overrides
"email": "you@firm.com" // for entitlement lookup
}
Response
{
"type": "exc_assignment",
"job_id": 42,
"exc": "EXC2",
"consequence_class": "CC2",
"service_category": "SC1",
"production_category": "PC1",
"rationale": [
"Consequence Class CC2 per EN 1990 Annex B Table B.1",
"Service Category SC1 per EN 1090-2:2018 Annex B §B.2",
"Production Category PC1 per EN 1090-2:2018 Annex B §B.3",
"EN 1090-2:2018 Table B.3 → EXC2",
"SC1: no fatigue damage and seismic a_g·S < 0.10g",
"PC1: all grades ≤ S355, welded thickness ≤ 30mm, no complex nodes"
],
"requirements": {
"exc": "EXC2",
"weld_quality_level": "C (EN ISO 5817)",
"weld_inspection_standard": "EN ISO 17635:2016",
"ndt": {
"vt_percent": 100,
"mt_pt_percent": 10,
"ut_rt_percent": 0,
"note": "VT 100%; MT/PT 10% on CJP welds per EN 1090-2:2018 Table 24."
},
"tolerance_class": "Class 1 (essential tolerances, EN 1090-2 Table D.1.1)",
"welder_qualification": "EN ISO 9606-1:2017 (full qualification)",
"wps_wpqr": "Qualified WPS required; WPQR (EN ISO 15614-1) required for structural welds",
"fabrication_notes": [...]
}
}
GET /api/exc/:job_id
GET/api/exc/:job_id
Retrieve stored EXC result for a job. If not yet computed, auto-assigns on the fly. Returns the same structure as the POST endpoint, plus an overrides array listing any engineer manual overrides.
Manual Override
Override the auto-assigned EXC when the engineer has project-specific information (e.g. a regulatory authority requiring a higher class, or a structural certificate confirming lower CC).
curl -X POST https://frameai-structural.polsia.app/api/exc/assign \
-H "Content-Type: application/json" \
-d '{
"job_id": 42,
"cc": "CC3",
"sc": "SC2",
"pc": "PC2",
"reason": "Regulatory authority requirement — stadium grandstand CC3",
"email": "you@firm.com"
}'
Override events are logged to the job_overrides table with user_id, reason, and created_at. They appear in the overrides array on subsequent GET calls.
Sample Rationale Output
A job with S420 members (→ PC2), fatigue D = 0.45 (→ SC2), CC2 environment:
EXC: EXC3
Rationale:
1. Consequence Class CC2 per EN 1990 Annex B Table B.1
2. Service Category SC2 per EN 1090-2:2018 Annex B §B.2
3. Production Category PC2 per EN 1090-2:2018 Annex B §B.3
4. EN 1090-2:2018 Table B.3 → EXC3
5. SC2: fatigue module ran with D > 0 (Palmgren-Miner, EN 1993-1-9 §6)
6. PC2: member C1 grade S420 > S355 (EN 1090-2 Annex B §B.3)
NDT extent (Table 24): VT 100% · MT/PT 20% · UT/RT 20%
Tolerance class: Class 2 (EN 1090-2 Table D.1.2)
Welder qualification: EN ISO 9606-1:2017 (strict, periodic renewal)
References: EN 1090-2:2018 §4.1.2, Annex B (Table B.3); EN ISO 17635:2016; EN ISO 5817:2014; EN ISO 9606-1:2017; EN ISO 15614-1:2017; EN 1993-1-9:2005 §6; EN 1998-1:2004 §3.2.1.