Skip to content

Cross‐section

Tianhao Fu edited this page Nov 24, 2025 · 3 revisions

Centroid of a Cross-section

from bridger import *

cross_section = CIV102Beam()
print(cross_section.centroid())  # (49.99999999999999, 41.43109435192319)

First Moment of Area

from bridger import *

cross_section = CIV102Beam()
print(cross_section.q(cross_section.centroid()[1]))  # 6193.283330576374
print(cross_section.q_max())  # 6193.283330576374

Complex Cross-sections

To construct a cross-section consisting of multiple basic cross-sections, you need to know the x and y offsets of each component. We use the common sign convention that the origin of each relative coordinate system is in the bottom-left corner.

Hollow Square HSS 305x305x13

A hollow square can be divided into four nonoverlapping rectangles.

from bridger import *

cross_section = ComplexCrossSection([
    (RectangularCrossSection(305, 12.7), 0, 0), 
    (RectangularCrossSection(12.7, 279.6), 0, 12.7),
    (RectangularCrossSection(12.7, 279.6), 292.3, 12.7),
    (RectangularCrossSection(305, 12.7), 0, 292.3)
])
print(cross_section.moment_of_inertia() * 1e-6)  # 211.84488605453336

In fact, we provide a shortcut for hollow rectangular cross-sections.

from bridger import *

cross_section = HollowBeam(305, 305, 12.7)
print(cross_section.moment_of_inertia() * 1e-6)  # 211.84488605453336

I-beam W920x446

from bridger import *

cross_section = ComplexCrossSection([
    (RectangularCrossSection(423, 43), 0, 0),
    (RectangularCrossSection(24, 847), 199.5, 43),
    (RectangularCrossSection(423, 43), 0, 890)
])
print(cross_section.moment_of_inertia() * 1e-6)  # 8424.6495395

This gives you I-beam W920x446, which is equivalent to:

from bridger import *

cross_section = IBeam(933, 423, 43, 24)
print(cross_section.moment_of_inertia() * 1e-6)  # 8424.6495395

Visualization

from bridger import *

cross_section = IBeam(933, 423, 43, 24)
cross_section.visualize()

visualization

Please let us know your questions through Issues.

Clone this wiki locally