Eriksson Beam API
Search Results for

    Show / Hide Table of Contents

    ErikssonBeamLauncher

    Launch and manage fresh Eriksson Beam instances programmatically.

    When to Use

    • Starting automation from scratch
    • Need a guaranteed clean state
    • Processing specific files without user interaction
    • Want automatic cleanup when done

    Basic Usage

    var args = new ErikssonBeamLauncherArgs
    {
        LicenseKey = Environment.GetEnvironmentVariable("ERIKSSON_LICENSE_KEY"),
        ExecutablePath = @"C:\Program Files\Eriksson Software\Eriksson Beam\ErikssonBeam.exe",
        FilesToOpen = new[] { @"C:\Projects\beam1.ebf", @"C:\Projects\beam2.ebf" },
        CloseErikssonBeamOnClientDisconnect = true,
        IdleTimeoutMs = 30000
    };
    
    using var launcher = await ErikssonBeamLauncher.LaunchErikssonBeam(args);
    var client = launcher.Client;
    
    // Work with the client
    var design = await client.PullBeamDesignerAsync("beam1");
    design.DesignCriteria.ProjectInformation.DesignerName = "Updated";
    await client.PushBeamDesignerAsync("beam1", design);
    
    // Eriksson Beam closes automatically when launcher is disposed
    

    Configuration Options

    ErikssonBeamLauncherArgs

    Property Type Default Description
    LicenseKey string "" Required. API authorization key
    ExecutablePath string "" Required. Full path to ErikssonBeam.exe
    FilesToOpen string[] [] Files to open on launch
    CloseErikssonBeamOnClientDisconnect bool true Close Eriksson Beam when launcher is disposed
    IdleTimeoutMs int 30000 Client connection timeout (ms)
    MaxAttempts int 10 Connection retry attempts
    WaitTimeBetweenAttemptsMs int 1000 Delay between retries (ms)

    Opening Files on Launch

    You can open multiple files when launching:

    var args = new ErikssonBeamLauncherArgs
    {
        // ...
        FilesToOpen = new[]
        {
            @"C:\Projects\beam1.ebf",
            @"C:\Projects\beam2.ebf",
            @"C:\Projects\beam3.ebf"
        }
    };
    

    Each file must exist. If a file is not found, the launch will fail.

    Disposal Behavior

    The launcher manages the Eriksson Beam process lifecycle:

    With CloseErikssonBeamOnClientDisconnect = true (Default)

    using var launcher = await ErikssonBeamLauncher.LaunchErikssonBeam(args);
    // Work with client...
    // When using block ends:
    // 1. Client connection is closed
    // 2. Eriksson Beam process terminates
    

    With CloseErikssonBeamOnClientDisconnect = false

    args.CloseErikssonBeamOnClientDisconnect = false;
    using var launcher = await ErikssonBeamLauncher.LaunchErikssonBeam(args);
    // Work with client...
    // When using block ends:
    // 1. Client connection is closed
    // 2. Eriksson Beam remains open for manual use
    

    Error Handling

    try
    {
        using var launcher = await ErikssonBeamLauncher.LaunchErikssonBeam(args);
        var client = launcher.Client;
        // ...
    }
    catch (FileNotFoundException ex)
    {
        // ExecutablePath or FilesToOpen not found
        Console.WriteLine($"File not found: {ex.FileName}");
    }
    catch (DirectoryNotFoundException ex)
    {
        // Directory in ExecutablePath doesn't exist
        Console.WriteLine($"Directory not found: {ex.Message}");
    }
    catch (ErikssonBeamNotRunningException ex)
    {
        // Process failed to start or connection failed
        Console.WriteLine($"Launch failed: {ex.Message}");
    }
    

    Logging

    Pass an ILogger for diagnostic output:

    using Microsoft.Extensions.Logging;
    
    // Create logger (example using console)
    using var loggerFactory = LoggerFactory.Create(builder =>
    {
        builder.AddConsole().SetMinimumLevel(LogLevel.Debug);
    });
    var logger = loggerFactory.CreateLogger<Program>();
    
    var launcher = await ErikssonBeamLauncher.LaunchErikssonBeam(args, logger);
    

    Complete Example

    using System;
    using System.Threading.Tasks;
    using ErikssonBeam.API.BeamClient;
    using Microsoft.Extensions.Logging;
    
    class BatchProcessor
    {
        static async Task ProcessFiles(string[] files)
        {
            var args = new ErikssonBeamLauncherArgs
            {
                LicenseKey = Environment.GetEnvironmentVariable("ERIKSSON_LICENSE_KEY"),
                ExecutablePath = @"C:\Program Files\Eriksson Software\Eriksson Beam\ErikssonBeam.exe",
                FilesToOpen = files,
                CloseErikssonBeamOnClientDisconnect = true,
                IdleTimeoutMs = 60000  // 1 minute for longer operations
            };
    
            try
            {
                using var launcher = await ErikssonBeamLauncher.LaunchErikssonBeam(args);
                var client = launcher.Client;
    
                foreach (var file in files)
                {
                    var fileName = System.IO.Path.GetFileNameWithoutExtension(file);
                    Console.WriteLine($"Processing {fileName}...");
    
                    var design = await client.PullBeamDesignerAsync(fileName);
    
                    // Modify design
                    design.DesignCriteria.ProjectInformation.Date = DateTime.Now;
    
                    await client.PushBeamDesignerAsync(fileName, design);
    
                    // Save the file
                    await client.SaveProject(fileName, file, overwriteExistingFile: true);
                }
    
                Console.WriteLine("All files processed successfully!");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error: {ex.Message}");
            }
        }
    }
    

    See Also

    • ErikssonBeamFinder - Connect to existing instances
    • ErikssonBeamClient - Direct client connection
    • ErikssonBeamFileManager - Advanced file batch processing
    • Edit this page
    In this article
    Back to top Generated by DocFX