2D frame & truss analysis, rebuilt the modern way — the proven engineering of GRASP, the drafting feel of AutoCAD and CADCraft, in one app. 🏗️
Framelysis brings together the best of the tools structural engineers already use, with a modern approach:
- 📐 GRASP — the analysis workflow, load types and
.STR/.Outfiles engineers know and trust - ✏️ AutoCAD — command line, ortho, snap, polar tracking and typed
@dx,dy/@len<angleinput - 🎨 CADCraft — a clean dark ribbon interface, panels and a canvas you can select and drag on directly
- ⚡ Modern essentials — unlimited undo/redo, document tabs, switchable units, light and dark themes, touch and stylus support, and the same app on Windows, macOS, Android and the web
| What you get | |
|---|---|
| Undo / redo | ✅ multi-level, every edit (Ctrl+Z / Ctrl+Y) |
| Drawing | ✅ click, rubber-band, ortho, snap, polar, typed coordinates |
| Editing | ✅ select and drag directly, no modal tool hunting |
| Combinations | ✅ named, editable, with service / ultimate / envelope factors |
| Units | ✅ switch display units any time (kN·m, kip·ft, N·mm, …) |
| Files | ✅ GRASP .STR import/export, .Out writer, native project files |
- Model — nodes, members, supports (🔺 pin · ⚪ roller ·
↔️ roller-x · 🧱 fixed · 🛞 guided), materials, sections, end releases, settlement and spring supports - Loads — all ten GRASP member load types in four directions, nodal loads, temperature, self weight
- Cases — load cases and named combinations, NSCP 2015 load combinations (LRFD or ASD) in one click, plus a design envelope
- Analysis — direct stiffness method, 3 DOF per node, linear elastic, frames and trusses
- Results — deflected shape, bending moment, shear, axial, reactions, member end forces, tables
- Report — A4 PDF with model, loads, diagrams, displacements, reactions and member forces 📄
- Print view — a clean figure with reactions, in light or dark 🖨️
- Touch — pen, finger and pinch zoom on tablets, with palm rejection ✍️
- Android — the same app as an APK for phones and tablets 📱
- Interface — ribbon, model tree, properties and results panels, command line with short names, dark/light themes, start page, settings
The solver reproduces GRASP's own .Out files to 5 significant figures on all of GRASP's example files (FRAME, SPRING, SETTLMNT, TRUSSFNK, TEMPRATR, BEAM, CANT, GABLE and more), and matches closed-form results exactly: simply supported and fixed-fixed beams, cantilevers, an axial bar, a portal frame.
node tests/test-solver.js # closed-form checks
node tests/parity.js <model.str> <grasp.out> # parity against a GRASP .Out
node tests/split-loads.js # loads cut across members keep their reactions
node scripts/build-web.js && node tests/ui-162.js # browser checks (needs Playwright)
node tests/nscp.js && node tests/ui-180.js # NSCP 2015 combinations, v1.8 UI checks
⚠️ Open item: GRASP member-load file types 05 and 06 are not fully settled. The load primitive is general (q1, q2, x1, x2) so the mapping can be corrected without a rewrite. A real commercial-building file imports with every load record and solves, but its.Outis not perfectly in sync with its.str(about 2 % on upper-floor beam moments).
GRASP, the Graphical Rapid Analysis of Structures Program, is a Windows program for 2D frame and truss analysis used in civil engineering courses. Framelysis opens and writes its .STR and .Out files, so existing GRASP work carries over. Here is one model, a commercial building's longitudinal span under 1.2DL + 1.6LL, in each:
| GRASP | Framelysis |
|---|---|
![]() |
![]() |
GRASP screenshot shown for comparison; GRASP belongs to its authors.
Get the latest build from the Releases page:
- 🪟 Windows:
Framelysis_…_x64_en-US.msior the…-setup.exe - 🍎 macOS:
Framelysis_…_macOS_universal.dmg(Apple Silicon and Intel; built by GitHub Actions) - 📱 Android:
Framelysis-….apk(install from outside the Play Store) - 🌐 Web: framelysis-web.vercel.app — nothing to install
Type at the bottom bar and press Enter. Short names work, like in CAD.
| Command | Short | Does |
|---|---|---|
NODE x y |
N |
add a node (also @dx,dy, @len<angle while drawing) |
MEMBER i j |
M |
join two nodes |
SUPPORT |
S |
set a restraint (free · pin · roller · rollerx · guided · guidedx · fixed) |
LOAD |
L |
add a member load |
RUN |
R |
analyse (F5) |
UNDO / REDO |
U / RD |
step through history |
ZOOM, DELETE, MOVE, SELECT, CLEAR |
Z, DEL, MV, SEL, CL |
view and edit |
HELP |
H |
the full list |
Framelysis is plain HTML/CSS/JS in a webview, wrapped by Tauri (Rust).
# try it in a browser: just open src/index.html
# desktop app + MSI (Windows)
npm install
node scripts/build-web.js
npx tauri build # needs Rust (GNU or MSVC) and, for the MSI, WiX (Tauri downloads it)
macOS: .github/workflows/macos.yml builds a universal .dmg on GitHub's Mac runners whenever a release is published (or run it from the Actions tab). The app is not signed with an Apple Developer ID, so the first launch needs right-click › Open.
On a machine with only the GNU Rust toolchain, windres is needed on PATH (w64devkit works). See docs/HANDOFF.md for the exact build notes.
| Path | Purpose |
|---|---|
src/index.html, src/styles.css, src/app.js |
UI, model, rendering, settings, start page |
src/solver.js |
direct stiffness solver (also runs in Node) |
src/loads.js |
member-load primitive and the ten load types |
src/str.js |
GRASP .STR parser and writer, .Out writer |
src/report.js |
A4 report builder |
scripts/ |
build-web.js (stages dist/) and build-msi.ps1 (Windows installer) |
src-tauri/ |
Rust shell and installer config |
android/ |
Android wrapper (WebView around the same web build) |
tests/ |
verification: solver checks, GRASP parity, browser checks |
docs/ |
changelog and handoff notes, build spec, ground truth, images, release notes |
No 3D, no plate/shell elements, no dynamic analysis, no steel or concrete design checks, no cloud, accounts or telemetry.
MIT — see LICENSE. GRASP, AutoCAD and CADCraft are the work of their respective owners; Framelysis is an independent project inspired by them and contains none of their code.
Made by Nezzar · with the help of modern technology





