The CSI ETABS API is powerful and almost unusable directly from Python. Every call requires constructing placeholder out-parameters, unpacking them by index, checking a return code, and coercing CLR enums by hand. aktabs wraps all of that away so structural engineers can script model generation instead of clicking through a GUI.


My Role

Sole developer. Open source under MPL-2.0, published for the broader AEC and ETABS community.

What I Built

One-to-one interface mirroring

  • Same PascalCase names and call chains as the native API, so CSI documentation still applies
  • Auto-discovery of the newest installed ETABS version
  • Context manager (with aktabs.connect() as etabs:) for safe session lifecycle management
  • A .raw escape hatch giving full pythonnet pass-through on any interface

Automatic out-parameter elision

  • Wrapped methods drop the COM/CLR placeholder out-parameters and return values directly as Python return values
  • A non-zero return code raises EtabsApiError instead of silently succeeding

Enum flexibility

  • Accepts CSI enum members or raw integers, with automatic CLR coercion

Coverage

  • 600 of roughly 1300 methods wrapped, across 25 of 110 ETABSv1 interfaces
  • Full read/write coverage on object interfaces (cFrameObj, cAreaObj, cPointObj, cLinkObj), property interfaces (cPropMaterial, cPropFrame, cPropArea, cPropTendon, cPropLink with nine link types end to end), analysis elements (cAreaElm, cLineElm), and load, story, combo, grid, general displacement, group, function, and select surfaces
  • Behavioural quirks identified and regression-pinned - for example, the cLinkObj setter family silently no-ops on unknown link names

Why It Matters

Once the API is scriptable, ETABS models stop being hand-built artifacts. Geometry can be generated from a spreadsheet or a Revit export, load cases can be templated across projects, and model updates become reproducible rather than a manual redraw. Paired with the Revit-to-ETABS Dynamo pipeline handling upstream geometry extraction, this closes a full BIM-to-analysis scripting path.

Technical Stack

Python, pythonnet CLR bridge, CSI ETABS v21 COM/.NET API, full pytest suite with unit and integration coverage, and documentation covering architecture, wrapper conventions, API reference, and architecture decision records. Windows-only by virtue of the COM dependency.