Eriksson Beam API
Search Results for

    Show / Hide Table of Contents

    ConcreteExtents

    ConcreteExtents defines the concrete cross-section geometry. It's a polymorphic base class with specific section types as derived classes.

    Supported Section Types

    Type Description
    TBeam T-shaped beam
    IBeam I-shaped beam
    LBeam L-shaped ledger beam
    Rectangular Solid rectangular section
    InvertedTBeam Inverted T-beam
    BulbTBeam Bulb-T beam
    HollowCore Hollow core plank
    MetroDeck Metro deck section
    TSlab T-slab section
    Riser Stair riser section
    Polygonal Custom polygonal shape (NOT supported by API)

    Note: Polygonal sections are not currently supported by the API.

    Working with Section Types

    Type Checking

    Use pattern matching to handle different section types:

    var design = await client.PullBeamDesignerAsync();
    
    switch (design.ConcreteExtents)
    {
        case TBeam tBeam:
            Console.WriteLine($"T-Beam: {tBeam.Length}\" long, {tBeam.Height}\" tall");
            break;
    
        case IBeam iBeam:
            Console.WriteLine($"I-Beam: {iBeam.Length}\" long");
            break;
    
        case LBeam lBeam:
            Console.WriteLine($"L-Beam (Ledger): {lBeam.Length}\" long");
            break;
    
        case Rectangular rect:
            Console.WriteLine($"Rectangular: {rect.Length}\" x {rect.Width}\" x {rect.Height}\"");
            break;
    
        case HollowCore hollowCore:
            Console.WriteLine($"Hollow Core: {hollowCore.Length}\" long");
            break;
    
        case null:
            Console.WriteLine("No section defined");
            break;
    
        default:
            Console.WriteLine($"Other section type: {design.ConcreteExtents.GetType().Name}");
            break;
    }
    

    Modifying Properties

    Cast to the specific type before modifying:

    var design = await client.PullBeamDesignerAsync();
    
    if (design.ConcreteExtents is TBeam tBeam)
    {
        tBeam.Length = 240;   // inches
        tBeam.Width = 48;     // inches
        tBeam.Height = 24;    // inches
    }
    
    await client.PushBeamDesignerAsync("", design);
    

    Changing Section Type

    Replace the entire ConcreteExtents object:

    var design = await client.PullBeamDesignerAsync();
    
    // Change from whatever it was to an I-Beam
    design.ConcreteExtents = new IBeam
    {
        Length = 360,
        Height = 36,
        // Set other required properties...
    };
    
    await client.PushBeamDesignerAsync("", design);
    

    Common Properties

    All section types inherit from ConcreteExtents and share these common properties:

    Property Type Description
    HolesAndSolids HolesSolidsDefinition Voids and solid regions
    Topping ToppingDefinition Topping configuration

    TBeam Properties

    Property Type Unit Description
    Length double inches Member length
    Width double inches Total flange width
    TopWidth double inches Top flange width
    BottomWidth double inches Bottom flange width
    Height double inches Total section height
    Thickness double inches Flange thickness
    JointGap double inches Gap between members
    StemSpacing double inches Spacing between stems
    FirstStemLocation double inches First stem location
    Quantity int - Number of stems (min: 1)
    CenterLegs bool - Center leg positioning
    StemEdge Corner - Stem edge chamfer type
    FlangeTopEdge Corner - Top flange chamfer
    FlangeBottomEdge Corner - Bottom flange chamfer

    TBeam Example

    var design = await client.PullBeamDesignerAsync();
    
    if (design.ConcreteExtents is TBeam tBeam)
    {
        // Dimensional properties
        tBeam.Length = 240;
        tBeam.Width = 48;
        tBeam.Height = 24;
        tBeam.Thickness = 4;
    
        // Stem configuration
        tBeam.Quantity = 2;
        tBeam.StemSpacing = 24;
        tBeam.CenterLegs = true;
    }
    
    await client.PushBeamDesignerAsync("", design);
    

    IBeam Properties

    Property Type Unit Description
    Length double inches Member length
    Height double inches Total section height
    TopFlangeWidth double inches Top flange width
    BottomFlangeWidth double inches Bottom flange width
    TopFlangeThickness double inches Top flange thickness
    BottomFlangeThickness double inches Bottom flange thickness
    WebWidth double inches Web width

    Rectangular Properties

    Property Type Unit Description
    Length double inches Member length
    Width double inches Section width
    Height double inches Section height

    Rectangular Example

    var design = await client.PullBeamDesignerAsync();
    
    design.ConcreteExtents = new Rectangular
    {
        Length = 180,
        Width = 12,
        Height = 18
    };
    
    await client.PushBeamDesignerAsync("", design);
    

    HollowCore Properties

    Property Type Unit Description
    Length double inches Member length
    Width double inches Section width
    Height double inches Section height
    CoreDiameter double inches Core void diameter
    CoreCount int - Number of cores

    Topping Configuration

    Most section types support a topping:

    if (design.ConcreteExtents is TBeam tBeam)
    {
        tBeam.Topping.Type = ToppingType.Profile;
        tBeam.Topping.Thickness = 2.0;  // inches
    }
    

    ToppingType Values

    Value Description
    None No topping
    Profile Follows section profile
    Uniform Uniform thickness

    Complete Example

    using System;
    using System.Threading.Tasks;
    using ErikssonBeam.API.BeamClient;
    using ErikssonBeam.API.BeamDesigner;
    
    class SectionExample
    {
        static async Task DescribeSection(ErikssonBeamClient client)
        {
            var design = await client.PullBeamDesignerAsync();
    
            Console.WriteLine("=== Section Analysis ===\n");
    
            switch (design.ConcreteExtents)
            {
                case TBeam t:
                    Console.WriteLine("Section Type: T-Beam");
                    Console.WriteLine($"  Length: {t.Length}\"");
                    Console.WriteLine($"  Width: {t.Width}\"");
                    Console.WriteLine($"  Height: {t.Height}\"");
                    Console.WriteLine($"  Flange Thickness: {t.Thickness}\"");
                    Console.WriteLine($"  Stems: {t.Quantity}");
                    Console.WriteLine($"  Stem Spacing: {t.StemSpacing}\"");
    
                    if (t.Topping?.Type != ToppingType.None)
                    {
                        Console.WriteLine($"  Topping: {t.Topping.Type}, {t.Topping.Thickness}\" thick");
                    }
                    break;
    
                case IBeam i:
                    Console.WriteLine("Section Type: I-Beam");
                    Console.WriteLine($"  Length: {i.Length}\"");
                    Console.WriteLine($"  Height: {i.Height}\"");
                    Console.WriteLine($"  Top Flange: {i.TopFlangeWidth}\" x {i.TopFlangeThickness}\"");
                    Console.WriteLine($"  Bottom Flange: {i.BottomFlangeWidth}\" x {i.BottomFlangeThickness}\"");
                    Console.WriteLine($"  Web Width: {i.WebWidth}\"");
                    break;
    
                case Rectangular r:
                    Console.WriteLine("Section Type: Rectangular");
                    Console.WriteLine($"  Length: {r.Length}\"");
                    Console.WriteLine($"  Width: {r.Width}\"");
                    Console.WriteLine($"  Height: {r.Height}\"");
                    break;
    
                case HollowCore h:
                    Console.WriteLine("Section Type: Hollow Core");
                    Console.WriteLine($"  Length: {h.Length}\"");
                    Console.WriteLine($"  Width: {h.Width}\"");
                    Console.WriteLine($"  Height: {h.Height}\"");
                    Console.WriteLine($"  Cores: {h.CoreCount} x {h.CoreDiameter}\" diameter");
                    break;
    
                case null:
                    Console.WriteLine("No section defined");
                    break;
    
                default:
                    Console.WriteLine($"Section Type: {design.ConcreteExtents.GetType().Name}");
                    break;
            }
        }
    }
    

    See Also

    • Data Model Overview - BeamDesign structure
    • DesignCriteria - Project settings
    • Pushing Data - Sending changes
    • Edit this page
    In this article
    Back to top Generated by DocFX