Eriksson Beam API
Search Results for

    Show / Hide Table of Contents

    ErikssonBeamFinder

    Discover and connect to running Eriksson Beam instances automatically.

    When to Use

    • Eriksson Beam is already running
    • You don't know the specific process ID
    • You want to find an instance with a specific file open
    • You want to discover all available instances

    Basic Usage

    Find Any Running Instance

    var args = new ErikssonBeamConnectionAttemptArgs
    {
        LicenseKey = Environment.GetEnvironmentVariable("ERIKSSON_LICENSE_KEY"),
        MaxAttempts = 10,
        WaitTimeBetweenAttemptsMs = 1000
    };
    
    var client = await ErikssonBeamFinder.GetFirstSupportedBeamClient(args);
    
    try
    {
        var design = await client.PullBeamDesignerAsync();
        // Work with design...
    }
    finally
    {
        client.Dispose();
    }
    

    Find Instance with Specific File

    // By file name
    var client = await ErikssonBeamFinder.GetFirstClientWithFile("MyProject", args);
    
    // By full path
    var client = await ErikssonBeamFinder.GetFirstClientWithFile(@"C:\Projects\MyProject.ebf", args);
    

    List All Available Instances

    // Get process IDs of all supported Eriksson Beam instances
    var processIds = await ErikssonBeamFinder.GetSupportedErikssonBeamInstances();
    
    foreach (var pid in processIds)
    {
        Console.WriteLine($"Found Eriksson Beam instance: PID {pid}");
    }
    

    Configuration Options

    ErikssonBeamConnectionAttemptArgs

    Property Type Default Description
    LicenseKey string "" Required. API authorization key
    ProcessID int -1 Ignored by Finder methods
    IdleTimeoutMs int 30000 Client connection timeout (ms)
    MaxAttempts int 10 Connection retry attempts
    WaitTimeBetweenAttemptsMs int 1000 Delay between retries (ms)

    Version Compatibility

    The Finder only returns instances with compatible API versions:

    • Connects to instances with matching major version
    • Automatically filters out older incompatible versions
    • No configuration needed - handled automatically

    Important: 10-Minute Idle Timeout

    Eriksson Beam only listens for API connections for 10 minutes after launch.

    • This timer starts when Eriksson Beam opens
    • Not reset by manual UI interactions
    • After timeout, API connections will fail

    If connections fail:

    1. Close Eriksson Beam
    2. Reopen Eriksson Beam
    3. Retry connection within 10 minutes

    Error Handling

    try
    {
        var client = await ErikssonBeamFinder.GetFirstSupportedBeamClient(args);
        // ...
    }
    catch (ErikssonBeamNotRunningException)
    {
        Console.WriteLine("No running Eriksson Beam instances found.");
        Console.WriteLine("Please start Eriksson Beam and try again.");
    }
    catch (TimeoutException)
    {
        Console.WriteLine("Connection timed out. Eriksson Beam may have exceeded its 10-minute idle limit.");
        Console.WriteLine("Restart Eriksson Beam and try again.");
    }
    

    Complete Example

    using System;
    using System.Threading.Tasks;
    using ErikssonBeam.API.BeamClient;
    
    class ConnectToRunning
    {
        static async Task Main()
        {
            var args = new ErikssonBeamConnectionAttemptArgs
            {
                LicenseKey = Environment.GetEnvironmentVariable("ERIKSSON_LICENSE_KEY"),
                MaxAttempts = 5,
                WaitTimeBetweenAttemptsMs = 2000
            };
    
            Console.WriteLine("Searching for running Eriksson Beam instances...");
    
            try
            {
                // List all available instances
                var instances = await ErikssonBeamFinder.GetSupportedErikssonBeamInstances();
                Console.WriteLine($"Found {instances.Length} instance(s)");
    
                if (instances.Length == 0)
                {
                    Console.WriteLine("Please start Eriksson Beam first.");
                    return;
                }
    
                // Connect to first available
                var client = await ErikssonBeamFinder.GetFirstSupportedBeamClient(args);
    
                try
                {
                    // Get list of open files
                    var openFiles = await client.GetOpenBeamProjects();
                    Console.WriteLine($"Open files: {string.Join(", ", openFiles)}");
    
                    if (openFiles.Length > 0)
                    {
                        var design = await client.PullBeamDesignerAsync(openFiles[0]);
                        Console.WriteLine($"Project: {design.DesignCriteria.ProjectInformation.ProjectName}");
                    }
                }
                finally
                {
                    client.Dispose();
                }
            }
            catch (ErikssonBeamNotRunningException)
            {
                Console.WriteLine("No compatible Eriksson Beam instances found.");
            }
        }
    }
    

    Methods Reference

    GetFirstSupportedBeamClient

    public static async Task<ErikssonBeamClient> GetFirstSupportedBeamClient(
        ErikssonBeamConnectionAttemptArgs args,
        ILogger logger = null)
    

    Returns a connected client to the first compatible Eriksson Beam instance found.

    Throws:

    • ErikssonBeamNotRunningException - No instances found
    • TimeoutException - Connection attempts exhausted

    GetFirstClientWithFile

    public static async Task<ErikssonBeamClient> GetFirstClientWithFile(
        string fileNameOrPath,
        ErikssonBeamConnectionAttemptArgs args,
        ILogger logger = null)
    

    Returns a connected client to an instance that has the specified file open.

    Parameters:

    • fileNameOrPath - File name (without extension) or full file path

    Throws:

    • ErikssonBeamNotRunningException - No instances with that file found

    GetSupportedErikssonBeamInstances

    public static async Task<int[]> GetSupportedErikssonBeamInstances()
    

    Returns process IDs of all running Eriksson Beam instances with compatible API versions.

    IsRunning

    public static bool IsRunning(int processId)
    

    Checks if a specific process ID is a running Eriksson Beam instance.

    See Also

    • ErikssonBeamLauncher - Launch new instances
    • ErikssonBeamClient - Connect to specific process
    • Connection Overview - Choosing the right connection method
    • Edit this page
    In this article
    Back to top Generated by DocFX