2.5.9. Reports

There are three reporting surfaces in the app, each tuned for a different consumer:

  1. Results page — the Setout / Measure / Compare / Batch output. Tab-delimited rows for paste-to-Excel.

  2. Alignment Report (HTML) — Tools ▸ Alignment Report… ; browser-renderable HTML covering every section of the alignment.

  3. Check Alignment — error log of inconsistencies between element endpoints.

2.5.9.1. Tools ▸ Alignment Report — HTML

Generates a complete, self-contained HTML report of the active alignment using the ICAD TAlignmentHTMLReport engine:

  • Header — alignment name, units, total length, start / end station;

  • Summary block — counts and statistics;

  • Horizontal PI list;

  • Horizontal element list (line / arc / clothoid / cubic parabola) with full data;

  • Curve data table — radius, length, deflection, spirals;

  • Vertical PVI list;

  • Vertical element list (grade / parabola / circular VC);

  • Cross-section model summary (super, widening, offsets, cant);

  • Station Equations section (Back / Ahead);

  • Station table — evaluated at the configured interval (default 10 m) showing chainage / X / Y / direction / curvature / elevation / grade.

On click:

  1. Warns if no alignment loaded or HGeometry is empty.

  2. Save-as dialog with *.html filter; default file name is the alignment name + .html.

  3. Builds TAlignmentHTMLReport.Create(Engine) with Title := AlignmentName.

  4. Writes the HTML, opens it in the system default browser (LCLIntf.OpenDocument).

2.5.9.2. Results page — Setout / Measure / Compare output

The Results page is a TSynEdit configured to be Excel-paste friendly. Output is tab-delimited so Ctrl+A → Ctrl+C → paste in Excel lands each column in its own cell.

Right-click popup:

  • Select All (Ctrl+A);

  • Copy (Ctrl+C);

  • Delete Selection (Del) — clears highlighted text from the display (does not touch the underlying FSession.Results);

  • Delete All (Ctrl+Del) — FSession.Results.Clear.

The Del key works natively too (synResults is no longer read-only). The underlying FSession.Results.Lines are the canonical store — anything you display-clear comes back when OnResultsChanged next fires (e.g. after a new Setout row is added).

The unified Setout / Measure dialog automatically emits the right header when the operation / mode of the row being added differs from the row last added — so a single Results page can hold mixed sections (centreline setout rows, then a rail-section break with the rail header, then rail rows, then a measure block, etc.), each section self-documenting.

2.5.9.3. Check alignment

Calculate ▸ Check Alignment scans the horizontal and vertical element chains for connection errors (endpoint mismatch above tolerance) and reports them on the Results page:

----------------------------------------------------------------
Check to Horizontal Alignment elements of alignment :test align
----------------------------------------------------------------

There are 0 errors in Horizontal Alignment

---------------------------------------------------
Check to Profile elements of alignment :test align
---------------------------------------------------

There are 0 errors in Profile

---------------------------------------------------
Check Completed
---------------------------------------------------

If the check finds a problem each row reports the element index, the gap distance (m / ft), the bearing mismatch (grad / deg) and the chainage of the offending element. Typical fix: re-solve the PIs (Apply auto-solves) so all elements are recomputed consistently.