Download examples
You can download the examples in your chosen format using the buttons on the right.
Create a Custom Rectangular Reinforced Cross-section¶
This example demonstrates how to create a custom rectangular reinforced concrete cross-section with advanced reinforcement configurations using blueprints.
We'll build upon the basic rectangular cross-section by adding multiple reinforcement layers, custom geometric reinforcement patterns, advanced stirrup configurations, and precise rebar placement.
Let's begin with the setup.
Import Required Libraries¶
First, let's import the necessary modules, including advanced configuration classes:
"""Custom rectangular reinforced cross-section example."""
from shapely import LineString, Polygon
from blueprints.materials.concrete import ConcreteMaterial, ConcreteStrengthClass
from blueprints.materials.reinforcement_steel import ReinforcementSteelMaterial, ReinforcementSteelQuality
from blueprints.structural_sections.concrete.covers import CoversRectangular
from blueprints.structural_sections.concrete.rebar import Rebar
from blueprints.structural_sections.concrete.reinforced_concrete_sections.rectangular import RectangularReinforcedCrossSection
from blueprints.structural_sections.concrete.reinforced_concrete_sections.reinforcement_configurations import (
ReinforcementByDistance,
ReinforcementByQuantity,
)
from blueprints.structural_sections.concrete.stirrups import StirrupConfiguration
Define Materials¶
Let's define the concrete and reinforcement steel materials:
# Define a concrete material
concrete = ConcreteMaterial(concrete_class=ConcreteStrengthClass.C30_37)
# Define a reinforcement steel material
steel = ReinforcementSteelMaterial(steel_quality=ReinforcementSteelQuality.B500B)
Create the Basic Rectangular Cross-section¶
Let's start with a rectangular cross-section with custom covers:
# Define a rectangular reinforced cross-section
cs = RectangularReinforcedCrossSection(
width=600,
height=500,
covers=CoversRectangular(upper=45, right=30, lower=35, left=50),
concrete_material=concrete,
)
Add First Layer of Upper Reinforcement¶
Start with standard reinforcement along the upper edge:
# Add reinforcement to the upper edge (first layer)
cs.add_longitudinal_reinforcement_by_quantity(
n=5,
diameter=14,
edge="upper",
material=steel,
)
Add Second Layer of Upper Reinforcement¶
Now add a second layer with custom cover distance - this shows how to create multiple reinforcement layers:
# Add a second layer of reinforcement to the upper edge
cs.add_longitudinal_reinforcement_by_quantity(
n=3,
diameter=16,
edge="upper",
material=steel,
cover=100, # Custom cover distance for second layer
)
Add Custom Diagonal Reinforcement - By Quantity¶
Add reinforcement along a custom diagonal line using geometric positioning:
# Add reinforcement configuration along a diagonal line (by quantity)
cs.add_reinforcement_configuration(
line=LineString([(50, -100), (150, 50)]),
configuration=ReinforcementByQuantity(diameter=20, n=3, material=steel),
)
Add Custom Diagonal Reinforcement - By Distance¶
Add another diagonal reinforcement line, but this time using spacing-based configuration:
# Add reinforcement configuration along another diagonal line (by distance)
cs.add_reinforcement_configuration(
line=LineString([(0, -180), (-250, 0)]),
configuration=ReinforcementByDistance(diameter=12, center_to_center=40, material=steel),
)
Add Custom Stirrup Configuration¶
Create a custom stirrup using polygon geometry instead of standard edge-based stirrups:
# Add custom stirrup configuration using polygon geometry
cs.add_stirrup_configuration(
stirrup=StirrupConfiguration(
geometry=Polygon([(-200, -200), (-200, 200), (200, 200), (200, -200)]),
diameter=8,
distance=150,
material=steel,
),
)
Stirrup (id=1)|⌀8/B500B
Add Center Point Rebar¶
Finally, add a single rebar at the center of the cross-section:
# Add a longitudinal rebar at the center
cs.add_longitudinal_rebar(
rebar=Rebar(
diameter=12,
x=0,
y=0,
material=steel,
)
)
Rebar(horizontal_offset=0.0, vertical_offset=0.0, rotation=0.0, diameter=12, x=0, y=0, name='Rebar', material=ReinforcementSteelMaterial(steel_quality=<ReinforcementSteelQuality.B500B: 'B500B'>, density=7850.0, reinforcement_type=<ReinforcementType.BARS: 'Bars'>, bar_surface=<ReinforcementBarSurface.RIBBED: 'Ribbed'>, steel_fabrication=<SteelFabrication.HOT_ROLLED: 'Hot-rolled'>, diagram_type=<ReinforcementDiagramType.BILINEAR_NOT_INCLINED: 'Bi-linear with horizontal branch'>, material_factor=1.15, custom_name=None, custom_e_s=None), relative_start_position=0.0, relative_end_position=1.0)
Review Our Custom Design¶
At this point, our custom rectangular cross-section includes:
- ✅ A 600×500mm rectangular concrete cross-section (C30/37)
- ✅ Double-layer upper reinforcement:
- First layer: 5 bars × 14mm diameter
- Second layer: 3 bars × 16mm diameter (custom cover)
- ✅ Custom diagonal reinforcement patterns:
- Line 1: 3 bars × 20mm diameter (quantity-based)
- Line 2: 12mm diameter bars spaced 40mm center-to-center (distance-based)
- ✅ Custom polygon stirrup (8mm diameter, 150mm spacing)
- ✅ Center point rebar (12mm diameter at origin)
This demonstrates the flexibility available for custom reinforcement configurations.
Visualize the Cross-section¶
Let's plot the cross-section to see the complete design:
# Plot the cross-section
import matplotlib.pyplot as plt
fig = cs.plot(show=False) # Create the plot but don't show it yet
plt.show()
Summary¶
This example demonstrated advanced customization capabilities for rectangular cross-sections:
- Advanced Imports: Shapely geometry, custom reinforcement configurations, and stirrup classes
- Multi-layer Reinforcement: Different reinforcement layers with custom cover distances
- Geometric Reinforcement: Custom lines using LineString for diagonal patterns
- Configuration Types:
ReinforcementByQuantity: Specify exact number of barsReinforcementByDistance: Specify center-to-center spacing of bars
- Custom Stirrups: Polygon-based stirrup geometry instead of edge-following
- Precise Placement: Individual rebar placement at exact coordinates
Key Features:¶
- Multiple reinforcement layers at different depths
- Arbitrary geometric reinforcement paths using Shapely
- Mixed configuration strategies (quantity vs. distance based)
- Custom stirrup geometries beyond standard rectangular shapes
- Point-precise rebar placement for special requirements
Blueprints provides flexibility for creating custom reinforcement patterns beyond standard configurations.