Skip to content

About

Framelysis: modern 2D frame & truss analysis — GRASP's engineering, AutoCAD's drafting and CADCraft's interface, merged. Windows, macOS, Android & Web.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Framelysis — 2D frame & truss analysis

2D frame & truss analysis, rebuilt the modern way — the proven engineering of GRASP, the drafting feel of AutoCAD and CADCraft, in one app. 🏗️

version platform built with license


Framelysis

✨ Why Framelysis

Framelysis brings together the best of the tools structural engineers already use, with a modern approach:

  • 📐 GRASP — the analysis workflow, load types and .STR / .Out files engineers know and trust
  • ✏️ AutoCAD — command line, ortho, snap, polar tracking and typed @dx,dy / @len<angle input
  • 🎨 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

🧰 What it does

  • 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

Start page

🎯 Verified against GRASP

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 .Out is not perfectly in sync with its .str (about 2 % on upper-floor beam moments).

Real building

🔁 Coming from GRASP?

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
The building in GRASP The same building in Framelysis

GRASP screenshot shown for comparison; GRASP belongs to its authors.

📥 Download

Get the latest build from the Releases page:

  • 🪟 Windows: Framelysis_…_x64_en-US.msi or 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

⌨️ Command line

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

🛠️ Build

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.

🗂️ Layout

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

🚫 Not in scope

No 3D, no plate/shell elements, no dynamic analysis, no steel or concrete design checks, no cloud, accounts or telemetry.

📄 Licence

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

About

Framelysis: modern 2D frame & truss analysis — GRASP's engineering, AutoCAD's drafting and CADCraft's interface, merged. Windows, macOS, Android & Web.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages