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
.rawescape 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
EtabsApiErrorinstead 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,cPropLinkwith 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
cLinkObjsetter 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.