SpiralLab.Sirius3.UI 1.8.1

dotnet add package SpiralLab.Sirius3.UI --version 1.8.1
                    
NuGet\Install-Package SpiralLab.Sirius3.UI -Version 1.8.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SpiralLab.Sirius3.UI" Version="1.8.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SpiralLab.Sirius3.UI" Version="1.8.1" />
                    
Directory.Packages.props
<PackageReference Include="SpiralLab.Sirius3.UI" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SpiralLab.Sirius3.UI --version 1.8.1
                    
#r "nuget: SpiralLab.Sirius3.UI, 1.8.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SpiralLab.Sirius3.UI@1.8.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SpiralLab.Sirius3.UI&version=1.8.1
                    
Install as a Cake Addin
#tool nuget:?package=SpiralLab.Sirius3.UI&version=1.8.1
                    
Install as a Cake Tool

Sirius3

A .NET-Based, All-IN-ONE Platform for Precision Laser Processing.

sirius3_logo


Highlights

sirius3_logo1 sirius3_editor

  • SCANLAB RTC Controllers
    • RTC4 / RTC4e / RTC5 / RTC6 / RTC6e
    • XL-SCAN (RTC6 + ACS via syncAXIS)
  • Measurement and Profiling
    • Log scanner trajectory and output signals with plotted graphs
  • Powerful Marking Options
    • Variable Polygon and Variable Jump Delays
    • 2nd head, 3D
    • MoF (Marking on the Fly) and MoF Extension(aka. Fly extension)
    • Sky Writing Mode 1/2/3 or 4
    • Auto Delays by SCANAhead
    • MultiBeam (1 Laser source + 2 AOM + 2 ScanHead)
  • ALC(Automatic Laser Control) or Pulse on Demand
    • Defined vector
      • Ramp
    • Speed dependent
      • Set Velocity
      • Actual Velocity
    • Encoder dependent
      • Encoder Speed
    • Position dependent
      • Table by distance and scale factor
    • Also, SCANAhead, Encoder Speed Addition, Inverse Speed Correction, Backward Transformation, SDC+Skywriting combinations available
  • Scanner Field Correction
    • 2D correction
    • 3D correction for tilt, focus, coefficient a,b,c and stretch factors
  • Laser Power Control
    • Frequency, Duty Cycle, Analog, Digital
    • Built-in vendor integrations: AdvancedOptoWave, Coherent, IPG, JPT, Photonics Industry, Spectra Physics and more
  • Powermeters & Powermap
    • Coherent (PowerMax), Thorlabs (via OPM), Ophir (via StarLab)
    • Powermap-based output compensation
  • Various Entities and Formats
    • Point(s), Line, Arc, Polyline, Triangle, Rectangle, Spiral, Trepan, Spline
    • Layer, Group, Block and BlockInsert
    • Text, SiriusText, ImageText, Circular Text
    • Image, DXF, HPGL, ZPL
    • QR, DataMatrix, PDF417 Barcodes
    • 3D Mesh Format like as STL, OBJ, PLY
  • Document and pages
    • Single document has multiple pages
    • One document can be rendered for multiple view targets
  • Open Architecture
    • Editor, Marker and laser-source control code are open for customization

Major Changes

SIRIUS3 SIRIUS2
Multiple page 4 Pages No Page / Single Document
Camera 6 Built-in Cameras Perspective
Render speed Fastest by updated shader engine Faster
Render mode Model, PerVertex, Normal, ZDepth None
HitTest speed Faster by AABBTree Slow
Hatch Multiple Hatches Single Hatch
3D Mesh with slicer Built-in Slicer for PLY, OBJ, STL None
Gerber file(RS-274x) Supported None
Wafer/Substrate map Built-in editor None
Font file General CXF, LFF, FNT formats Customized CXF, LFF formats
Pen Pens for Entity and Layer Entity Pen
Library update By Nuget Package Manager Manual

sirius3_hatch sirius3_pod sirius3_slicer sirius3_syncaxis

Packages / DLLs

  • SpiralLab.Sirius3.Dependencies — SCANLAB RTC4/5/6, syncAXIS runtime, fonts, sample data
  • SpiralLab.Sirius3 — HAL controllers (scanner/laser/powermeter, etc.)
  • SpiralLab.Sirius3.UI — Entities, 3D renderer, WinForms UI controls

Easy to update library files by NuGet package manager.

Platform targets

  • net481
  • net8.0-windows
  • net9.0-windows
  • net10.0-windows

System Requirements

  • Windows 10/11 (x64)
  • GPU/Driver with OpenGL 3.3 support (latest drivers strongly recommended)
  • SCANLAB drivers/runtimes installed (see versions below)
  • Visual Studio 2022 or higher version

Dependencies

  • SCANLAB

    • RTC4: v2023.11.02
    • RTC5: v2024.09.27
    • RTC6: 2026.3.31 v1.24.0
    • syncAXIS: v1.8.2 (2023.03.09)
  • .NET / OpenTK

    • net481
      • OpenTK 3.3.3
    • net8.0-windows
    • net9.0-windows
    • net10.0-windows
      • OpenTK 4.9.4
      • OpenTK.Mathematics 4.9.4
    • Common
      • Newtonsoft.Json 13.0.4
      • Microsoft.Extensions.Logging 8.0.1
      • Microsoft.Extensions.Logging.Abstractions 8.0.3

Install Packages

Quick Start

Project settings

<PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFrameworks>net481;net8.0-windows;net9.0-windows;net10.0-windows</TargetFrameworks>
    <UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>

<PropertyGroup Condition="'$(TargetFramework)'=='net481'">
	<DefineConstants>$(DefineConstants);OPENTK3</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework.StartsWith(`net8.0-windows`))' OR '$(TargetFramework.StartsWith(`net9.0-windows`))' OR '$(TargetFramework.StartsWith(`net10.0-windows`))'">
	<DefineConstants>$(DefineConstants);OPENTK4</DefineConstants>
</PropertyGroup>

<ItemGroup Condition="'$(TargetFramework)'=='net481'">
	<PackageReference Include="OpenTK" Version="3.3.3" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework.StartsWith(`net8.0-windows`))' OR '$(TargetFramework.StartsWith(`net9.0-windows`))' OR '$(TargetFramework.StartsWith(`net10.0-windows`))'">
	<PackageReference Include="OpenTK" Version="4.9.4" />
	<PackageReference Include="OpenTK.Mathematics" Version="4.9.4" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'net8.0-windows' OR '$(TargetFramework)' == 'net481'">
    <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.3" />
    <PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.1" />
</ItemGroup>
	
<ItemGroup Condition="'$(TargetFramework)' == 'net9.0-windows'">
    <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.15" />
    <PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.15" />
</ItemGroup>
	
<ItemGroup Condition="'$(TargetFramework)' == 'net10.0-windows'">
    <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.7" />
    <PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.7" />
</ItemGroup>
	
<ItemGroup>
    <PackageReference Include="SpiralLab.Sirius3.Dependencies" Version="1.*" />
    <PackageReference Include="SpiralLab.Sirius3" Version="1.*" />
    <PackageReference Include="SpiralLab.Sirius3.UI" Version="1.*" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
</ItemGroup>

Example code

#if OPENTK3
    using OpenTK;
    using DVec3 = OpenTK.Vector3d;
#elif OPENTK4
    using OpenTK.Mathematics;
    using DVec3 = OpenTK.Mathematics.Vector3d;
#endif

static class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        // Create winforms
        CreateAndExecuteMainForm();    
    }

    public CreateAndExecuteMainForm()
    {
        // Create a form and add SiriusEditorControl to the form
        Form dynamicForm = new Form();
        dynamicForm.SuspendLayout();
        dynamicForm.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
        dynamicForm.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        dynamicForm.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
        dynamicForm.Text = "DEMO - (c)SpiralLab";
        dynamicForm.Size = new Size(1600, 1200);
        dynamicForm.StartPosition = FormStartPosition.CenterScreen;
        var editorControl = new SpiralLab.Sirius3.UI.WinForms.SiriusEditorControl();
        editorControl.Dock = DockStyle.Fill;
        dynamicForm.Controls.Add(editorControl);
        dynamicForm.ResumeLayout(false);

        dynamicForm.Load += (s, e) =>
        {
            // Initialize sirius3 library
            SpiralLab.Sirius3.Core.Initialize();

            // Create devices and initialize them, then register to editor control
            bool success = true;

            // Scanner control
            string correctionFile = "cor_1to1.ct5";
            string correctionPath = Path.Combine(SpiralLab.Sirius3.Config.CorrectionPath, correctionFile);
            const var fov = 100.0;
            var kfactor = Math.Pow(2, 20) / fov;
            var index = 0;
            var rtc = ScannerFactory.CreateRtc5(index, kfactor, LaserModes.Yag1, RtcSignalLevels.ActiveHigh, RtcSignalLevels.ActiveHigh, correctionPath);
            success &= rtc.Initialize();
            rtc.CtlFrequency(50 * 1000, 2);
            rtc.CtlSpeed(100, 100);

            // DIO control
            var dIExt1 = IOFactory.CreateInputExtension1(rtc); success &= dIExt1.Initialize();
            var dOExt1 = IOFactory.CreateOutputExtension1(rtc); success &= dOExt1.Initialize();
            var dOExt2 = IOFactory.CreateOutputExtension2(rtc); success &= dOExt2.Initialize();
            var dILaserPort = IOFactory.CreateInputLaserPort(rtc); success &= dILaserPort.Initialize();
            var dOLaserPort = IOFactory.CreateOutputLaserPort(rtc); success &= dOLaserPort.Initialize();

            // Powermeter control
            double laserMaxPower = 20;
            var powerMeter = PowerMeterFactory.CreateVirtual(index, laserMaxPower);
            //var powerMeter = PowerMeterFactory.CreateCoherentPowerMax(index, 4);
            //var powerMeter = PowerMeterFactory.CreateGentecEO(index, 3);
            success &= powerMeter.Initialize();

            // Laser control
            var laser = LaserFactory.CreateVirtualDutyCycle(index, laserMaxPower, 0, 100);
            //var laser = LaserFactory.Create ...
            success &= laser.Initialize();
            laser.Scanner = rtc;

            // Powermap
            var powerMap = PowerMapFactory.CreateDefault(index, "default");
            powerMap.Reset1to1("10000", laserMaxPower);
            laser.PowerMap = powerMap;

            // Marker
            var marker = MarkerFactory.CreateRtc(index);
            //var marker = MarkerFactory.CreateRtcFast(index);
            //var marker = MarkerFactory.CreateSyncAxis(index);
            success &= marker.Initialize();

            Debug.Assert(success);

            // Register devices
            editorControl.RegisterDevices(rtc, laser, powerMeter, dIExt1, dILaserPort, dOExt1, dOExt2, dOLaserPort, marker);
        };

        dynamicForm.FormClosing += (s, e) =>
        {
            var dlgResult = MessageBox.Show(this, $"Do you really want to terminate program ?", "WARNING", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (dlgResult != DialogResult.Yes)
            {
                //editorControl.Marker?.Stop();
                e.Cancel = true;
                return;
            }

            // Dispose document
            editorControl.Document?.Dispose();
            // Dispose devices
            editorControl.DisposeDevices();
            // Clean-up sirius3 library
            SpiralLab.Sirius3.Core.Cleanup();
        };

        Application.Run(dynamicForm);
    }
}

Demo Programs

License

  • Commercial license required for production use.
  • License : RTC instance count + [Options: MoF, MultiBeam, syncAXIS or Remote]
  • See LICENSE.txt and THIRD-PARTY-NOTICES.txt.
  • Contact: hcchoi@spirallab.co.kr | https://spirallab.co.kr

Without a license key, the library runs in 30-minute evaluation mode.

Version history

API documentation

Product Compatible and additional computed target framework versions.
.NET net8.0-windows7.0 is compatible.  net9.0-windows was computed.  net9.0-windows7.0 is compatible.  net10.0-windows was computed.  net10.0-windows7.0 is compatible. 
.NET Framework net481 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.8.1 95 4/22/2026
1.7.1 110 4/16/2026
1.6.1 98 4/9/2026
1.5.4 102 4/2/2026
1.5.2 106 3/27/2026
1.5.1 91 3/26/2026
1.4.1 117 3/10/2026
1.4.0 109 3/3/2026
1.3.2 107 2/20/2026
1.3.1 106 2/9/2026
1.3.0 118 2/5/2026
1.2.7 121 1/26/2026
1.2.6 116 1/21/2026
1.2.5 111 1/15/2026
1.2.4 119 1/7/2026
Loading failed