9. Reports & files
This chapter covers everything that leaves the program: project files,
verification model files, the punching report (print/PDF), and the model
export options (JSON, STEP, IFC, NASTRAN - plus the legacy DXF endpoint).
9.1 Project files
Save and autosave
- Ctrl+S or the Save button writes the project to the server store
(STORE_DIR, default./projects, one<id>.gmdl.jsonper project). - Autosave (Settings → General) is on by default with a 2-second quiet
period after the last edit. Turn it off for manual-save workflows; the
header title then shows a dot (•) while there are unsaved changes and the
browser warns before closing with unsaved work. - There is no Save As; use Duplicate (creates
<name> (copy)and opens
it) to branch a model.
Export to file
Export to File downloads the current project as
<ProjectName>.geomodel.json, pretty-printed (2-space indent). The payload:
| Field | Contents |
|---|---|
SchemaVersion |
1 (older files are upgraded on load; newer versions are rejected) |
ID, Name, Units, Folder, Position |
project metadata |
FloorModel |
every semantic entity: slabs, openings, columns, piles, pile soil layers, soil zones, walls, edge beams, drop panels, vertical plates, design strips, grid lines, measurements, loads, design_params, analysis_options, custom materials |
LoadCases, LoadCombinations, ActiveCaseId, ActiveSelectionType, ActiveComboId, LoadCaseData |
load management state |
Nodes, Elements, … |
legacy frame-model maps (empty for slab models) |
NodeShape, NodeSizeScale, DisplayUnits, GridMajorSpacing, GridMinorSpacing, GridMinorColor, BandInContour |
per-project presentation |
BsmProjectSections, BsmActiveId, BsmNextId, ActiveMaterialName |
section/material state |
Analysis results are not stored - opening a file clears results and you
re-run the analysis. The mesh itself is regenerated on demand.
Import from file
Import from File accepts .json/application/json (a .geomodel.json
export, a verification download, or a shared model). The file loads into the
session as an unsaved model (Imported project file); Save gives it a
project name. Errors surface as Could not import file: … - the usual cause is
a truncated or edited file that no longer parses.
Verification JSON files
The benchmark projects ship in web/projects/verification/ as
<key>.geomodel.json and are served at
/static/projects/verification/<key>.geomodel.json; import one with
Import from File. See Chapter 8.
9.2 Calculation reports
Only the punching check produces a calculation report today.
Punching summary (reachable from the UI)
In the Punching view, the Σ button opens Punching shear summary with
columns:
| # | Column | Position | V* | M* | u₁ | v* | vR | Util. | Check |
|---|
V* in force units, M* in moment units, u₁ in length units, v*/vR in stress
units; Util. is colour-coded (< 90 % green, 90–100 % yellow, ≥ 101 % red).
The footer notes: "Per-column punching shear utilisation for the active result
set. Full calculation sheets are not included."
Full punching calculation sheet (scripted)
The full report engine exists and is exposed on the console:
window.openPunchingReport() // build and show the calculation sheet
It contains, per column:
- a cover block - project, project number, design code and standard, load
case/combination, units, prepared/checked/revision/date, basis; - the summary table (same columns as above);
- per-column sections with inputs, a plan + section diagram, numbered steps
with the code equations, and a verdict PASS/FAIL with utilisation; - code references, assumptions and limitations, and a sign-off block.
Standards strings per code: EN 1992-1-1:2004 - §6.4 punching shear (PD 6687 position factors), AS 3600-2018 - §9.3 punching shear (φ = 0.70),
ACI 318-19 - §22.6 two-way shear and §8.4.4.2 moment transfer,
CSA A23.3-14 - §13.3.4 two-way shear and §13.3.5 moment transfer.
Report metadata (project number, engineer, checker, revision) comes from the
fields persisted in localStorage['geomodel_report_meta'].
Print: the sheet paginates into A4 portrait pages (12 mm margins) in a
print area and calls the browser's print dialog.
PDF: punching-shear-report.pdf - A4 210 × 297 mm, 14 mm margins; the
pages are rasterised from the SVG at up to 1.5× scale.
The strip Member Design Calculations sheet (flexure, shear, deflection,
crack, stress, anchorage per layer with clause references) is implemented but
hidden behind an internal flag; its calculations back the strip diagrams and
Size to limits workflow described in
§6.10.
9.3 Charts and plots
The Charts modal (Deflection vs time, Convergence) is on-screen only:
there is no image or CSV export of charts, tables or viewport screenshots.
For reporting, take a screen capture or recreate the numbers from the
underlying tables (summary modals, reactions table, P⌀ summary).
9.4 Store, backup and versions
- Each project is a single JSON file in the store directory. Back up by
copyingSTORE_DIR(or exporting projects individually). - The store writes atomically (temp file + rename), so an interrupted save
does not corrupt the last version. SCHEMA_VERSIONis 1; opening a newer file is refused with
project schema version N is newer than supported version 1. Older files
load and are stamped to the current version on save.- There is no built-in revision history - duplicate the project before major
changes, or keep exported snapshots (model-2026-09-27.geomodel.json).
9.5 Model exports: IFC, STEP, IGES, NASTRAN, DXF
The project toolbar's Export button opens a modal with one choice per
file format: Project JSON, STEP, IFC, IGES and NASTRAN.
Each maps to the endpoint GET /api/projects/:id/export?format=…; the DXF
endpoint has no button.
Orientation note: every export uses the viewport's plan orientation. The
app's plan view is Y-down (screen convention) while CAD/BIM viewers draw
plans Y-up, so plan Y is negated on export - imported models appear exactly
as in the app, in both plan and iso views.
IFC (IFC2X3 by default, IFC4 available)
Export → IFC downloads the floor model as IFC2X3
(.ifc) - the schema every viewer and CAD importer handles, including older
Revit and analysis-tool importers. Use ?format=ifc4 for the newer schema
when the target tool expects it:
GET /api/projects/:id/export?format=ifc (IFC2X3)
GET /api/projects/:id/export?format=ifc4 (IFC4)
The file is a Coordination-View-style model in SI metres: project, site,
building and one storey per slab elevation (Level 0, Level -1.5, …), with
slabs (IfcSlab), walls (IfcWall), columns (IfcColumn), edge beams
(IfcBeam) and slab openings (IfcOpeningElement + void relationships) as
extruded solids, grouped under their storey. Verified against both
IfcOpenShell and web-ifc: every element parses and produces meshes with
vertices; walls/columns/beams omit the PredefinedType attribute that IFC2X3
does not define, and the SI units use the schema-correct derived dimensions.
Scope and limits:
- Geometry only - no loads, results, reinforcement, piles, soil zones, grids
or materials. Point supports and line supports are restraints, not geometry,
and are skipped. - Columns use their drawn section (rectangular or circular, default 0.3 m);
walls use their drawn width (default 0.2 m); beams hang below their host
slab like the analysis model. - Degenerate entities (zero thickness/height/length, polygons under 3 points)
are skipped silently. - Slabs at the same elevation (within 1 mm) share a storey; walls, columns
and beams join the nearest storey.
If a viewer rejects the file, first confirm you are using a current download -
older exports (before the entity-terminator fix) contained no valid geometry
at all and were silently empty in viewers.
STEP (AP214)
Export → STEP downloads an AP214 faceted-BREP file (.step) in SI metres:
one closed MANIFOLD_SOLID_BREP per slab (with opening voids), wall, column
and edge beam, under a single product. Use it when a CAD tool (SpaceClaim,
SolidWorks, FreeCAD, Revit importers) is happier with STEP than IFC. Every
solid is a closed manifold with consistent face orientation - validated
against OpenCASCADE's STEP reader (zero check findings, all solids valid).
STEP carries no loads or results; for solver cross-checks export the
NASTRAN deck instead, or apply loads in the target tool.
IGES (surfaces)
Export → IGES downloads an IGES 5.3 file (.igs) in metres: every slab,
wall, column and beam face as a trimmed planar surface (Type 144 over Type
108) bounded by lines (Type 110). Faces with openings are triangulated so
each boundary is a single loop. Use it for older CAD importers that prefer
IGES over STEP; validated against OpenCASCADE's IGES reader (all faces valid).
No loads or results - use the NASTRAN deck for those.
NASTRAN (analysis mesh with loads)
Export → NASTRAN exports the generated analysis mesh as a SOL 101 deck:
GRID, CQUAD4/CTRIA3 shells with PSHELL per thickness, CBAR members
with PBAR, SPC restraints, CELAS2 ground springs, and one SUBCASE per
load case with the factored nodal loads as FORCE cards (area pressures ride
as tributary nodal lumps along the element normal - the solver's direction
convention). Units are metre/kN/kPa. This is the recommended path for
cross-checking in Strand7: import the .nas, apply gravity/self-weight there
(it is not in the deck - element densities are in kg/m³ while forces are
kN), and solve. Combinations are not expanded; combine the exported cases in
the target tool.
DXF and legacy NASTRAN
Unsupported formats return unsupported format: X (supported: …) listing the
registered formats. The DXF writer serialises the legacy frame-model maps
(Nodes, Elements), which are empty in slab projects; call it from the
console or with curl:
curl -o model.dxf "http://localhost:PORT/api/projects/<id>/export?format=dxf"
What the DXF writer produces when legacy frame data exists: $ACADVER = AC1009; layers 0 (colour 7), NODES (5), BEAMS (4), PLATES (6);
POINT per node, LINE per CBAR/CBEAM, 3DFACE per CQUAD4/CTRIA3. No text,
blocks or results. Use it only for legacy frame models; slab projects have no
frame maps, so the file is header-only.
9.6 Printing
- Punching report: print from the report view (A4 portrait, one page per
.print-page). - Charts and tables: use the browser print of the current page, or capture
the modal. - There is no dedicated plotting/print layout for contours; the compare view
and split view are for on-screen comparison.
9.7 File troubleshooting
| Symptom | Cause | Action |
|---|---|---|
Could not import file: … |
invalid JSON / wrong file | re-export or download the verification JSON again |
| Project opens with no results | results are never stored | re-run the analysis |
| Saved file missing loads | presets replaced cases but kept old load records | verify loads after preset changes |
project schema version N is newer… |
file made by a newer build | open with the newer version |
| Autosave not saving | disabled in Settings → General, or the server store is read-only | check the toggle and store permissions |
| DXF file has no geometry | slab projects have no frame model | use STEP or IFC instead |
| Report print blank | pop-up blocked / print area not built | re-open the report and print again |
→ Back to Chapter 1 - Introduction