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(Jump) Delay
    • MoF (Marking on the Fly), 2nd head, 3D
    • 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 and Gerber files
    • Barcodes: QR, DataMatrix, PDF417 and more
    • 3D Mesh Format like as STL, OBJ, PLY
  • Document ans 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

  • 3D-printer (Additive Manufacturing) features: slicer integration and contour extraction
  • Combine to use multiple hatch patterns with path optimizer
  • Each property system by scanner pen and layer pen
  • Various rendering modes (per-vertex, Z-depth, etc.)
  • Fastest rendering speed with updated shader engine
  • Switchable camera: orthographic / perspective
  • Multi-page documents
  • Built-in wafer, substrate editor
  • Gerber file importer
  • Available at multi-platform for net framework 4.8.1, net8.0, net9.0 and net10.0
Large amount of data are can be rendered higher speed by GPU acceleration
Built-in Gerber File Importer
Built-in 3D Mesh Importer (also. Slicer and Hatcher)

Multiple Hatch Patterns and Pen Configurations are Can be Combined.

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 controls

Easy to update library files by NuGet package manager.

Support (c)SCANLAB XL-SCAN product by syncAXIS
Laser On The Fly Processing for Large Field Area with Combined Stage and Scanner Motion by syncAXIS

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)

Dependencies

  • SCANLAB
    • RTC4: v2023.11.02
    • RTC5: v2024.09.27
    • RTC6: 2026.3.31 v1.24.0
    • syncAXIS: 2023.03.09 v1.8.2
  • .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

#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);
    }
}

License

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

위로 스크롤