Skip to main content

Python wrapper for SAP2000 via comtypes COM automation

Project description

PySap2000

Python wrapper for SAP2000. It uses comtypes to call the COM API and exposes a Pythonic interface for working with SAP2000 models.

Requirements

  • Windows (SAP2000 COM is Windows-only)
  • Python 3.7+
  • SAP2000 v20 or later (v24+ recommended)

Installation

pip install pysap2000

Optional extras:

# Agent-oriented extras
pip install pysap2000[agent]

# Visualization extras
pip install pysap2000[vis]

# Development extras
pip install pysap2000[dev]

# Everything
pip install pysap2000[all]

Quick start

Start SAP2000 and open a model file before running the example.

from PySap2000 import Application
from PySap2000.structure_core import Point, Frame
from PySap2000.global_parameters import Units, UnitSystem

# Attach to a running SAP2000 instance
with Application() as app:
    # Set units
    Units.set_present_units(app.model, UnitSystem.KN_M_C)

    # Create joints
    app.create_object(Point(no=1, x=0, y=0, z=0))
    app.create_object(Point(no=2, x=10, y=0, z=0))

    # Create frame
    app.create_object(Frame(no=1, start_point=1, end_point=2, section="W14X30"))

    # Run analysis
    app.calculate()

Core packages

Package Purpose
structure_core Core objects: Point, Frame, Area, Cable, Link, Material
point Joint properties: restraints, constraints, springs, mass, local axes
frame Frame properties: section, releases, modifiers, local axes
area Area properties: thickness, meshing, offsets, springs
cable Cable properties: section, modifiers, output stations
link Link properties: section, local axes
section Section definitions: frame, area, cable, link
loading Load patterns, load cases, combinations, mass source
loads Applied loads: joint, frame, area, cable
results Results: displacements, forces, reactions, stresses
analyze Analysis control: run analysis, solver options
design Design: steel design, design codes
constraints Constraints: rigid links, equal DOF
database_tables Interactive tables: read, edit, import/export
global_parameters Globals: units, model settings, project info
group Groups
selection Selection
statistics Steel usage statistics

More examples

Restraints and loads

from PySap2000.point import set_point_restraint
from PySap2000.loads import PointLoad

# Fixed support
set_point_restraint(app.model, "1", [True]*6)

# Joint load
app.create_object(PointLoad(
    load_pattern="DEAD",
    points=["2"],
    fz=-10.0
))

Retrieve results

from PySap2000.results import PointResults, FrameResults

# Joint displacement
point_results = PointResults(app.model)
disp = point_results.get_displacement("2", load_case="DEAD")
print(f"Vertical displacement: {disp.uz}")

# Frame forces
frame_results = FrameResults(app.model)
forces = frame_results.get_forces("1", load_case="DEAD")

Steel design

from PySap2000.design import set_steel_code, start_steel_design, get_steel_summary_results, SteelDesignCode

set_steel_code(app.model, SteelDesignCode.CHINESE_2010)
start_steel_design(app.model)
results = get_steel_summary_results(app.model, "ALL", ItemType.GROUP)

Interactive tables

from PySap2000.database_tables import DatabaseTables

# Read a table
data = DatabaseTables.get_table_for_display(app.model, "Joint Coordinates")
for row in data.to_dict_list():
    print(row)

# Edit a table
result = DatabaseTables.edit_table(app.model, "Joint Coordinates", {
    0: {"XorR": "100"}
})

Configuration

from PySap2000.config import config

# Strict mode: raise on COM failures
config.strict_mode = True

# Logging
from PySap2000.logger import setup_logger
setup_logger(level="DEBUG", log_file="pysap2000.log")

Environment variables:

set PYSAP_STRICT_MODE=true
set PYSAP_LOG_LEVEL=DEBUG

License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pysap2000-2.0.17.tar.gz (218.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pysap2000-2.0.17-py3-none-any.whl (295.4 kB view details)

Uploaded Python 3

File details

Details for the file pysap2000-2.0.17.tar.gz.

File metadata

  • Download URL: pysap2000-2.0.17.tar.gz
  • Upload date:
  • Size: 218.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.9

File hashes

Hashes for pysap2000-2.0.17.tar.gz
Algorithm Hash digest
SHA256 00ac712d81ca2170441bcc356792accc4d9846e8b76b34deafac2a57759aa2c6
MD5 819342d6b1d9238da4d6887c177042df
BLAKE2b-256 4481c8f1cb81c94792106a34217cd493ba0bde311d28109d1f123ccb72c3b650

See more details on using hashes here.

File details

Details for the file pysap2000-2.0.17-py3-none-any.whl.

File metadata

  • Download URL: pysap2000-2.0.17-py3-none-any.whl
  • Upload date:
  • Size: 295.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.9

File hashes

Hashes for pysap2000-2.0.17-py3-none-any.whl
Algorithm Hash digest
SHA256 cee5d0d1421717d0c78cb6d9d33b810994a2bbecc84d7b588cdbe21bd32a5fce
MD5 8965d0b70f34abaf57609eeb39c35ee8
BLAKE2b-256 cf42bce592c8ce7a98ce4964d50a7f625c68e7421fd945b40c74de14aa68dd55

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page