API Reference
This section provides comprehensive documentation for the Eriksson Beam API, including architecture, connection methods, data operations, and the data model.
Architecture Overview
The Eriksson Beam API uses Named Pipes for inter-process communication (IPC). This provides fast, reliable communication between your application and Eriksson Beam.
| Your Application | Eriksson Beam | |
|---|---|---|
| ErikssonBeamClient | ↔ | API Server |
| BeamDesign objects | Named Pipes / JSON | BeamDesign data |
Communication Flow
- Client connects to Eriksson Beam via Named Pipes
- Requests are serialized as JSON and sent to the server
- Server processes the request (pull data, push changes, etc.)
- Response is serialized as JSON and returned to the client
- Client deserializes the response into .NET objects
Key Characteristics
| Aspect | Details |
|---|---|
| Protocol | Named Pipes (Windows IPC) |
| Serialization | JSON (Newtonsoft.Json) |
| Authentication | License key per request |
| Threading | Async/await throughout |
| Platform | Windows only (x86) |
API Sections
Connection Methods
How to connect to Eriksson Beam:
| Class | Purpose |
|---|---|
| ErikssonBeamLauncher | Launch fresh instance |
| ErikssonBeamFinder | Find running instances |
| ErikssonBeamClient | Direct connection |
| ErikssonBeamFileManager | Batch file operations |
Data Operations
Read and write beam design data:
| Operation | Description |
|---|---|
| Pulling Data | Retrieve designs from Eriksson Beam |
| Pushing Data | Send modifications back |
| Project Management | List, save, create files |
Data Model
The BeamDesign object structure:
| Section | Contents |
|---|---|
| ConcreteExtents | Section geometry |
| DesignCriteria | Project info, materials, settings |
| StructuralModel | Loading, bearing, supports |
| Reinforcement | Prestress, rebar, shear |
Quick Reference
Namespaces
using ErikssonBeam.API.BeamClient; // Client, Launcher, Finder
using ErikssonBeam.API.BeamDesigner; // BeamDesign, section types
Minimal Example
var args = new ErikssonBeamLauncherArgs
{
LicenseKey = Environment.GetEnvironmentVariable("ERIKSSON_LICENSE_KEY"),
ExecutablePath = @"C:\...\ErikssonBeam.exe",
FilesToOpen = new[] { @"C:\Projects\beam.ebf" },
CloseErikssonBeamOnClientDisconnect = true
};
using var launcher = await ErikssonBeamLauncher.LaunchErikssonBeam(args);
var client = launcher.Client;
var design = await client.PullBeamDesignerAsync();
design.DesignCriteria.ProjectInformation.DesignerName = "Updated";
await client.PushBeamDesignerAsync("", design);
Important Concepts
License Key
All API operations require a valid license key:
var args = new ErikssonBeamLauncherArgs
{
LicenseKey = Environment.GetEnvironmentVariable("ERIKSSON_LICENSE_KEY"),
// ...
};
Keys are validated against Eriksson Software's license server and cached for 7 days.
10-Minute Idle Timeout
Eriksson Beam only listens for API connections for 10 minutes after launch. This timeout is not reset by UI interactions. If connections fail, restart Eriksson Beam.
Pull-Before-Push
Always pull before modifying data to avoid overwriting existing values:
var design = await client.PullBeamDesignerAsync(); // Get current state
design.Property = newValue; // Modify
await client.PushBeamDesignerAsync("", design); // Push back
Disposal
Always dispose connection objects:
using var launcher = await ErikssonBeamLauncher.LaunchErikssonBeam(args);
// or
client.Dispose();
Units
The API uses inches and pounds for most dimensional and force values. Verify units for specific properties in the data model documentation.
See Also
- Getting Started - Installation and first steps
- Guides - Best practices and common tasks
- Troubleshooting - Problem resolution