StructuralModel
StructuralModel
StructuralModel contains loading definitions, support conditions, and other structural configuration.
Structure
public class StructuralModel
{
public Loading Loading { get; set; }
public Bearing Bearing { get; set; }
public DappedEnds DappedEnds { get; set; }
public StrippingAndHandling StrippingAndHandling { get; set; }
public Shoring Shoring { get; set; }
public VibrationAnalysis VibrationAnalysis { get; set; }
}
Loading
Applied loads on the beam.
var loading = design.StructuralModel.Loading;
// Self-weight configuration
double multiplier = loading.SelfWeightMultiplier;
loading.SelfWeightMultiplier = 1.0;
// Access load collections
var pointLoads = loading.PointLoads;
var distributedLoads = loading.DistributedLoads;
var moments = loading.AppliedMoments;
Loading Properties
| Property | Type | Description |
|---|
SelfWeightMultiplier | double | Factor applied to self-weight |
PointLoads | List | Concentrated loads |
DistributedLoads | List | Uniform and varying distributed loads |
AppliedMoments | List | Applied moment loads |
LateralLoads | List | Lateral (horizontal) loads |
Point Load Properties
| Property | Type | Unit | Description |
|---|
Location | double | inches | Distance from left end |
Magnitude | double | lbs | Load magnitude |
LoadType | LoadType | - | Dead, Live, etc. |
Description | string | - | Load description |
Distributed Load Properties
| Property | Type | Unit | Description |
|---|
StartLocation | double | inches | Start position |
EndLocation | double | inches | End position |
StartMagnitude | double | lbs/in | Load at start |
EndMagnitude | double | lbs/in | Load at end |
LoadType | LoadType | - | Dead, Live, etc. |
Example: Adding Loads
var design = await client.PullBeamDesignerAsync();
var loading = design.StructuralModel.Loading;
// Set self-weight
loading.SelfWeightMultiplier = 1.0;
// Add a point load
loading.PointLoads.Add(new PointLoad
{
Location = 120, // 10 feet from left
Magnitude = 5000, // 5000 lbs
LoadType = LoadType.Dead,
Description = "Equipment load"
});
// Add a distributed load
loading.DistributedLoads.Add(new DistributedLoad
{
StartLocation = 0,
EndLocation = 240, // Full span
StartMagnitude = 100, // 100 lbs/in
EndMagnitude = 100,
LoadType = LoadType.Live,
Description = "Uniform live load"
});
await client.PushBeamDesignerAsync("", design);
Bearing
Support conditions at beam ends and intermediate locations.
var bearing = design.StructuralModel.Bearing;
// Access bearing properties
var leftSupport = bearing.LeftEnd;
var rightSupport = bearing.RightEnd;
var intermediateSupports = bearing.IntermediateSupports;
Bearing Properties
| Property | Type | Description |
|---|
LeftEnd | EndBearing | Left end support |
RightEnd | EndBearing | Right end support |
IntermediateSupports | List | Interior supports |
EndBearing Properties
| Property | Type | Unit | Description |
|---|
BearingLength | double | inches | Bearing pad length |
BearingWidth | double | inches | Bearing pad width |
IsFixed | bool | - | Fixed vs pinned support |
SupportType | SupportType | - | Support classification |
Example: Bearing Configuration
var design = await client.PullBeamDesignerAsync();
var bearing = design.StructuralModel.Bearing;
// Configure left end bearing
bearing.LeftEnd.BearingLength = 8; // 8" bearing
bearing.LeftEnd.BearingWidth = 12;
bearing.LeftEnd.IsFixed = false; // Pinned
// Configure right end bearing
bearing.RightEnd.BearingLength = 8;
bearing.RightEnd.BearingWidth = 12;
bearing.RightEnd.IsFixed = false;
await client.PushBeamDesignerAsync("", design);
DappedEnds
Dapped (notched) end configurations.
var dappedEnds = design.StructuralModel.DappedEnds;
// Check if ends are dapped
bool leftDapped = dappedEnds.LeftEnd.IsDapped;
bool rightDapped = dappedEnds.RightEnd.IsDapped;
DappedEnd Properties
| Property | Type | Unit | Description |
|---|
IsDapped | bool | - | Whether end is dapped |
DapLength | double | inches | Horizontal dap dimension |
DapDepth | double | inches | Vertical dap dimension |
ReentrantRadius | double | inches | Corner radius |
Example: Dapped End
var design = await client.PullBeamDesignerAsync();
// Configure left end dap
var leftDap = design.StructuralModel.DappedEnds.LeftEnd;
leftDap.IsDapped = true;
leftDap.DapLength = 6;
leftDap.DapDepth = 8;
leftDap.ReentrantRadius = 0.5;
await client.PushBeamDesignerAsync("", design);
StrippingAndHandling
Lifting and handling configurations during production.
var handling = design.StructuralModel.StrippingAndHandling;
// Lifting point locations
var liftPoints = handling.LiftingPoints;
Properties
| Property | Type | Description |
|---|
LiftingPoints | List | Lifting point locations |
DynamicFactor | double | Impact factor for handling |
SuctionLoad | double | Form suction load |
Shoring
Temporary support configuration.
var shoring = design.StructuralModel.Shoring;
// Access shore locations
var shores = shoring.ShoreLocations;
// Add a shore
shores.Add(new ShoreLocation
{
Location = 120, // 10 feet from left
IsActive = true
});
Shoring Properties
| Property | Type | Description |
|---|
ShoreLocations | List | List of shore positions |
ShoreRemovalSequence | List | Order of shore removal |
VibrationAnalysis
Dynamic response parameters for vibration analysis.
var vibration = design.StructuralModel.VibrationAnalysis;
// Configure vibration parameters
vibration.DampingRatio = 0.02; // 2% damping
Complete Example
using System;
using System.Threading.Tasks;
using ErikssonBeam.API.BeamClient;
using ErikssonBeam.API.BeamDesigner;
class StructuralModelExample
{
static async Task ConfigureStructuralModel(ErikssonBeamClient client)
{
var design = await client.PullBeamDesignerAsync();
var model = design.StructuralModel;
// Loading
model.Loading.SelfWeightMultiplier = 1.0;
// Clear existing loads and add new ones
model.Loading.DistributedLoads.Clear();
model.Loading.DistributedLoads.Add(new DistributedLoad
{
StartLocation = 0,
EndLocation = 240,
StartMagnitude = 150,
EndMagnitude = 150,
LoadType = LoadType.Dead,
Description = "Superimposed dead load"
});
model.Loading.DistributedLoads.Add(new DistributedLoad
{
StartLocation = 0,
EndLocation = 240,
StartMagnitude = 200,
EndMagnitude = 200,
LoadType = LoadType.Live,
Description = "Design live load"
});
// Bearing
model.Bearing.LeftEnd.BearingLength = 6;
model.Bearing.LeftEnd.BearingWidth = 10;
model.Bearing.RightEnd.BearingLength = 6;
model.Bearing.RightEnd.BearingWidth = 10;
await client.PushBeamDesignerAsync("", design);
Console.WriteLine("Structural model configured");
}
static async Task DisplayStructuralModel(ErikssonBeamClient client)
{
var design = await client.PullBeamDesignerAsync();
var model = design.StructuralModel;
Console.WriteLine("=== Structural Model ===\n");
// Loading summary
Console.WriteLine("Loading:");
Console.WriteLine($" Self-Weight Multiplier: {model.Loading.SelfWeightMultiplier}");
Console.WriteLine($" Point Loads: {model.Loading.PointLoads?.Count ?? 0}");
Console.WriteLine($" Distributed Loads: {model.Loading.DistributedLoads?.Count ?? 0}");
// Bearing summary
Console.WriteLine("\nBearing:");
Console.WriteLine($" Left: {model.Bearing.LeftEnd.BearingLength}\" x {model.Bearing.LeftEnd.BearingWidth}\"");
Console.WriteLine($" Right: {model.Bearing.RightEnd.BearingLength}\" x {model.Bearing.RightEnd.BearingWidth}\"");
// Dapped ends
Console.WriteLine("\nDapped Ends:");
Console.WriteLine($" Left Dapped: {model.DappedEnds?.LeftEnd?.IsDapped ?? false}");
Console.WriteLine($" Right Dapped: {model.DappedEnds?.RightEnd?.IsDapped ?? false}");
}
}
See Also