Metadata-Version: 2.4
Name: steelbeam
Version: 0.1.0
Summary: Lightweight Python library for structural steel beam design
Author-email: Rocco Raimo <software@ingraimo.simplelogin.com>
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Classifier: License :: OSI Approved :: MIT License
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: handcalcs>=1.11.0
Requires-Dist: pint>=0.25.3
Project-URL: Home, https://github.com/RoccoRaimo/steelbeam
Project-URL: Issues, https://github.com/RoccoRaimo/steelbeam/issues

# steelbeam

A lightweight Python library for structural steel beam design and verification, with native LaTeX formula rendering and multi-code support (Eurocode, AISC, NBR).

> 💡 **Coming soon**: Desktop application for non-interactive usage — works side-by-side with Jupyter notebooks! 


## Installation

> ⚠️ **Work in progress** — package not yet on PyPI

```bash
# Clone and install locally
git clone https://github.com/yourusername/steelbeam.git
cd steelbeam
pip install -e .
```

Or install directly from GitHub:
```bash
pip install git+https://github.com/yourusername/steelbeam.git
```

You can import with:

```python
import steelbeam as sb
```

## Why steelbeam?

- **Code-agnostic**: Switch between Eurocode, AISC, and NBR with a single parameter
- **Transparent calculations**: Every formula is rendered in LaTeX — no black boxes
- **Jupyter-native**: Designed for interactive exploration in notebooks
- **Multi-definition of geometry**: Pre-defined databases or user definition (manual values or using sectionproperties library)
- **Desktop app coming**: Soon you'll be able to run calculations from a standalone executable without writing code

## How it works

After importing the library, you must create an object representing the steel beam. 
You can select an existing standard profile from the provided databases (currently only European and American) or define a new profile with custom characteristics (manual entries or using the sectionproperties library's definition).

*Example with provided database*
![How it works](docs/images/image1.gif)

***

*Example manual entries*

***

*Example with import dxf using sectionproperties library*

## Docs

You can use the following documentation for initial understanding of library's capabilities:

[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/RoccoRaimo/steelbeam)

## List of features

- Definition of geometry with **predefined databases** (European or American)
- Definition of geometry with **dxf import** (using sectionproperties library for FEM calculation of section properties)
- List of functions already implemented for national codes design formulas:
	- **Eurocodes**
		- Normal force tension resistance :heavy_check_mark:
		- Normal force compression resistance :heavy_check_mark:
		- Bending moment resistance for both axis of profile :heavy_check_mark:
		- Shear resistance for both axis of profile :heavy_check_mark:
		- Combined bending and axial force resistance :heavy_check_mark:
		- Combined bending and shear force resistance :x:
		- Torsion :x:
		- Euler buckling :heavy_check_mark:
		- Compression member buckling :heavy_check_mark:
		- Bending with Lateral-Torsional buckling :heavy_check_mark:
	- **AISC/AASHTO** (work in progress)
	- **NBR** (work in progress)
- Configurable **partial safety factors**
- All resistance functions support both calculation mode and **rendered output mode** using the handcalcs library
- Possibility to use **unit-aware** or **dimensionless** quantities using the pint library
  
## Dependencies

- `numpy` — numerical computations
- `handcalcs` — LaTeX formula rendering
- `pint` — unit handling
- `sectionproperties` (optional) — geometry section properties

## Desktop Application (Coming Soon)

While `steelbeam` is designed for interactive use in Jupyter notebooks, I'm about to build also a **standalone desktop application** that lets you perform the same calculations without writing code.

- Point-and-click interface
- Export reports in PDF/LaTeX
- Works offline — no Jupyter required

> Stay tuned for the first beta release!

