At a glance
| Hand-written code | 466,402 lines in 1,853 files |
| C# | 410,594 lines · 1,622 files · ~356,000 non-blank, non-comment lines |
| Types (classes, structs, interfaces, enums, records) | 3,864 |
| Ribbon commands | 66 |
| JSON API | 67 features · 404 operations (192 of them modify the model) |
| Engineering calculators | 114, each citing the Handbook of Die Design |
| Materials library | ~1,000 sourced materials |
| Purchased-component families | 24 families from 9+ vendors (Dayton, DADCO, Danly, MISUMI, Raymond, …) |
| Offline test suites | 41 (36 pass, 1 fail, 4 skipped in the latest run) |
| Live API test cases | 889 in 77 files · 762 / 806 passed (94.5 %) in the last full sweep |
| User guide | 110 pages |
| Git history | 407 commits · July 2025 → October 2026 · 1.59 M lines added |
Lines of code by language
Vendored libraries (three.js, three-mesh-bvh), generated reports, NuGet packages and build output are excluded.
| Language | Lines | Files |
|---|---|---|
| C# | 410,594 | 1,622 |
| Python | 19,448 | 54 |
| JavaScript | 19,082 | 39 |
| PowerShell | 5,954 | 108 |
| HTML | 4,416 | 17 |
| CSS | 4,070 | 8 |
| AutoLISP | 2,529 | 3 |
| VBA | 309 | 2 |
| Total | 466,402 | 1,853 |
Not counted above: 43,809 lines of Markdown documentation (344 files) and 968,958 lines of JSON data (233 files: catalogs, material tables, fastener-pattern data and test fixtures).
Lines of code by module
| Module | Lines | Files | What it is |
|---|---|---|---|
| Api | 60,785 | 284 | JSON command API, MCP server and test harness |
| StripLayout | 47,789 | 114 | Strip layout, stations, punches and tool assembly |
| Core | 45,795 | 101 | Add-in host, ribbon, AI assistant, checklists, AutoCAD export |
| StandardParts | 32,446 | 122 | Purchased die component catalog and mounting |
| DesignChecks | 29,835 | 149 | 114 Handbook calculators |
| Bridge | 24,588 | 390 | Dev bridge and SOLIDWORKS automation scripts |
| ProgSim | 23,067 | 58 | Strip Analysis: nonlinear shell FEM forming simulation |
| VbaEditor | 22,471 | 73 | Clean-room VBA 7.1 editor, interpreter and .NET macro server |
| Flattening | 15,089 | 26 | Unbend-by-steps and overform |
| Blank | 14,280 | 47 | One-step inverse FEM blank development |
| WarRoom.Frontend | 13,540 | 17 | Shop-floor web app |
| DieAnalysis | 13,085 | 16 | Topology-based pierce feature detection (first-generation module) |
| RoundDraw | 12,941 | 46 | Axisymmetric deep-draw planner and simulator |
| DieAudit | 10,789 | 35 | Whole-die design-rule audit |
| Concepts | 9,401 | 28 | STEP → scored strip-layout concepts (Python/FreeCAD) |
| Mastercam | 9,085 | 55 | Mastercam 2027 NET-Hook for automatic hole and pocket ops |
| Detailing | 8,363 | 25 | STEP export, DWG prints, BOM, steel order |
| ShopStandards | 7,692 | 22 | Sourced hole standard and machining-class colors |
| DieDebugger | 7,186 | 26 | Press-stroke animation and collision sweep (web) |
| Deflection | 6,465 | 22 | Contact FEA of punches and form blocks |
| Tryout | 4,354 | 17 | Setup sheets, maintenance plans, tryout logs |
| DieCams | 4,144 | 15 | Cam designer |
| Nesting | 4,082 | 19 | No-fit-polygon nesting with genetic search |
| DesignHelp | 3,963 | 12 | BM25 search over Handbook topic cards |
| WarRoom.Api | 2,931 | 27 | ASP.NET (net9.0) shop-floor service |
| Revision | 2,768 | 8 | Die revision diffing |
| Linkage | 2,701 | 11 | Linkage part-ejector designer |
| DieProtection | 2,384 | 12 | Sensor and timing planner |
| Quote | 2,265 | 10 | Pre-CAD die cost and piece price model |
| 12 smaller modules + root files | 22,118 | 66 | War Room add-in integration, DevChat, Setup, CoreServices, Materials, Resources, … |
The problem
Progressive dies are designed in SOLIDWORKS with LogoPress, a commercial plug-in, plus a lot of designer judgment that lives in handbooks and senior designers' heads. Mursix Design Assistant started in July 2025 as a tips-and-checklists task pane for training new designers. It grew into a from-scratch toolchain that covers most of the die design process, adds its own simulation engines, and makes the whole thing scriptable and testable.
formed part ─► Blank / Unbending ─► Strip Layout ─► Strip Analysis (FEM)
│
▼
Standard Parts ◄── Tool Assembly ──► Die Audit · Die Debugger · Deflection
│
▼
Detailing (DWG, BOM) · Mastercam CAM · Revision · TryoutNumerical engines (the heavy math)
All solvers are built into a separate assembly with no SOLIDWORKS dependency, so they compile with full optimization and run in tests without CAD.
1. Strip Analysis: nonlinear shell FEM forming simulation
A station-by-station press simulation of a progressive strip: ram, pad, lifter and cam kinematics, cutting, implicit forming, and tool and press forces. It is written from the ground up and needs no external solver.
Element. A 3-node shell with 5 DOF per node (3 translations + 2 director rotations). The membrane is a CST on the Green–Lagrange strain of each increment, from the surface metric . Bending is the Discrete Kirchhoff Triangle (Batoz 1982). Integration uses 3 in-plane points × 5 Simpson points through the thickness. Internal forces are the exact variation. The tangent combines the exact material and geometric parts; it is non-symmetric, so the solver factors LDU.
Anisotropic plasticity. Plane-stress Hill 1948, built from Lankford coefficients:
Return mapping is closest-point projection (Simo–Taylor):
comes from a safeguarded Newton iteration with a bisection bracket. The algorithmically consistent tangent is
Hardening is isotropic (Swift, Hollomon or tabulated). Forming limits follow the Keeler–Brazier curve, .
Sparse direct solver. A supernodal multifrontal (or for non-symmetric values), written from scratch:
- Ordering: geometric nested dissection with weighted-median separators and a balance penalty, falling back to minimum degree at the leaves.
- Supervariables group each node's DOFs.
- Execution: a parallel task-graph schedule with SIMD kernels (
System.Numerics.Vector). - Stability check: counts negative pivots (Sylvester's law of inertia) to detect instability.
- Reproducibility: greedy element coloring keeps parallel assembly bit-identical from run to run.
Contact and friction.
- Rigid faceted tools sit in an AABB tree, with feature-preserving smoothed normals.
- Top and bottom skins are offset along the director.
- Normal contact is a C¹-smoothed penalty.
- Friction is Coulomb, capped at shear yield, with elastic-slip regularization.
- Edge-to-surface contact samples sharp tool edges every 0.25 t and spreads the force barycentrically onto the sheet. Rim contact handles cut sheet edges against tool walls.
Nonlinear solution. Adaptive implicit static increments: Newton with line search and cut-back, and a ram-step growth rule (×1.5 / ×1.2 / ×0.7). Contact freezes when Newton cycles, and steps are capped.
Mesh operations. Cuts split elements along the true outline, giving 0.07 mm edge error on a Ø6 pierce instead of 0.7 mm from deleting elements. Before each stroke, longest-edge bisection refines until every element is at most (a 22.5° arc rule).
Results
- Full 11-station production strip (1.25 mm mesh): forms end to end in 3,459 s. The previous contact model failed at station 8.
- Station 2 thins 13.6 %.
- The ironed extrusion at station 7 reaches 0.715 mm minimum thickness at .
- Bottom-dead-center form forces are 58.6 kN upper and 108.2 kN lower.
- Performance work:
- Parallel closest-point search cut contact time from 108 s to 40 s.
- The ram-step rule cut station-2 Newton iterations from 1,290 to 442.
- Edge-contact cost dropped 38 % (112.8 s → 70.0 s) with bit-identical results.
- Factoring 57.7k DOF takes about 145 ms.
- Verification: 30/30 element checks (patch test, tangent consistency, Hill-48, cantilever, and a moment rolling a strip into a full circle) and 57/57 forming checks (U-channel draw, hole flange, wrap over an edge, and others).
- Cutting force by shearing length: on a 13-station strip, charging only the outline that actually shears metal changed the estimate from 397 to 205 US tons, with a staggered peak of 128 tons.
2. Blank development: one-step inverse FEM
Develops the flat blank of a formed or drawn part and maps strain, thinning and stress against the material. Results are benchmarked against LogoPress, and it adds capabilities LogoPress lacks.
- Kinematics: , , principal stretches , thickness ratio , Hencky strains.
- Constitutive law: deformation theory, , with a secant modulus .
- Solver: damped Newton–Raphson with line search and a triangle-flip guard, plus a Levenberg–Marquardt fallback. Linear solves use banded LU after reverse Cuthill–McKee ordering, falling back to ILU(0)-BiCGSTAB and then GMRES.
- Initial guess: a mesh parameterization cascade, ABF++ → ABF → LSCM, with an ARAP correction when distortion is high.
- Remeshing: isotropic, at target edge length .
- Beyond LogoPress: normal and planar anisotropy ( with a rolling direction). On a cup with , thinning drops from 4.87 % to 4.23 %. With the blank shows the expected earing pattern.
Result: on the reference part, blank area lands within 0.3 % and perimeter within 0.5 % of LogoPress (6,756–6,798 mm² vs 6,771.65 mm²). The spread across mesh densities is 0.06 %. Also ships as a .NET 8 command-line tool.
3. Deflection: contact FEA of punches and form blocks
Computes how far a punch or form block deflects under load, through its whole load path to the die shoe. It reports pass/warn/fail against sourced limits and shows which heel, key, screw or dowel carries the side load.
- Elements: quadratic tet10 with 4-point Gauss integration. Meshing is by gmsh.
- Contact: node-to-face penalty, compression-only active set, with stick/slip decided per joint.
- Screws: preload springs plus a Timoshenko lateral spring:
- Contact updates without refactoring: when the contact set changes, exact low-rank Woodbury updates are applied to the existing factorization whenever that is cheaper than about 70 % of a refactor.
Validation:
| Case | Error vs theory |
|---|---|
| Cantilever () | −0.75 % |
| Simply supported beam | −0.56 % |
| Block on backup () | +0.5 % |
| Guided punch (propped cantilever) | +0.75 % |
| 15° wedge | side load exactly |
On a 366,291-DOF production die, body-aware ordering cut factor fill from 795 M to 566 M entries and work from to flops.
4. Draw Designer: axisymmetric deep drawing
Plans the draw sequence of a round cup (number of draws, diameters, radii, clearances, ironing passes, press loads) and then simulates it.
- Blank: , with taken from an exact Pappus volume of the solid's section.
- Critical draw load: , where .
- Ironing: height and force , with equal strain per pass.
- Simulation: incremental axisymmetric membrane FE with Hill-48 normal anisotropy, Swift hardening, return mapping, zoned Coulomb friction, and Newton with backtracking.
- Optimizer: pushes reduction ratios until each draw sits under 90 % of its split load, then tightens the sequence to save draws.
5. Unbending and overform
Sheet-metal unbend-by-steps for strip stations, as a parametric feature.
- Developed length: . Overform keeps , so the radius tightens: .
- K-factor: a constant, DIN 6935 (, ), or SOLIDWORKS/LogoPress bend tables. Tables are read by a standalone .xls (BIFF8) and .xlsx parser with no Office dependency.
- Conical bends: unrolled with the exact cone isometry , with −0.041 % volume error.
6. Nesting
Part nesting for strip layouts, benchmarked against LogoPress.
- Placement: no-fit polygons from Clipper2 Minkowski sums at 1 µm resolution, with a bottom-left tie-break.
- Search: a genetic algorithm over part order and rotation, with order-preserving crossover.
- Geometry: Douglas–Peucker simplification and minimum-area bounding boxes from hull edges.
Result: 44–50 % material loss on the 13-body reference sample over 10 seeds, against about 45 % in the LogoPress tutorial.
7. Die Debugger: kinematics and collision
Animates a full tool assembly through one press stroke in the browser.
- Ram motion: the crank-slider law . Strippers and lifters move as spring-loaded floating stacks.
- Collision sweep: one SAH-built bounding volume hierarchy per part. Broad phase on AABBs and Z range, then sampling along relative travel with golden-section refinement of minimum clearances.
- Classification: a rule table sorts every contact as crash, clearance, intended, seat or spring.
- Scale: a 503-part production die (1.13 M triangles) under a 600k-triangle budget. It can also email the die as an animated AR (USDZ) model, shrunk from 36 MB to 14 MB.
8. Smaller solvers and engineering models
- Cam Designer:
- Retraction .
- Ram force , where . A non-positive denominator is reported as a friction jam.
- 16 checks, e.g. driver angle 20–40°, return springs ≥ 1.25 × stripping force.
- Linkage Designer: knee joints by circle–circle intersection and travel by bracketed bisection. It matched the built SOLIDWORKS mechanism exactly: 0.9257 in and 2.3000 in of pusher travel for 1 in and 2 in of ram.
- Die Audit:
- Press tonnage through the stroke at constant crank torque, .
- A snap-through reverse-load bound.
- Shaped-punch clearance from outlines sampled every 0.25 mm.
- Spring resonance from .
- Strip sizing: pitch , width , utilization , with a 360° sweep in 0.5° steps.
- Draw blanks: grown by a raster distance field until area × t equals part volume, so the outline cannot fold over itself.
- Punch stepping: groups punches into stepped lengths so cutting forces peak at different times.
- Fastener clamp force: VDI 2230 (±25 %).
- Spring sizing: compression bands and DADCO force-curve interpolation.
- Handbook search: field-weighted BM25 (, ) over 195 topic cards and 631 figure crops, with concept expansion and phrase bonuses.
Die design automation
- Strip Layout: detects bends from the carrier face, develops the blank, sizes the strip, schedules bend angles per station, and builds the strip assembly, punches and die.
- Rebuilt a 13-station, 10-punch strip and matched it against the LogoPress-built original.
- Builds mirrored (left/right-hand) versions of a complete die, including re-placing its standard parts.
- Tool Assembly: builds the die set from a template.
- Sizes the chase to the tools plus 1.75 in per end.
- Fits station punches to the closed backup.
- Adds die, pad and stripper inserts.
- Lets lifters give way to inserts.
- A full production die builds unattended in 10–25 minutes.
- Standard Parts: turns a vendor order code into a solid and a solid back into a code.
- 24 component families: 22 Dayton catalog pages transcribed, 33 DADCO models with 339 strokes, 380 Raymond rows, Danly die-set selection by shut height, and ASME/ISO fasteners.
- A 30,000-punch offline sweep checks every dimension callout.
- Mounts parts through the plate stack with shop-standard holes.
- Suggests fastener patterns learned from past designs.
- Design Checks: 114 calculators (bending 20, cutting 15, die components 20, drawing 18, press 20, springs 21). Each one fills from the SOLIDWORKS selection, cites its Handbook page, and is fuzz-tested with 400 random inputs.
- Die Audit: one pass/warn/fail scorecard for a whole die. It combines 28 calculators fed from the model with assembly rules (slug paths, dowels, screws, spring and lifter travel, pilot lead, heel engagement), and every finding cites its source. 376 offline checks pass.
- Shop Standards: an editable, sourced hole standard that cuts Hole Wizard holes and colors faces by machining class. The colors survive SLDPRT, Parasolid and STEP import into Mastercam.
- Materials: ~1,000 sourced materials compiled to a
.sldmatand installed at startup. Random-sample audits against the sources caught and fixed 94 stainless values that had been entered in the wrong unit. - Detailing: exports manufactured parts to STEP plus metadata and drives an external drawing generator for company DWG prints, BOM, steel order and hole tables. An 87-part die exports and draws in about 6 minutes, or about 1 minute when nothing changed.
- Revision: diffs die revisions by persistent component reference into about 20 shop-meaningful change classes (e.g.
hole_moved,purchased_swap), with unit-aware tolerances. Reports go out as JSON, HTML and XLSX. - Die Protection, Tryout, Quote: sensor and timing plans, setup sheets, maintenance plans and tryout logs, and a pre-CAD cost model (material, scrap credit, press rate, die build hours).
- Strip Concepts (Python/FreeCAD): STEP → part graph → four scored strip layouts → designer review page → the plan SOLIDWORKS builds.
Platform and integrations
- Add-in host: a COM add-in with 66 ribbon commands. Heavy results open as local web pages served by the add-in. Document state persists in custom properties and sidecar files keyed by persistent reference, never by absolute path.
- JSON API: a single
Api(json)entry point with 67 features and 404 operations. Features self-register through attributes, so adding one needs no project edit. - MCP server: lets AI agents drive SOLIDWORKS.
- Transport: Streamable HTTP / JSON-RPC on localhost with a bearer token.
- 6 tools, 13 resources and 8 workflow prompts.
- Three-layer enforcement of model edits: the agent must choose the modify tool, the policy file must allow it, and the router checks again on its own. Every call is written to an audit log.
- In-SOLIDWORKS AI assistant: a per-document chat whose tools are generated from the API description.
- Runs on Claude, or on a local 31B model through an OpenAI-compatible server.
- "Progressive feature activation" loads features one at a time to fit a 64k context window.
- Read-only by default.
- VBA Editor: a clean-room replacement for SOLIDWORKS's VBA 7.1 editor.
- Parses 777 of 779 real macros.
- Runtime with 275 VBA functions; runs 1,000,000 loop iterations in about 1 s.
- Reads and writes
.swpfiles, with UserForms and a debugger that contains crashes instead of taking SOLIDWORKS down. - C#/VB.NET macros compile through Roslyn in a separate process.
- Mastercam 2027 NET-Hook: reads a CAM manifest exported from SOLIDWORKS and creates hole and pocket operations (15 of 15 hole ops created live). A hot-reload bridge loads each build into a collectible
AssemblyLoadContext, so Mastercam never needs a restart. - AutoCAD export: batch-exports every drawing to a master DWG through AutoCAD COM automation, with templates, XREFs and AutoLISP block renaming (6,688 lines of C# + 2,529 of LISP).
- War Room: an ASP.NET (net9.0) shop-floor service with a web front end and GLB 3D export. Checklists sync from the add-in with Microsoft sign-in and an offline outbox.
- Installer: versioned installs with rollback and a machine-wide ceiling on what AI agents may do.
Testing and engineering process
41 offline suites, run by one script that writes dated result pages, with a nightly runner. Examples:
Suite Result MCP server 27/27 API transactions 20/20 Snapshots 54/54 Design-verb planners 197 checks Die Debugger 105/105 Cam Designer 27/27 Tool Assembly engines 197 checks Die Audit 376 checks FEM elements 30/30 Forming 57/57 VBA runtime 45/45 889 live cases run against a real SOLIDWORKS session. The last full sweep passed 762 of 806 (94.5 %).
Agent evaluations: a Python harness drives an LLM against the live MCP server with 39 hand-written tasks plus generated ones, and exports trajectories for fine-tuning. A local 31B model scored 22/23 on the core set.
Dev bridge: compiles and runs C# scripts inside SOLIDWORKS on its UI thread, with a job queue, a dialog guard and a crash watchdog that relaunches SOLIDWORKS and reopens documents. This is what makes unattended live testing possible.
Benchmarking: the in-house engines are measured against LogoPress output on the same parts, with every comparison marked as matched, explained or still open.
AI-assisted development: built with a multi-agent workflow (Claude Code as lead, Codex workers on scoped tasks, coordination files for the one shared SOLIDWORKS instance). A living self-audit tracks each module's maturity and known bugs.
Honest status
- Production-ready: Strip Layout, Standard Parts, Design Checks, Die Audit, Die Debugger, Blank, Deflection, Nesting, VBA Editor and the API/MCP layer are working and tested.
- Strip Analysis: forms complete production strips. Through-thickness squeeze, in-stroke remeshing and springback display are still open.
- Prototypes: Mastercam CAM and Strip Concepts.
- Rates to be confirmed: Quote and some Die Protection values wait on shop-confirmed numbers.
- Legacy: the first-generation modules from 2025 (Live Tips, Validate Design, DieAnalysis) are kept but superseded.