SpiralLab.Sirius3.UI
1.8.1
.NET 8.0
This package targets .NET 8.0. The package is compatible with this framework or higher.
.NET Framework 4.8.1
This package targets .NET Framework 4.8.1. The package is compatible with this framework or higher.
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" />
<PackageReference Include="SpiralLab.Sirius3.UI" />
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
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#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
#tool nuget:?package=SpiralLab.Sirius3.UI&version=1.8.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Sirius3
A .NET-Based, All-IN-ONE Platform for Precision Laser Processing.
Highlights
- 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
- Defined vector
- 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 |
Packages / DLLs
SpiralLab.Sirius3.Dependencies— SCANLAB RTC4/5/6, syncAXIS runtime, fonts, sample dataSpiralLab.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
net481net8.0-windowsnet9.0-windowsnet10.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-windowsnet9.0-windowsnet10.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
- Add references
SpiralLab.Sirius3.Dependencies(https://www.nuget.org/packages/SpiralLab.Sirius3.Dependencies)SpiralLab.Sirius3(https://www.nuget.org/packages/SpiralLab.Sirius3)SpiralLab.Sirius3.UI(https://www.nuget.org/packages/SpiralLab.Sirius3.UI)
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
- See DEMOS.md
- Create your devices like as scanner, laser, powermeter, marker, ... and attach them to SiriusEditorControl.
- Examples: https://github.com/labspiral/sirius3/tree/main/demos
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
- See HISTORY.md
API documentation
| Product | Versions 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.
-
.NETFramework 4.8.1
- Microsoft.CodeAnalysis.CSharp (>= 4.8.0)
- Microsoft.CodeAnalysis.CSharp.Scripting (>= 4.8.0)
- Microsoft.CodeAnalysis.Scripting (>= 4.8.0)
- Microsoft.Extensions.Logging (>= 8.0.1)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.3)
- Microsoft.Extensions.Logging.Debug (>= 8.0.1)
- Newtonsoft.Json (>= 13.0.4)
- OpenTK (>= 3.3.3)
- OpenTK.GLControl (>= 3.3.3)
- OpenTK.GLWpfControl (>= 3.3.0)
- SpiralLab.Sirius3 (>= 1.8.1)
- System.IO.Compression (>= 4.3.0)
- System.Text.Encoding (>= 4.3.0)
-
net10.0-windows7.0
- Microsoft.CodeAnalysis.CSharp (>= 4.8.0)
- Microsoft.CodeAnalysis.CSharp.Scripting (>= 4.8.0)
- Microsoft.CodeAnalysis.Scripting (>= 4.8.0)
- Microsoft.Extensions.Logging (>= 10.0.7)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.7)
- Microsoft.Extensions.Logging.Debug (>= 10.0.7)
- Newtonsoft.Json (>= 13.0.4)
- OpenTK (>= 4.9.4)
- OpenTK.GLControl (>= 4.0.2)
- OpenTK.GLWpfControl (>= 4.3.3)
- OpenTK.Mathematics (>= 4.9.4)
- SpiralLab.Sirius3 (>= 1.8.1)
- WinForms.DataVisualization (>= 1.10.0)
-
net8.0-windows7.0
- Microsoft.CodeAnalysis.CSharp (>= 4.8.0)
- Microsoft.CodeAnalysis.CSharp.Scripting (>= 4.8.0)
- Microsoft.CodeAnalysis.Scripting (>= 4.8.0)
- Microsoft.Extensions.Logging (>= 8.0.1)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.3)
- Microsoft.Extensions.Logging.Debug (>= 8.0.1)
- Newtonsoft.Json (>= 13.0.4)
- OpenTK (>= 4.9.4)
- OpenTK.GLControl (>= 4.0.2)
- OpenTK.GLWpfControl (>= 4.3.3)
- OpenTK.Mathematics (>= 4.9.4)
- SpiralLab.Sirius3 (>= 1.8.1)
- WinForms.DataVisualization (>= 1.10.0)
-
net9.0-windows7.0
- Microsoft.CodeAnalysis.CSharp (>= 4.8.0)
- Microsoft.CodeAnalysis.CSharp.Scripting (>= 4.8.0)
- Microsoft.CodeAnalysis.Scripting (>= 4.8.0)
- Microsoft.Extensions.Logging (>= 9.0.15)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.15)
- Microsoft.Extensions.Logging.Debug (>= 9.0.15)
- Newtonsoft.Json (>= 13.0.4)
- OpenTK (>= 4.9.4)
- OpenTK.GLControl (>= 4.0.2)
- OpenTK.GLWpfControl (>= 4.3.3)
- OpenTK.Mathematics (>= 4.9.4)
- SpiralLab.Sirius3 (>= 1.8.1)
- WinForms.DataVisualization (>= 1.10.0)
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