OpenStaad
[!WARNING] The class-based API is deprecated. The standalone classes (
Root(),Geometry(),Load(),Output(),Properties(),View(),Design(),Command(),Support()) are deprecated in the0.0.xreleases and will be removed in0.1.0. Instantiating any of them now emits aFutureWarning. Use the new single-import session API instead:from openstaad import ops→ops.connect(). See Migration below, or the full migration guide.
Abstract
openstaad python is a starting project to wrap the official OpenStaad API functionalities into a Python package.
It aims to facilitate the connection between StaadPRO and Python, avoiding boilerplate code and type management, allowing the user to focus on the real automation tasks.
Quick Info
openstaadis a Python package to call easily functions from the OpenStaad API.- Require a StaadPRO and a valid file open to connect
- MIT-License
- The intended audience is StaadPro users with knowledge of Python
- Compatibitity:
- Tested with Python 3.10.9
- Operating System: Windows 11
- Dependencies:
Installation
Basic installation by pip.
pip install openstaad
A simple example
For the next example, a valid STAAD.Pro file should be open.
from openstaad import ops
# Connect to the running STAAD.Pro session (a valid .STD file must be open)
s = ops.connect()
# Function that returns a list
beam_list = s.GetBeamList()
# Function that returns a string
file_name = s.GetSTAADFile()
# Function that receives an argument
beam_number = 10
beam_nodes = s.GetMemberIncidence(beam_number)
print(beam_list)
print(file_name)
print(beam_nodes)
Migration
The class-based API is deprecated and will be removed in 0.1.0. Migrating is almost entirely
mechanical: method names stay the same — you just consolidate the per-domain instances
(Geometry(), Root(), …) into a single session object returned by ops.connect() and route
every call through it.
# Legacy (deprecated)
from openstaad import Geometry, Root
geometry = Geometry()
root = Root()
beams = geometry.GetBeamList()
# New
from openstaad import ops
s = ops.connect()
beams = s.GetBeamList()
A few methods need manual attention:
Renamed
GetElementGlobalOffset→GetElementGlobalOffSetGetElementOffsetSpec→GetElementOffSetSpecAddResponseSpectrumLoadEx→AddResponseSpectrumLoad(signature also changes:data_pairsmoves to the last argument)
Removed
IsRelease()— no direct replacement; callGetMemberReleaseSpecEx()and evaluate the result yourself.
Same name, different result (behavior changes)
- Coordinates and lengths are no longer rounded to 3 decimals — full precision is returned.
GetApplicationVersionno longer includes the"Version "prefix.GetAnalysisStatusdict key"CPUTime(sec)"is now"CPUTime".NewSTAADFileno longer creates subfolders and now requires three arguments.SaveModelparameter changed fromsilent: inttosaveSilent: bool.
Full guide: https://www.openstaad.com/docs/migration_guide.
Website
Contribution
The source code of openstaad can be found at GitHub, target your pull requests to the main branch:
https://github.com/OpenStaad/OpenStaadPython/pulls
Feedback
Questions and feedback at GitHub Discussions: https://github.com/OpenStaad/OpenStaadPython/discussions
Issue tracker at GitHub: https://github.com/OpenStaad/OpenStaadPython/issues
Contact
Please always post questions at the forum to make answers available to other users as well.
Feedback is greatly appreciated.
Konrad
Metadata
Release files for openstaad 0.0.15
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| openstaad-0.0.15.tar.gz | 70.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| openstaad-0.0.15-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 144.4 kB
Release files / openstaad-0.0.15.tar.gz
| Download URL | openstaad-0.0.15.tar.gz |
|---|---|
| Size | 70.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e2568428cb14fcdc7901c73de06b7e226e7ec3279c28425e6bb727001fac201c
|
|
BLAKE2b-256 checksum How to use checksums |
1f756c8952dd54cf95b2f0f0ffb6550267480c52aa1f02cc87b206cc74879219
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 1, 2026.
Transparency logRelease files / openstaad-0.0.15-py3-none-any.whl
| Download URL | openstaad-0.0.15-py3-none-any.whl |
|---|---|
| Size | 74.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
79329780090be82f5d2a523f326b70cc7f2e9cbb9f947a45ba7d955685e33cab
|
|
BLAKE2b-256 checksum How to use checksums |
c98162843e8bd032e5d5e726ec4d6b9d8bba0e96cfdbd208bbdff1de26138b80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 1, 2026.
Transparency log