static void Main(string[] args) { SpiralLab.Core.Initialize(); #region initialize RTC //var rtc = new RtcVirtual(0); //create Rtc for dummy //var rtc = new Rtc5(0); //create Rtc5 controller //var rtc = new Rtc6(0); //create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.100", "255.255.255.0"); //실험적인 상태 (Scanlab Rtc6 Ethernet 제어기) var rtc = new Rtc6SyncAxis(0, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "syncaxis", "syncAXISConfig.xml")); //실험적인 상태 (Scanlab XLSCAN 솔류션) rtc.Initialize(0, 0, string.Empty); rtc.CtlFrequency(50 * 1000, 2); // laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); // default jump and mark speed : 100mm/s #endregion #region initialize Laser (virtual) ILaser laser = new LaserVirtual(0, "virtual", 20); /// 최대 출력 20W 의 가상 레이저 소스 생성 #endregion ConsoleKeyInfo key; do { Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (http://spirallab.co.kr)"); Console.WriteLine(""); Console.WriteLine("'F1' : draw rectangle 2D with scanner only"); Console.WriteLine("'F2' : draw rectangle 2D with stage only"); Console.WriteLine("'F3' : draw rectangle 2D with scanner and stage"); Console.WriteLine("'M' : move stage x and y"); Console.WriteLine("'Q' : quit"); Console.WriteLine(""); Console.Write("select your target : "); key = Console.ReadKey(false); if (key.Key == ConsoleKey.Q) { break; } Console.WriteLine(""); switch (key.Key) { case ConsoleKey.F1: Draw(rtc, laser, MotionType.ScannerOnly); break; case ConsoleKey.F2: Draw(rtc, laser, MotionType.StageOnly); break; case ConsoleKey.F3: Draw(rtc, laser, MotionType.StageAndScanner); break; case ConsoleKey.M: rtc.StageMoveSpeed = 10; rtc.StageMoveTimeOut = 5; rtc.CtlMove(MotionType.StageOnly, 10, 10); break; } } while (true); }
private bool MyInitialize() { #region 사용자의 초기화 코드 예제 bool success = true; success &= SpiralLab.Core.Initialize(); var doc = new DocumentDefault(); this.Document = doc; //var rtc = new RtcVirtual(0); //create Rtc for dummy var rtc = new Rtc5(0); //create Rtc5 controller //var rtc = new Rtc6(0); //create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.100", "255.255.255.0"); //실험적인 상태 (Scanlab Rtc6 Ethernet 제어기) //var rtc = new Rtc6SyncAxis(0, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "syncAxis", "syncAXISConfig.xml")); //실험적인 상태 (Scanlab XLSCAN 솔류션) float fov = 60.0f; ///scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; // k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); success &= rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); // 스캐너 보정 파일 지정 : correction file success &= rtc.CtlFrequency(50 * 1000, 2); // laser frequency : 50KHz, pulse width : 2usec success &= rtc.CtlSpeed(100, 100); // default jump and mark speed : 100mm/s success &= rtc.CtlDelay(10, 100, 200, 200, 0); // scanner and laser delays this.Rtc = rtc; var laser = new LaserVirtual(0, "virtual", 20.0f); laser.Rtc = rtc; success &= laser.Initialize(); success &= laser.CtlPower(10); this.Laser = laser; var marker = new MarkerDefault(0); this.Marker = marker; #endregion return(success); }
private void MainForm_Load(object sender, EventArgs e) { var xmlConfigFileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "syncAxis", "syncAXISConfig.xml"); if (!File.Exists(xmlConfigFileName)) { MessageBox.Show($"XML configuration file is not founded : {xmlConfigFileName}"); return; } #region SyncAxis 초기화 bool success = true; var rtc = new Rtc6SyncAxis(0, xmlConfigFileName); rtc.Name = "SyncAxis"; success &= rtc.Initialize(0, LaserMode.None, string.Empty); success &= rtc.CtlFrequency(50 * 1000, 2); // laser frequency : 50KHz, pulse width : 2usec success &= rtc.CtlSpeed(100, 100); // default scanner jump and mark speed : 100mm/s //스테이지 이동시 기본 값 설정 rtc.StageMoveSpeed = 10; rtc.StageMoveTimeOut = 5; #endregion #region 레이저 소스 초기화 var laser = new LaserVirtual(0, "virtual", 20); // virtual laser source with max 20W power (최대 출력 20W 의 가상 레이저 소스 생성) //var laser = new IPGYLP(0, "IPG YLP", 1, 20); //var laser = new JPTTypeE(0, "JPT Type E", 1, 20); //var laser = new SPIG4(0, "SPI G3/4", 1, 20); //var laser = new PhotonicsIndustryDX(0, "PI", 1, 20); //var laser = new AdvancedOptoWaveFotia(0, "Fotia", 1, 20); //var laser = new CoherentAviaLX(0, "Avia LX", 1, 20); laser.Rtc = rtc; laser.Initialize(); laser.CtlPower(2); #endregion #region 마커 지정 var marker = new MarkerDefault(0, " SyncAxis Marker "); #endregion #region RTC 확장 IO this.RtcExt1DInput = new RtcDInput(rtc, 0, "DIN RTC EXT1"); this.RtcExt1DInput.Initialize(); this.RtcExt1DOutput = new RtcDOutputExt1(rtc, 0, "DOUT RTC EXT1"); this.RtcExt1DOutput.Initialize(); this.RtcExt2DOutput = new RtcDOutputExt2(rtc, 0, "DIN RTC EXT2"); this.RtcExt2DOutput.Initialize(); this.siriusEditorForm1.RtcExtension1Input = this.RtcExt1DInput; this.siriusEditorForm1.RtcExtension1Output = this.RtcExt1DOutput; this.siriusEditorForm1.RtcExtension2Output = this.RtcExt2DOutput; #endregion this.Rtc = rtc; this.siriusEditorForm1.Rtc = rtc; this.siriusEditorForm1.Laser = laser; this.siriusEditorForm1.Marker = marker; }
public MainForm() { InitializeComponent(); SpiralLab.Core.Initialize(); // 신규 문서 생성 var doc = new DocumentDefault(); // 문서 지정 siriusEditorForm1.Document = doc; // 기본 펜 생성후 문서에 추가 var pen = new CustomPen(); doc.Action.ActEntityAdd(pen); // 내부 데이타(IDocument) 가 변경될경우 이를 이벤트 통지를 받는 핸들러 등록 siriusEditorForm1.OnDocumentSourceChanged += SiriusEditorForm1_OnDocumentSourceChanged; #region RTC 초기화 //var rtc = new RtcVirtual(0); //create Rtc for dummy var rtc = new Rtc5(0); //create Rtc5 controller //var rtc = new Rtc6(0); //create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.100", "255.255.255.0"); //실험적인 상태 (Scanlab Rtc6 Ethernet 제어기) //var rtc = new Rtc6SyncAxis(0, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "syncAxis", "syncAXISConfig.xml")); //실험적인 상태 (Scanlab XLSCAN 솔류션) float fov = 60.0f; ///scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; // k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); // 스캐너 보정 파일 지정 : correction file rtc.CtlFrequency(50 * 1000, 2); // laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); // default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); // scanner and laser delays #endregion this.siriusEditorForm1.Rtc = rtc; #region 레이저 소스 초기화 var laser = new LaserVirtual(0, "virtual", 20); // virtual laser source with max 20W power (최대 출력 20W 의 가상 레이저 소스 생성) //var laser = new IPGYLP(0, "IPG YLP", 1, 20); //var laser = new JPTTypeE(0, "JPT Type E", 1, 20); //var laser = new SPIG4(0, "SPI G3/4", 1, 20); //var laser = new PhotonicsIndustryDX(0, "PI", 1, 20); //var laser = new AdvancedOptoWaveFotia(0, "Fotia", 1, 20); //var laser = new CoherentAviaLX(0, "Avia LX", 1, 20); laser.Rtc = rtc; laser.Initialize(); laser.CtlPower(2); #endregion this.siriusEditorForm1.Laser = laser; #region 마커 지정 var marker = new MarkerDefault(0); #endregion this.siriusEditorForm1.Marker = marker; this.siriusEditorForm1.OnDocumentPenNew += SiriusEditorForm1_OnDocumentPenNew; }
static void Main(string[] args) { SpiralLab.Core.Initialize(); #region initialize RTC IRtc rtc = new RtcVirtual(0); ///가상 rtc 제어기 생성 //IRtc rtc = new Rtc5(0); ///rtc 5 제어기 생성 double fov = 60.0; /// scanner field of view : 60mm double kfactor = Math.Pow(2, 20) / fov; /// k factor (bits/mm) = 2^20 / fov rtc.Initialize(kfactor, LaserMode.Yag1, "cor_1to1.ct5"); /// 스캐너 보정 파일 지정 : correction file rtc.CtlFrequency(50 * 1000, 2); /// laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); /// default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); /// scanner and laser delays #endregion #region initialize Laser (virtial) ILaser laser = new LaserVirtual(0, "virtual", 20); #endregion ConsoleKeyInfo key; do { Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (https://sepwind.blogspot.com)"); Console.WriteLine(""); Console.WriteLine("'C' : draw circle"); Console.WriteLine("'R' : draw rectangle"); Console.WriteLine("'D' : draw circle with dots"); Console.WriteLine("'Q' : quit"); Console.WriteLine(""); Console.Write("select your target : "); key = Console.ReadKey(false); if (key.Key == ConsoleKey.Q) { break; } Console.WriteLine("\r\nWARNING !!! LASER IS BUSY ..."); var timer = new Stopwatch(); switch (key.Key) { case ConsoleKey.C: DrawCircle(laser, rtc, 10); break; case ConsoleKey.R: DrawRectangle(laser, rtc, 10, 10); break; case ConsoleKey.D: DrawCircleWithDots(laser, rtc, 10, 1.0); break; } rtc.ListExecute(true); Console.WriteLine($"processing time = {timer.ElapsedMilliseconds/1000.0:F3}s"); } while (true); rtc.Dispose(); }
public FormMain() { InitializeComponent(); SpiralLab.Core.Initialize(); var doc = new DocumentDefault(); siriusEditorForm1.Document = doc; siriusViewerForm1.Document = doc; /// 소스 문서(IDocument) 가 변경될경우 다른 멀티 뷰에 이를 통지하는 이벤트 핸들러 등록 siriusEditorForm1.OnDocumentSourceChanged += SiriusEditorForm1_OnDocumentSourceChanged; #region RTC 초기화 var rtc = new RtcVirtual(0); ///create Rtc for dummy //var rtc = new Rtc5(0); ///create Rtc5 controller //var rtc = new Rtc6(0); ///create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.200"); ///create Rtc6 ethernet controller //var rtc = new Rtc53D(0); ///create Rtc5 + 3D option controller //var rtc = new Rtc63D(0); ///create Rtc5 + 3D option controller //var rtc = new Rtc5DualHead(0); ///create Rtc5 + Dual head option controller //var rtc = new Rtc5MOTF(0); ///create Rtc5 + MOTF option controller //var rtc = new Rtc6MOTF(0); ///create Rtc6 + MOTF option controller //var rtc = new Rtc6SyncAxis(0); //var rtc = new Rtc6SyncAxis(0, "syncAXISConfig.xml"); ///create Rtc6 + XL-SCAN (ACS+SYNCAXIS) option controller float fov = 60.0f; /// scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; /// k factor (bits/mm) = 2^20 / fov rtc.Initialize(kfactor, LaserMode.Yag1, "cor_1to1.ct5"); /// 스캐너 보정 파일 지정 : correction file rtc.CtlFrequency(50 * 1000, 2); /// laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); /// default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); /// scanner and laser delays #endregion this.siriusEditorForm1.Rtc = rtc; #region 레이저 소스 초기화 ILaser laser = new LaserVirtual(0, "virtual", 20.0f); laser.Initialize(); var pen = new Pen { Power = 10.0f, }; laser.CtlPower(rtc, pen); #endregion this.siriusEditorForm1.Laser = laser; #region 마커 지정 var marker = new MarkerDefault(0); #endregion this.siriusEditorForm1.Marker = marker; }
public MainForm() { InitializeComponent(); //라이브러리 초기화 SpiralLab.Core.Initialize(); //문서 생성 var doc = new DocumentDefault(); siriusEditorForm1.Document = doc; // 내부 데이타(IDocument) 가 변경될경우 이를 이벤트 통지를 받는 핸들러 등록 siriusEditorForm1.OnDocumentSourceChanged += SiriusEditorForm1_OnDocumentSourceChanged; #region RTC 초기화 //var rtc = new RtcVirtual(0); //create Rtc for dummy var rtc = new Rtc5(0); //create Rtc5 controller //var rtc = new Rtc6(0); //create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.100", "255.255.255.0"); //실험적인 상태 (Scanlab Rtc6 Ethernet 제어기) //var rtc = new Rtc6SyncAxis(0, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "configuration", "syncAXISConfig.xml")); //실험적인 상태 (Scanlab XLSCAN 솔류션) float fov = 60.0f; // scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; // k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); // 스캐너 보정 파일 지정 : correction file rtc.CtlFrequency(50 * 1000, 2); // laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); // default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); // scanner and laser delays var rtcMOTF = rtc as IRtcMOTF; //엔코더 스케일 설정 (단축 MOTF) rtcMOTF.EncXCountsPerMm = 2000; //단위 mm 이동시 발생되는 엔코더 펄스의 수 rtcMOTF.EncYCountsPerMm = 0; #endregion this.siriusEditorForm1.Rtc = rtc; #region 레이저 소스 초기화 var laser = new LaserVirtual(0, "virtual", 20.0f); laser.Rtc = rtc; laser.Initialize(); laser.CtlPower(10); #endregion this.siriusEditorForm1.Laser = laser; #region 마커 지정 var marker = new MotfMarker(0); #endregion this.siriusEditorForm1.Marker = marker; timer1.Enabled = true; }
public MainWindow() { InitializeComponent(); SpiralLab.Core.Initialize(); var siriusEditorForm = (siriusEditor.Child as SiriusEditorForm); //펜 집합 기능 사용 siriusEditorForm.EnablePens = true; var doc = new DocumentDefault(); siriusEditorForm.Document = doc; #region RTC 초기화 //var rtc = new RtcVirtual(0); //create Rtc for dummy (가상 RTC 카드) var rtc = new Rtc5(0); //create Rtc5 controller //var rtc = new Rtc6(0); //create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.100", "255.255.255.0"); //Rtc6 Ethernet //var rtc = new Rtc6SyncAxis(0, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "syncAxis", "syncAXISConfig.xml")); //Scanlab XLSCAN float fov = 60.0f; ///scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; // k factor (bits/mm) = 2^20 / fov var correctionFile = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); // 스캐너 보정 파일 지정 : correction file rtc.CtlFrequency(50 * 1000, 2); // laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); // default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); // scanner and laser delays #endregion siriusEditorForm.Rtc = rtc; #region initialize Laser (virtual) var laser = new LaserVirtual(0, "virtual", 20); // virtual laser source with max 20W power (최대 출력 20W 의 가상 레이저 소스 생성) //var laser = new IPGYLP(0, "IPG YLP", 1, 20); //var laser = new JPTTypeE(0, "JPT Type E", 1, 20); //var laser = new SPIG4(0, "SPI G3/4", 1, 20); //var laser = new PhotonicsIndustryDX(0, "PI", 1, 20); //var laser = new AdvancedOptoWaveFotia(0, "Fotia", 1, 20); //var laser = new CoherentAviaLX(0, "Avia LX", 1, 20); laser.Rtc = rtc; laser.Initialize(); laser.CtlPower(2); #endregion siriusEditorForm.Laser = laser; #region 마커 지정 var marker = new MarkerDefault(0); #endregion siriusEditorForm.Marker = marker; }
static void Main(string[] args) { SpiralLab.Core.Initialize(); #region create entities var doc1 = new DocumentDefault("Unnamed"); var layer = new Layer("default"); doc1.Layers.Add(layer); layer.Add(new Line(0, 10, 20, 20)); layer.Add(new Circle(0, 0, 10)); layer.Add(new Spiral(-20.0f, 0.0f, 0.5f, 2.0f, 5, true)); #endregion Console.WriteLine("press any key to save ..."); Console.ReadKey(false); string filename = "default.sirius"; var ds = new DocumentSerializer(); ds.Save(doc1, filename); Console.WriteLine("press any key to open ..."); Console.ReadKey(false); var doc2 = DocumentSerializer.OpenSirius(filename); Console.WriteLine("press any key to rtc initialize ..."); Console.ReadKey(false); #region initialize RTC IRtc rtc = new RtcVirtual(0); ///가상 rtc 제어기 생성 //IRtc rtc = new Rtc5(0); ///rtc 5 제어기 생성 double fov = 60.0; /// scanner field of view : 60mm double kfactor = Math.Pow(2, 20) / fov; /// k factor (bits/mm) = 2^20 / fov rtc.Initialize(kfactor, LaserMode.Yag1, "cor_1to1.ct5"); /// 스캐너 보정 파일 지정 : correction file rtc.CtlFrequency(50 * 1000, 2); /// laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); /// default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); /// scanner and laser delays #endregion #region initialize Laser (virtial) ILaser laser = new LaserVirtual(0, "virtual", 20); #endregion Console.WriteLine("press any key to laser processing ...WARNING !!! LASER EMISSION"); Console.ReadKey(false); DoBegin(laser, rtc, doc2); Console.WriteLine("press any key to terminate program"); Console.ReadKey(false); }
public FormMain() { InitializeComponent(); SpiralLab.Core.Initialize(); var doc = new DocumentDefault(); siriusEditorForm1.Document = doc; siriusViewerForm1.Document = doc; /// 소스 문서(IDocument) 가 변경될경우 다른 멀티 뷰에 이를 통지하는 이벤트 핸들러 등록 siriusEditorForm1.OnDocumentSourceChanged += SiriusEditorForm1_OnDocumentSourceChanged; siriusViewerForm1.OnDocumentSourceChanged += SiriusEditorForm1_OnDocumentSourceChanged; #region RTC 초기화 //IRtc rtc = new RtcVirtual(0); ///가상 rtc 제어기 생성 IRtc rtc = new RtcGCode(0, "output.txt"); ///가상 rtc 제어기 생성 //IRtc rtc = new Rtc5(0); ///rtc 5 제어기 생성 double fov = 60.0; /// scanner field of view : 60mm double kfactor = Math.Pow(2, 20) / fov; /// k factor (bits/mm) = 2^20 / fov rtc.Initialize(kfactor, LaserMode.Yag1, "cor_1to1.ct5"); /// 스캐너 보정 파일 지정 : correction file rtc.CtlFrequency(50 * 1000, 2); /// laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); /// default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); /// scanner and laser delays #endregion this.siriusEditorForm1.Rtc = rtc; #region 레이저 소스 초기화 ILaser laser = new LaserVirtual(0, "virtual", 20.0f); laser.Initialize(); laser.CtlPower(rtc, 8.0f); #endregion this.siriusEditorForm1.Laser = laser; #region 마커 지정 var marker = new MarkerDefault(0); #endregion this.siriusEditorForm1.Marker = marker; }
static void Main(string[] args) { SpiralLab.Core.Initialize(); #region initialize RTC //var rtc = new RtcVirtual(0); //create Rtc for dummy var rtc = new Rtc5(0); //create Rtc5 controller //var rtc = new Rtc6(0); //create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.100", "255.255.255.0"); //실험적인 상태 (Scanlab Rtc6 Ethernet 제어기) float fov = 60.0f; // scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; // k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); // 스캐너 보정 파일 지정 : correction file rtc.CtlFrequency(50 * 1000, 2); // laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); // default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); // scanner and laser delays var rtcMOTF = rtc as IRtcMOTF; //엔코더 스케일 설정 rtcMOTF.EncXCountsPerMm = 67; rtcMOTF.EncYCountsPerMm = 67; #endregion #region initialize Laser (virtual) var laser = new LaserVirtual(0, "virtual", 20); // virtual laser source with max 20W power (최대 출력 20W 의 가상 레이저 소스 생성) //var laser = new IPGYLP(0, "IPG YLP", 1, 20); //var laser = new JPTTypeE(0, "JPT Type E", 1, 20); //var laser = new SPIG4(0, "SPI G3/4", 1, 20); //var laser = new PhotonicsIndustryDX(0, "PI", 1, 20); //var laser = new AdvancedOptoWaveFotia(0, "Fotia", 1, 20); //var laser = new CoherentAviaLX(0, "Avia LX", 1, 20); laser.Rtc = rtc; laser.Initialize(); laser.CtlPower(2); #endregion ConsoleKeyInfo key; do { Console.WriteLine($"{Environment.NewLine}"); Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (http://spirallab.co.kr)"); Console.WriteLine($"{Environment.NewLine}"); Console.WriteLine("'R' : encoder reset"); Console.WriteLine("'N' : MOTF With Follow Only"); Console.WriteLine("'C' : MOTF With Circle And Wait Encoder"); Console.WriteLine("'Q' : quit"); Console.WriteLine($"{Environment.NewLine}"); Console.Write("select your target : "); key = Console.ReadKey(false); if (key.Key == ConsoleKey.Q) { break; } Console.WriteLine($"{Environment.NewLine}"); Console.WriteLine("WARNING !!! LASER IS BUSY ..."); var timer = Stopwatch.StartNew(); switch (key.Key) { case ConsoleKey.R: // X,Y 엔코더값을 0,0 으로 리셋합니다. rtcMOTF.CtlEncoderReset(); // 가상 엔코더를 100mm/s 으로 동작시킵니다. //rtcMOTF.CtlEncoderSpeed(100, 100); break; case ConsoleKey.N: MotfWithFollowOnly(laser, rtc, false); break; case ConsoleKey.C: MotfWithCircleAndWaitEncoder(laser, rtc, false); break; } Console.WriteLine($"Processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s"); } while (true); rtc.Dispose(); }
static void Main(string[] args) { SpiralLab.Core.Initialize(); #region create entities ///신규 문서(Document) 생성 var doc1 = new DocumentDefault("Unnamed"); /// 레이어 생성 var layer = new Layer("default"); /// 레이어를 문서해 추가 doc1.Layers.Add(layer); ///레이어에 선 형상 개체(Entity) 생성및 추가 layer.Add(new Line(0, 10, 20, 20)); ///레이어에 원 형상 개체(Entity) 생성및 추가 layer.Add(new Circle(0, 0, 10)); ///레이어에 나선 형상 개체(Entity) 생성및 추가 layer.Add(new Spiral(-20.0f, 0.0f, 0.5f, 2.0f, 5, true)); #endregion Console.WriteLine("press any key to save ..."); Console.ReadKey(false); string filename = "default.sirius"; /// 문서(Document) 저장하기 var ds = new DocumentSerializer(); ds.Save(doc1, filename); Console.WriteLine("press any key to open ..."); Console.ReadKey(false); /// 문서(Document) 불러오기 var doc2 = DocumentSerializer.OpenSirius(filename); Console.WriteLine("press any key to rtc initialize ..."); Console.ReadKey(false); #region initialize RTC var rtc = new RtcVirtual(0, "output2.txt"); //var rtc = new Rtc5(0); ///create Rtc5 controller //var rtc = new Rtc6(0); ///create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.200"); ///create Rtc6 ethernet controller //var rtc = new Rtc53D(0); ///create Rtc5 + 3D option controller //var rtc = new Rtc63D(0); ///create Rtc5 + 3D option controller //var rtc = new Rtc5DualHead(0); ///create Rtc5 + Dual head option controller //var rtc = new Rtc5MOTF(0); ///create Rtc5 + MOTF option controller //var rtc = new Rtc6MOTF(0); ///create Rtc6 + MOTF option controller //var rtc = new Rtc6SyncAxis(0); //var rtc = new Rtc6SyncAxis(0, "syncAXISConfig.xml"); ///create Rtc6 + XL-SCAN (ACS+SYNCAXIS) option controller float fov = 60.0f; /// scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; /// k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); /// 스캐너 보정 파일 지정 : correction file rtc.CtlFrequency(50 * 1000, 2); /// laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); /// default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); /// scanner and laser delays #endregion #region initialize Laser (virtial) ILaser laser = new LaserVirtual(0, "virtual", 20); #endregion Console.WriteLine("press any key to laser processing ...WARNING !!! LASER EMISSION"); Console.ReadKey(false); DoBegin(laser, rtc, doc2); Console.WriteLine("press any key to terminate program"); Console.ReadKey(false); }
static void Main(string[] args) { SpiralLab.Core.Initialize(); #region initialize RTC //var rtc = new RtcVirtual(0); ///create Rtc for dummy //var rtc = new Rtc5(0); ///create Rtc5 controller //var rtc = new Rtc6(0); ///create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.200"); ///create Rtc6 ethernet controller //var rtc = new Rtc53D(0); ///create Rtc5 + 3D option controller //var rtc = new Rtc63D(0); ///create Rtc5 + 3D option controller //var rtc = new Rtc5DualHead(0); ///create Rtc5 + Dual head option controller //var rtc = new Rtc5MOTF(0); ///create Rtc5 + MOTF option controller //var rtc = new Rtc6MOTF(0); ///create Rtc6 + MOTF option controller //var rtc = new Rtc6SyncAxis(0); var rtc = new Rtc6SyncAxis(0, "syncAXISConfig.xml"); ///create Rtc6 + XL-SCAN (ACS+SYNCAXIS) option controller /// 스캐너 보정파일(ct5)은 xml 에서 설정됨 rtc.Initialize(0.0f, LaserMode.Yag1, string.Empty); rtc.CtlFrequency(50 * 1000, 2); /// laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); /// default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); /// scanner and laser delays #endregion #region initialize Laser (virtial) ILaser laser = new LaserVirtual(0, "virtual", 20); #endregion ConsoleKeyInfo key; do { Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (https://sepwind.blogspot.com)"); Console.WriteLine(""); Console.WriteLine("'C' : draw circle (scanner only)"); Console.WriteLine("'R' : draw rectangle (stage only)"); Console.WriteLine("'L' : draw circle with lines (stage + scanner)"); Console.WriteLine("'Q' : quit"); Console.WriteLine(""); Console.Write("select your target : "); key = Console.ReadKey(false); if (key.Key == ConsoleKey.Q) { break; } Console.WriteLine("\r\nWARNING !!! LASER IS BUSY ..."); var timer = Stopwatch.StartNew(); switch (key.Key) { case ConsoleKey.C: DrawCircle(laser, rtc, 10); break; case ConsoleKey.R: DrawRectangle(laser, rtc, 10, 10); break; case ConsoleKey.L: DrawCircleWithLines(laser, rtc, 10); break; } Console.WriteLine($"processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s"); } while (true); rtc.Dispose(); }
static void Main(string[] args) { SpiralLab.Core.Initialize(); #region initialize RTC var rtc = new RtcVirtual(0); //var rtc = new Rtc5(0); ///create Rtc5 controller //var rtc = new Rtc6(0); ///create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.200"); ///create Rtc6 ethernet controller //var rtc = new Rtc53D(0); ///create Rtc5 + 3D option controller //var rtc = new Rtc63D(0); ///create Rtc5 + 3D option controller //var rtc = new Rtc5DualHead(0); ///create Rtc5 + Dual head option controller //var rtc = new Rtc5MOTF(0); ///create Rtc5 + MOTF option controller //var rtc = new Rtc6MOTF(0); ///create Rtc6 + MOTF option controller //var rtc = new Rtc6SyncAxis(0); //var rtc = new Rtc6SyncAxis(0, "syncAXISConfig.xml"); ///create Rtc6 + XL-SCAN (ACS+SYNCAXIS) option controller float fov = 60.0f; /// scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; /// k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); ///default correction file rtc.CtlFrequency(50 * 1000, 2); ///laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); /// default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); ///scanner and laser delays #endregion #region initialize Laser (virtial) ILaser laser = new LaserVirtual(0, "virtual", 20); #endregion #region create entities /// 신규 문서 생성 var doc = new DocumentDefault("Unnamed"); /// 레이어 생성후 문서에 추가 var layer = new Layer("default"); doc.Layers.Add(layer); ///첫번째 그룹 객체 생성 var group1 = new Group(); group1.Add( new Pen() /// 그룹내에 펜 개체 생성하여 추가 { Frequency = 100 * 1000, PulseWidth = 2, LaserOnDelay = 0, LaserOffDelay = 0, ScannerJumpDelay = 100, ScannerMarkDelay = 200, ScannerPolygonDelay = 0, JumpSpeed = 500, MarkSpeed = 500, } ); /// 그룹내에 선 개체 생성하여 추가 group1.Add(new Line(0, 0, 10, 20)); /// 그룹내에 원 개체 생성하여 추가 group1.Add(new Circle(0, 0, 10)); /// 그룹내에 나선 개체 생성하여 추가 group1.Add(new Spiral(-20.0f, 0.0f, 0.5f, 2.0f, 5, true)); /// 그룹의 반복 회수 설정 group1.Repeat = 10; /// 10회 가공 /// 반복 가공시 개체들을 반복회수(10) 를 먼저 실시 group1.RepeatMode = GroupRepeatMode.EntityFirst; /// 반복 가공시 역 방향 가공할지 여부 group1.IsReverseMark = false; /// 두번째 그룹 객체 생성 var group2 = new Group(); group2.Add( new Pen() /// 그룹내에 펜 개체 생성하여 추가 { Frequency = 50 * 1000, PulseWidth = 2, LaserOnDelay = 0, LaserOffDelay = 0, ScannerJumpDelay = 100, ScannerMarkDelay = 200, ScannerPolygonDelay = 0, JumpSpeed = 500, MarkSpeed = 500, } ); group1.Add(new Line(0, 0, 5, 10)); group1.Add(new Circle(0, 0, 50)); group1.Add(new Spiral(-10.0f, 0.0f, 0.5f, 2.0f, 10, true)); group1.Repeat = 20; /// 20 회 가공 layer.Add(group2); /// 해당 문서 데이타를 지정된 파일에 저장 var ds = new DocumentSerializer(); ds.Save(doc, "test.sirius"); #endregion ConsoleKeyInfo key; do { Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected](https://sepwind.blogspot.com)"); Console.WriteLine(""); Console.WriteLine("'D' : draw group entities with pen"); Console.WriteLine("'Q' : quit"); Console.WriteLine(""); Console.Write("select your target : "); key = Console.ReadKey(false); if (key.Key == ConsoleKey.Q) { break; } switch (key.Key) { case ConsoleKey.D: Console.WriteLine("\r\nWARNING !!! LASER IS BUSY ..."); var timer = Stopwatch.StartNew(); if (DrawForFieldCorrection(laser, rtc, doc)) { rtc.ListExecute(true); Console.WriteLine($"processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s"); } break; } } while (true); rtc.Dispose(); }
static void Main(string[] args) { SpiralLab.Core.Initialize(); #region initialize RTC //var rtc = new RtcVirtual(0); ///create Rtc for dummy //var rtc = new Rtc5(0); ///create Rtc5 controller //var rtc = new Rtc6(0); ///create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.200"); ///create Rtc6 ethernet controller //var rtc = new Rtc53D(0); ///create Rtc5 + 3D option controller //var rtc = new Rtc63D(0); ///create Rtc5 + 3D option controller var rtc = new Rtc5DualHead(0); ///create Rtc5 + Dual head option controller //var rtc = new Rtc5MOTF(0); ///create Rtc5 + MOTF option controller //var rtc = new Rtc6MOTF(0); ///create Rtc6 + MOTF option controller //var rtc = new Rtc6SyncAxis(0, "syncAXISConfig.xml"); ///create Rtc6 + XL-SCAN (ACS+SYNCAXIS) option controller float fov = 60.0f; /// scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; /// k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); /// 스캐너 보정 파일 지정 : correction file /// secondary 헤드용 보정 테이블 로드 rtc.CtlLoadCorrectionFile(CorrectionTableIndex.Table2, correctionFile); /// primary 및 secondary 헤드에 각각 보정 테이블 선택 rtc.CtlSelectCorrection(CorrectionTableIndex.Table1, CorrectionTableIndex.Table2); rtc.CtlFrequency(50 * 1000, 2); /// laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); /// default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); /// scanner and laser delays var rtcDualHead = rtc as Rtc5DualHead; /// offset in primary scanner /// 마스터 헤드의 오프셋을 설정 rtcDualHead.CtlHeadOffset(ScannerHead.Primary, new Offset(10, 0, 0)); /// offset in secondary scanner /// 슬레이브 헤드의 오프셋을 설정 rtcDualHead.CtlHeadOffset(ScannerHead.Secondary, new Offset(-10, 0, 0)); #endregion #region initialize Laser (virtial) ILaser laser = new LaserVirtual(0, "virtual", 20); #endregion ConsoleKeyInfo key; do { Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (https://sepwind.blogspot.com)"); Console.WriteLine(""); Console.WriteLine("'D' : show dialog"); Console.WriteLine("'C' : draw circle"); Console.WriteLine("'Q' : quit"); Console.WriteLine(""); Console.Write("select your target : "); key = Console.ReadKey(false); if (key.Key == ConsoleKey.Q) { break; } Console.WriteLine("\r\nWARNING !!! LASER IS BUSY ..."); var timer = Stopwatch.StartNew(); switch (key.Key) { case ConsoleKey.R: rtc.CtlReset(); break; case ConsoleKey.D: rtc.Form.Show(); break; case ConsoleKey.C: DrawCircle(laser, rtc); break; } Console.WriteLine($"processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s"); } while (true); rtc.Dispose(); }
static void Main(string[] args) { SpiralLab.Core.Initialize(); #region initialize RTC //var rtc = new RtcVirtual(0); //create Rtc for dummy var rtc = new Rtc5(0); //create Rtc5 controller //var rtc = new Rtc6(0); //create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.100", "255.255.255.0"); //실험적인 상태 (Scanlab Rtc6 Ethernet 제어기) //var rtc = new Rtc6SyncAxis(0, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "syncAxis", "syncAXISConfig.xml")); //실험적인 상태 (Scanlab XLSCAN 솔류션) float fov = 60.0f; // scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; // k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); //default correction file rtc.CtlFrequency(50 * 1000, 2); //laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); // default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); //scanner and laser delays #endregion #region initialize Laser (virtual) var laser = new LaserVirtual(0, "virtual", 20); // virtual laser source with max 20W power (최대 출력 20W 의 가상 레이저 소스 생성) //var laser = new IPGYLP(0, "IPG YLP", 1, 20); //var laser = new JPTTypeE(0, "JPT Type E", 1, 20); //var laser = new SPIG4(0, "SPI G3/4", 1, 20); //var laser = new PhotonicsIndustryDX(0, "PI", 1, 20); //var laser = new AdvancedOptoWaveFotia(0, "Fotia", 1, 20); //var laser = new CoherentAviaLX(0, "Avia LX", 1, 20); laser.Rtc = rtc; laser.Initialize(); laser.CtlPower(2); #endregion #region create entity at 0,0 location var doc = new DocumentDefault("3x3 scanner field correction"); // 레이어 생성 var layer = new Layer("default"); // 나선 개체 추가 layer.Add(new Spiral(0.0f, 0.0f, 0.5f, 2.0f, 5, true)); // 레이어의 모든 개채들 내부 데이타 계산및 갱신 layer.Regen(); // 문서에 레이어 추가 doc.Layers.Add(layer); // 문서 저장 DocumentSerializer.Save(doc, "test.sirius"); #endregion ConsoleKeyInfo key; do { Console.WriteLine($"{Environment.NewLine}"); Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (http://spirallab.co.kr)"); Console.WriteLine($"{Environment.NewLine}"); Console.WriteLine("'M' : draw entities by marker"); Console.WriteLine("'O' : draw entities by marker with offsets"); Console.WriteLine("'Q' : quit"); Console.WriteLine($"{Environment.NewLine}"); Console.Write("select your target : "); key = Console.ReadKey(false); if (key.Key == ConsoleKey.Q) { break; } Console.WriteLine($"{Environment.NewLine}"); switch (key.Key) { case ConsoleKey.M: Console.WriteLine("WARNING !!! LASER IS BUSY ..."); DrawByMarker(doc, rtc, laser); break; case ConsoleKey.O: Console.WriteLine("WARNING !!! LASER IS BUSY ..."); DrawByMarkerWithOffset(doc, rtc, laser); break; } } while (true); rtc.Dispose(); }
static void Main(string[] args) { SpiralLab.Core.Initialize(); #region initialize RTC //var rtc = new RtcVirtual(0); //create Rtc for dummy var rtc = new Rtc5(0); //create Rtc5 controller //var rtc = new Rtc6(0); //create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.100", "255.255.255.0"); //실험적인 상태 (Scanlab Rtc6 Ethernet 제어기) //var rtc = new Rtc6SyncAxis(0, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "syncAxis", "syncAXISConfig.xml")); //실험적인 상태 (Scanlab XLSCAN 솔류션) float fov = 60.0f; // scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; // k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); // 스캐너 보정 파일 지정 : correction file //signal level : if active low //var ctrlSignal = new Rtc5LaserControlSignal(); //ctrlSignal.Add(Rtc5LaserControlSignal.Bit.Laser12SignalLevelLow); //ctrlSignal.Add(Rtc5LaserControlSignal.Bit.LaserOnSignalLevelLow); //rtc.CtlLaserSignalLevel(ctrlSignal); rtc.CtlFrequency(50 * 1000, 2); // laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); // default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); // scanner and laser delays #endregion #region initialize Laser (virtual) var laser = new LaserVirtual(0, "virtual", 20); // virtual laser source with max 20W power (최대 출력 20W 의 가상 레이저 소스 생성) //var laser = new IPGYLP(0, "IPG YLP", 1, 20); //var laser = new JPTTypeE(0, "JPT Type E", 1, 20); //var laser = new SPIG4(0, "SPI G3/4", 1, 20); //var laser = new PhotonicsIndustryDX(0, "PI", 1, 20); //var laser = new AdvancedOptoWaveFotia(0, "Fotia", 1, 20); //var laser = new CoherentAviaLX(0, "Avia LX", 1, 20); laser.Rtc = rtc; laser.Initialize(); laser.CtlPower(2); #endregion ConsoleKeyInfo key; do { Console.WriteLine($"{Environment.NewLine}"); Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (http://spirallab.co.kr)"); Console.WriteLine($"{Environment.NewLine}"); Console.WriteLine("'R' : draw rectangle with rotate"); Console.WriteLine("'L' : draw lines with rotate"); Console.WriteLine("'F' : pop up laser source form"); Console.WriteLine("'Q' : quit"); Console.WriteLine(""); Console.Write("select your target : "); key = Console.ReadKey(false); if (key.Key == ConsoleKey.Q) { break; } Console.WriteLine($"{Environment.NewLine}"); Console.WriteLine("WARNING !!! LASER IS BUSY ..."); Console.WriteLine($"{Environment.NewLine}"); var timer = Stopwatch.StartNew(); switch (key.Key) { case ConsoleKey.R: // 회전하는 사각형 모양 가공 (가로 10, 세로 10 크기, 0 ~360 각도의 회전 형상) DrawRectangle(laser, rtc, 10, 10, 0, 360); break; case ConsoleKey.L: //회전하는 직선 모양 가공 DrawLinesWithRotate(laser, rtc, 0, 360); break; case ConsoleKey.F: SpiralLab.Sirius.Laser.LaserForm laerForm = new SpiralLab.Sirius.Laser.LaserForm(); laerForm.Laser = laser; laerForm.ShowDialog(); break; } Console.WriteLine($"Processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s"); } while (true); rtc.Dispose(); }
static void Main(string[] args) { SpiralLab.Core.Initialize(); #region initialize RTC IRtc rtc = new RtcVirtual(0); ///가상 rtc 제어기 생성 //IRtc rtc = new Rtc5(0); ///rtc 5 제어기 생성 double fov = 60.0; /// scanner field of view : 60mm double kfactor = Math.Pow(2, 20) / fov; /// k factor (bits/mm) = 2^20 / fov rtc.Initialize(kfactor, LaserMode.Yag1, "cor_1to1.ct5"); ///default correction file rtc.CtlFrequency(50 * 1000, 2); ///laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); /// default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); ///scanner and laser delays #endregion #region initialize Laser (virtial) ILaser laser = new LaserVirtual(0, "virtual", 20); #endregion #region create entities var doc = new DocumentDefault("Unnamed"); var layer = new Layer("default"); doc.Layers.Add(layer); ///첫번째 그룹 객체 생성 var group1 = new Group(); group1.Add( new Pen() { Frequency = 100 * 1000, PulseWidth = 2, LaserOnDelay = 0, LaserOffDelay = 0, ScannerJumpDelay = 100, ScannerMarkDelay = 200, ScannerPolygonDelay = 0, JumpSpeed = 500, MarkSpeed = 500, } ); group1.Add(new Line(0, 0, 10, 20)); group1.Add(new Circle(0, 0, 10)); group1.Add(new Spiral(-20.0f, 0.0f, 0.5f, 2.0f, 5, true)); group1.RepeatCount = 10; /// 10회 가공 /// 두번째 그룹 객체 생성 var group2 = new Group(); group2.Add( new Pen() { Frequency = 50 * 1000, PulseWidth = 2, LaserOnDelay = 0, LaserOffDelay = 0, ScannerJumpDelay = 100, ScannerMarkDelay = 200, ScannerPolygonDelay = 0, JumpSpeed = 100, MarkSpeed = 100, } ); group1.Add(new Line(0, 0, 5, 10)); group1.Add(new Circle(0, 0, 50)); group1.Add(new Spiral(-10.0f, 0.0f, 0.5f, 2.0f, 10, true)); group1.RepeatCount = 20; /// 20 회 가공 layer.Add(group2); var ds = new DocumentSerializer(); ds.Save(doc, "test.sirius"); #endregion ConsoleKeyInfo key; do { Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected](https://sepwind.blogspot.com)"); Console.WriteLine(""); Console.WriteLine("'D' : draw group entities with pen"); Console.WriteLine("'Q' : quit"); Console.WriteLine(""); Console.Write("select your target : "); key = Console.ReadKey(false); if (key.Key == ConsoleKey.Q) { break; } switch (key.Key) { case ConsoleKey.D: Console.WriteLine("\r\nWARNING !!! LASER IS BUSY ..."); var timer = new Stopwatch(); if (DrawForFieldCorrection(laser, rtc, doc)) { rtc.ListExecute(true); Console.WriteLine($"processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s"); } break; } } while (true); rtc.Dispose(); }
static void Main(string[] args) { SpiralLab.Core.Initialize(); #region initialize RTC //var rtc = new RtcVirtual(0); ///create Rtc for dummy //var rtc = new Rtc5(0); ///create Rtc5 controller //var rtc = new Rtc6(0); ///create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.200"); ///create Rtc6 ethernet controller var rtc = new Rtc53D(0); ///create Rtc5 + 3D option controller //var rtc = new Rtc63D(0); ///create Rtc5 + 3D option controller //var rtc = new Rtc5DualHead(0); ///create Rtc5 + Dual head option controller //var rtc = new Rtc5MOTF(0); ///create Rtc5 + MOTF option controller //var rtc = new Rtc6MOTF(0); ///create Rtc6 + MOTF option controller //var rtc = new Rtc6SyncAxis(0, "syncAXISConfig.xml"); ///create Rtc6 + XL-SCAN (ACS+SYNCAXIS) option controller float fov = 60.0f; /// scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; /// k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); /// 스캐너 보정 파일 지정 : correction file rtc.CtlFrequency(50 * 1000, 2); /// laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); /// default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); /// scanner and laser delays var rtc3D = rtc as IRtc3D; #endregion #region initialize Laser (virtial) ILaser laser = new LaserVirtual(0, "virtual", 20); #endregion ConsoleKeyInfo key; do { Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (https://sepwind.blogspot.com)"); Console.WriteLine("옵셋(Offset)은 스캐너의 초점이 해당 Z 위치로 이동되며, 이때 위치 보정을 위한 3D correction 파일이 적용된다."); Console.WriteLine("디포커스(Defocus)은 스캐너의 초점이 해당 Z 위치로 이동되나, 이때 위치 보정을 위한 3D correction 파일은 미 사용된다."); Console.WriteLine(""); Console.WriteLine("'A' : reset z offset"); Console.WriteLine("'B' : z offset to 1mm"); Console.WriteLine("'C' : z offset to -1mm"); Console.WriteLine("'D' : reset z defocus"); Console.WriteLine("'E' : z decocus to 1mm"); Console.WriteLine("'F' : z decocus to -1mm"); Console.WriteLine("'S' : show dialog"); Console.WriteLine("'Q' : quit"); Console.WriteLine(""); Console.Write("select your target : "); key = Console.ReadKey(false); if (key.Key == ConsoleKey.Q) { break; } Console.WriteLine("\r\nWARNING !!! LASER IS BUSY ..."); var timer = Stopwatch.StartNew(); switch (key.Key) { case ConsoleKey.A: /// z 축의 오프셋 값을 0으로 설정 rtc3D.CtlZOffset(0); break; case ConsoleKey.B: /// z 축의 오프셋 값을 1으로 설정 rtc3D.CtlZOffset(1.0f); break; case ConsoleKey.C: /// z 축의 오프셋 값을 -1으로 설정 rtc3D.CtlZOffset(-1.0f); break; case ConsoleKey.D: /// z 축의 defocus 값을 0으로 설정 rtc3D.CtlZDefocus(0); break; case ConsoleKey.E: /// z 축의 defocus 값을 1으로 설정 rtc3D.CtlZDefocus(1.0f); break; case ConsoleKey.F: /// z 축의 defocus 값을 -1으로 설정 rtc3D.CtlZDefocus(-1.0f); break; case ConsoleKey.S: /// IRtc3D 의 폼 대화상자를 출력 rtc.Form.Show(); break; case ConsoleKey.Q: DrawCircleWith3D(laser, rtc, rtc3D); break; } Console.WriteLine($"processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s"); } while (true); rtc.Dispose(); }
static void Main2(string[] args) { SpiralLab.Core.Initialize(); #region initialize RTC //var rtc = new RtcVirtual(0); //create Rtc for dummy var rtc = new Rtc5(0); //create Rtc5 controller //var rtc = new Rtc6(0); //create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.100", "255.255.255.0"); //실험적인 상태 (Scanlab Rtc6 Ethernet 제어기) float fov = 60.0f; // scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; // k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); // 스캐너 보정 파일 지정 : correction file rtc.CtlFrequency(50 * 1000, 2); // laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); // default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); // scanner and laser delays //이미 table1 에 로드 및 선택 완료 (initialize 의 인자에서 처리됨) //var correctionFile1 = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); //rtc.CtlLoadCorrectionFile(CorrectionTableIndex.Table1, correctionFile1); var correctionFile2 = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.CtlLoadCorrectionFile(CorrectionTableIndex.Table2, correctionFile2); rtc.CtlSelectCorrection(CorrectionTableIndex.Table1, CorrectionTableIndex.Table2); #endregion #region initialize Laser (virtual) var laser = new LaserVirtual(0, "virtual", 20); // virtual laser source with max 20W power (최대 출력 20W 의 가상 레이저 소스 생성) //var laser = new IPGYLP(0, "IPG YLP", 1, 20); //var laser = new JPTTypeE(0, "JPT Type E", 1, 20); //var laser = new SPIG4(0, "SPI G3/4", 1, 20); //var laser = new PhotonicsIndustryDX(0, "PI", 1, 20); //var laser = new AdvancedOptoWaveFotia(0, "Fotia", 1, 20); //var laser = new CoherentAviaLX(0, "Avia LX", 1, 20); laser.Rtc = rtc; laser.Initialize(); laser.CtlPower(2); #endregion ConsoleKeyInfo key; do { Console.WriteLine($"{Environment.NewLine}"); Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (http://spirallab.co.kr)"); Console.WriteLine($"{Environment.NewLine}"); Console.WriteLine("'D' : draw circle with dual head offset"); Console.WriteLine("'Q' : quit"); Console.WriteLine($"{Environment.NewLine}"); Console.Write("select your target : "); key = Console.ReadKey(false); if (key.Key == ConsoleKey.Q) { break; } Console.WriteLine($"{Environment.NewLine}"); Console.WriteLine("WARNING !!! LASER IS BUSY ..."); var timer = Stopwatch.StartNew(); switch (key.Key) { case ConsoleKey.D: //개별 헤드에 오프셋 및 회전 처리 var rtcDualHead = rtc as IRtcDualHead; rtcDualHead.CtlHeadOffset(ScannerHead.Primary, new Vector2(5, 0), 0); rtcDualHead.CtlHeadOffset(ScannerHead.Secondary, new Vector2(-5, 0), 0); DrawCircle(laser, rtc); // 원복 rtcDualHead.CtlHeadOffset(ScannerHead.Primary, Vector2.Zero, 0); rtcDualHead.CtlHeadOffset(ScannerHead.Secondary, Vector2.Zero, 0); break; } Console.WriteLine($"Processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s"); } while (true); rtc.Dispose(); }
static void Main(string[] args) { SpiralLab.Core.Initialize(); #region create entities //신규 문서(Document) 생성 var doc1 = new DocumentDefault("Unnamed"); // 레이어 생성 var layer = new Layer("default"); //레이어에 선 형상 개체(Entity) 생성및 추가 layer.Add(new Line(0, 10, 20, 20)); //레이어에 원 형상 개체(Entity) 생성및 추가 layer.Add(new Circle(0, 0, 10)); //레이어에 나선 형상 개체(Entity) 생성및 추가 layer.Add(new Spiral(-20.0f, 0.0f, 0.5f, 2.0f, 5, true)); // 레이어를 문서에 추가 doc1.Layers.Add(layer); #endregion Console.WriteLine("press any key to save ..."); Console.ReadKey(false); string filename = "default.sirius"; // 문서(Document) 저장하기 DocumentSerializer.Save(doc1, filename); Console.WriteLine("press any key to open ..."); Console.ReadKey(false); // 문서(Document) 불러오기 var doc2 = DocumentSerializer.OpenSirius(filename); Console.WriteLine("press any key to rtc initialize ..."); Console.ReadKey(false); #region initialize RTC //var rtc = new RtcVirtual(0); //create Rtc for dummy var rtc = new Rtc5(0, "output.txt"); //create Rtc5 controller with list commands output file //var rtc = new Rtc6(0); //create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.100", "255.255.255.0"); //실험적인 상태 (Scanlab Rtc6 Ethernet 제어기) //var rtc = new Rtc6SyncAxis(0, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "syncAxis", "syncAXISConfig.xml")); //실험적인 상태 (Scanlab XLSCAN 솔류션) float fov = 60.0f; // scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; // k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); // 스캐너 보정 파일 지정 : correction file rtc.CtlFrequency(50 * 1000, 2); // laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); // default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); // scanner and laser delays #endregion #region initialize Laser (virtual) var laser = new LaserVirtual(0, "virtual", 20); // virtual laser source with max 20W power (최대 출력 20W 의 가상 레이저 소스 생성) //var laser = new IPGYLP(0, "IPG YLP", 1, 20); //var laser = new JPTTypeE(0, "JPT Type E", 1, 20); //var laser = new SPIG4(0, "SPI G3/4", 1, 20); //var laser = new PhotonicsIndustryDX(0, "PI", 1, 20); //var laser = new AdvancedOptoWaveFotia(0, "Fotia", 1, 20); //var laser = new CoherentAviaLX(0, "Avia LX", 1, 20); laser.Rtc = rtc; laser.Initialize(); laser.CtlPower(2); #endregion Console.WriteLine("press any key to laser processing ...WARNING !!! LASER EMISSION"); Console.ReadKey(false); DoBegin(laser, rtc, doc2); Console.WriteLine("press any key to terminate program"); Console.ReadKey(false); }
static void Main(string[] args) { SpiralLab.Core.Initialize(); #region initialize RTC var rtc = new RtcVirtual(0); ///create Rtc for dummy //var rtc = new Rtc5(0); ///create Rtc5 controller //var rtc = new Rtc6(0); ///create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.200"); ///create Rtc6 ethernet controller //var rtc = new Rtc53D(0); ///create Rtc5 + 3D option controller //var rtc = new Rtc63D(0); ///create Rtc5 + 3D option controller //var rtc = new Rtc5DualHead(0); ///create Rtc5 + Dual head option controller //var rtc = new Rtc5MOTF(0); ///create Rtc5 + MOTF option controller //var rtc = new Rtc6MOTF(0); ///create Rtc6 + MOTF option controller //var rtc = new Rtc6SyncAxis(0); //var rtc = new Rtc6SyncAxis(0, "syncAXISConfig.xml"); ///create Rtc6 + XL-SCAN (ACS+SYNCAXIS) option controller float fov = 60.0f; /// scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; /// k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); /// 스캐너 보정 파일 지정 : correction file rtc.CtlFrequency(50 * 1000, 2); /// laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); /// default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); /// scanner and laser delays #endregion #region initialize Laser (virtial) ILaser laser = new LaserVirtual(0, "virtual", 20); #endregion ConsoleKeyInfo key; do { Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (https://sepwind.blogspot.com)"); Console.WriteLine(""); Console.WriteLine("'R' : draw rectangle with rotate"); Console.WriteLine("'L' : draw lines with rotate"); Console.WriteLine("'Q' : quit"); Console.WriteLine(""); Console.Write("select your target : "); key = Console.ReadKey(false); if (key.Key == ConsoleKey.Q) { break; } Console.WriteLine("\r\nWARNING !!! LASER IS BUSY ..."); var timer = Stopwatch.StartNew(); switch (key.Key) { case ConsoleKey.R: /// 회전하는 사각형 모양 가공 (가로 10, 세로 10 크기, 0 ~360 각도의 회전 형상) DrawRectangle(laser, rtc, 10, 10, 0, 360); break; case ConsoleKey.L: ///회전하는 직선 모양 가공 DrawLinesWithRotate(laser, rtc, 0, 360); break; } rtc.ListExecute(true); Console.WriteLine($"processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s"); } while (true); rtc.Dispose(); }
public FormMain() { InitializeComponent(); SpiralLab.Core.Initialize(); //Rtc 2개 생성 var rtc1 = new RtcVirtual(0, "output1.txt"); rtc1.Initialize(1000, LaserMode.Yag1, null); var rtc2 = new RtcVirtual(1, "output2.txt"); rtc2.Initialize(1000, LaserMode.Yag1, null); //Laser 2개 생성 var laser1 = new LaserVirtual(0, "Virtual Laser1", 20); laser1.Initialize(); var laser2 = new LaserVirtual(1, "Virtual Laser2", 20); laser2.Initialize(); //Marker 2개 생성 var marker1 = new MarkerDefault(0); var marker2 = new MarkerDefault(1); //두개의 문서 생성 var doc1 = new DocumentDefault(); var doc2 = new DocumentDefault(); //뷰어에 문서 소스 설정 this.formViewer = new FormViewer(); this.formViewer.Viewer1.Document = doc1; this.formViewer.Viewer1.AliasName = "Left Viewer"; this.formViewer.Viewer2.Document = doc2; this.formViewer.Viewer2.AliasName = "Right Viewer"; //에디터 1에 문서 소스 설정 this.formEditor1 = new FormEditor(); this.formEditor1.Editor.Document = doc1; this.formEditor1.Editor.AliasName = "Left Editor"; //에디터 2에 문서 소스 설정 this.formEditor2 = new FormEditor(); this.formEditor2.Editor.Document = doc2; this.formEditor2.Editor.AliasName = "Right Editor"; //소스 문서(IDocument) 가 변경될경우 다른 멀티 뷰에 이를 통지가능하도록 이벤트 핸들러 등록 this.formViewer.Viewer1.OnDocumentSourceChanged += Viewer1_OnDocumentSourceChanged; this.formEditor1.Editor.OnDocumentSourceChanged += Viewer1_OnDocumentSourceChanged; this.formViewer.Viewer2.OnDocumentSourceChanged += Viewer2_OnDocumentSourceChanged; this.formEditor2.Editor.OnDocumentSourceChanged += Viewer2_OnDocumentSourceChanged; // 뷰어1 와 하드웨어 연결 this.formViewer.Viewer1.Rtc = rtc1; this.formViewer.Viewer1.Laser = laser1; this.formViewer.Viewer1.Marker = marker1; //뷰어2 와 하드웨어 연결 this.formViewer.Viewer2.Rtc = rtc2; this.formViewer.Viewer2.Laser = laser2; this.formViewer.Viewer2.Marker = marker2; // 에디터1 와 하드웨어 연결 this.formEditor1.Editor.Rtc = rtc1; this.formEditor1.Editor.Laser = laser1; this.formEditor1.Editor.Marker = marker1; //에디터1 와 하드웨어 연결 this.formEditor2.Editor.Rtc = rtc2; this.formEditor2.Editor.Laser = laser2; this.formEditor2.Editor.Marker = marker2; // 뷰어를 초기화면에 출력 SwitchForm(panel3, this.formViewer); }
static void Main(string[] args) { SpiralLab.Core.Initialize(); //initializing spirallab.sirius library engine (시리우스 라이브러리 초기화) #region initialize RTC //var rtc = new RtcVirtual(0); //create Rtc for dummy (가상 RTC 카드) var rtc = new Rtc5(0); //create Rtc5 controller //var rtc = new Rtc6(0); //create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.100", "255.255.255.0"); //Rtc6 Ethernet //var rtc = new Rtc6SyncAxis(0, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "syncAxis", "syncAXISConfig.xml")); //Scanlab XLSCAN float fov = 60.0f; // scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; // k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); // correction file (스캐너 보정 파일) #endregion #region initialize Laser (virtual) var laser = new LaserVirtual(0, "virtual", 20); // virtual laser source with max 20W power (최대 출력 20W 의 가상 레이저 소스 생성) //var laser = new IPGYLP(0, "IPG YLP", 1, 20); //var laser = new JPTTypeE(0, "JPT Type E", 1, 20); //var laser = new SPIG4(0, "SPI G3/4", 1, 20); //var laser = new PhotonicsIndustryDX(0, "PI", 1, 20); //var laser = new AdvancedOptoWaveFotia(0, "Fotia", 1, 20); //var laser = new CoherentAviaLX(0, "Avia LX", 1, 20); laser.Rtc = rtc; laser.Initialize(); laser.CtlPower(2); #endregion ConsoleKeyInfo key; do { Console.WriteLine($"{Environment.NewLine}"); Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (http://spirallab.co.kr)"); Console.WriteLine($"----------------------------------------------------------------------------------------"); Console.WriteLine("'C' : draw circle with measurement"); Console.WriteLine("'R' : draw rectangle with measurement"); Console.WriteLine("'O' : open and plot measurement file"); Console.WriteLine("'Q' : quit"); Console.Write("Select your target : "); key = Console.ReadKey(false); Console.WriteLine($"{Environment.NewLine}"); if (key.Key == ConsoleKey.Q) { break; } switch (key.Key) { case ConsoleKey.C: // draw circle (원 모양 가공) DrawCircle(laser, rtc, 10); break; case ConsoleKey.R: // draw rectangle (사각형 모양 가공) DrawRectangle(laser, rtc, 10, 10); break; case ConsoleKey.O: // open file var dlg = new OpenFileDialog(); dlg.Filter = "measurement data files (*.txt)|*.txt|All Files (*.*)|*.*"; dlg.Title = "Open Measurement File"; dlg.InitialDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "plot"); DialogResult result = dlg.ShowDialog(); if (result != DialogResult.OK) { return; } MeasurementHelper.Plot(dlg.FileName); break; } } while (true); if (rtc.CtlGetStatus(RtcStatus.Busy)) { rtc.CtlAbort(); rtc.CtlBusyWait(); } rtc.Dispose(); }
static void Main(string[] args) { SpiralLab.Core.Initialize(); #region initialize RTC //var rtc = new RtcVirtual(0); //create Rtc for dummy var rtc = new Rtc5(0); //create Rtc5 controller //var rtc = new Rtc6(0); //create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.100", "255.255.255.0"); //실험적인 상태 (Scanlab Rtc6 Ethernet 제어기) //var rtc = new Rtc6SyncAxis(0, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "syncAxis", "syncAXISConfig.xml")); //실험적인 상태 (Scanlab XLSCAN 솔류션) float fov = 60.0f; // scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; // k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); //default correction file rtc.CtlFrequency(50 * 1000, 2); //laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); // default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); //scanner and laser delays #endregion #region initialize Laser (virtual) var laser = new LaserVirtual(0, "virtual", 20); // virtual laser source with max 20W power (최대 출력 20W 의 가상 레이저 소스 생성) //var laser = new IPGYLP(0, "IPG YLP", 1, 20); //var laser = new JPTTypeE(0, "JPT Type E", 1, 20); //var laser = new SPIG4(0, "SPI G3/4", 1, 20); //var laser = new PhotonicsIndustryDX(0, "PI", 1, 20); //var laser = new AdvancedOptoWaveFotia(0, "Fotia", 1, 20); //var laser = new CoherentAviaLX(0, "Avia LX", 1, 20); laser.Rtc = rtc; laser.Initialize(); laser.CtlPower(2); #endregion #region create entities // 문서 생성 var doc = new DocumentDefault("Unnamed"); // 레이어 생성및 문서에 추가 var layer = new Layer("default"); // 펜 개체(Entity) 생성및 레이어에 추가 var pen = new PenDefault() { Frequency = 100 * 1000, //주파수 Hz PulseWidth = 2, //펄스폭 usec LaserOnDelay = 0, // 레이저 시작 지연 usec LaserOffDelay = 0, // 레이저 끝 지연 usec ScannerJumpDelay = 100, // 스캐너 점프 지연 usec ScannerMarkDelay = 200, // 스캐너 마크 지연 usec ScannerPolygonDelay = 0, // 스캐너 폴리곤 지연 usec JumpSpeed = 500, // 스캐너 점프 속도 mm/s MarkSpeed = 500, // 스캐너 마크 속도 mm/s }; layer.Add(pen); // 선 개체 레이어에 추가 layer.Add(new Line(0, 0, 10, 20)); // 원 개체 레이어에 추가 layer.Add(new Circle(0, 0, 10)); // 나선 개체 레이어에 추가 layer.Add(new Spiral(-20.0f, 0.0f, 0.5f, 2.0f, 5, true)); //레이어의 모든 개채들 내부 데이타 계산및 갱신 layer.Regen(); // 문서에 레이어 추가 doc.Layers.Add(layer); // 문서를 지정된 파일에 저장 DocumentSerializer.Save(doc, "test.sirius"); #endregion ConsoleKeyInfo key; do { Console.WriteLine($"{Environment.NewLine}"); Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (http://spirallab.co.kr)"); Console.WriteLine($"{Environment.NewLine}"); Console.WriteLine("'D' : draw entities by pen"); Console.WriteLine("'Q' : quit"); Console.WriteLine($"{Environment.NewLine}"); Console.Write("select your target : "); key = Console.ReadKey(false); if (key.Key == ConsoleKey.Q) { break; } Console.WriteLine($"{Environment.NewLine}"); switch (key.Key) { case ConsoleKey.D: Console.WriteLine("WARNING !!! LASER IS BUSY ..."); var timer = Stopwatch.StartNew(); DrawForFieldCorrection(laser, rtc, doc); Console.WriteLine($"processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s"); break; } } while (true); rtc.Dispose(); }
static void Main3(string[] args) { SpiralLab.Core.Initialize(); #region initialize RTC //var rtc = new RtcVirtual(0); //create Rtc for dummy var rtc = new Rtc5(0); //create Rtc5 controller //var rtc = new Rtc6(0); //create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.100", "255.255.255.0"); //실험적인 상태 (Scanlab Rtc6 Ethernet 제어기) float fov = 60.0f; // scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; // k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); // 스캐너 보정 파일 지정 : correction file rtc.CtlFrequency(50 * 1000, 2); // laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); // default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); // scanner and laser delays #endregion #region initialize Laser (virtual) var laser = new LaserVirtual(0, "virtual", 20); // virtual laser source with max 20W power (최대 출력 20W 의 가상 레이저 소스 생성) //var laser = new IPGYLP(0, "IPG YLP", 1, 20); //var laser = new JPTTypeE(0, "JPT Type E", 1, 20); //var laser = new SPIG4(0, "SPI G3/4", 1, 20); //var laser = new PhotonicsIndustryDX(0, "PI", 1, 20); //var laser = new AdvancedOptoWaveFotia(0, "Fotia", 1, 20); //var laser = new CoherentAviaLX(0, "Avia LX", 1, 20); laser.Rtc = rtc; laser.Initialize(); laser.CtlPower(2); #endregion var rtcCharSet = rtc as IRtcCharacterSet; ConsoleKeyInfo key; do { Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (http://spirallab.co.kr)"); Console.WriteLine(""); Console.WriteLine("'D' : mark to date"); Console.WriteLine("'I' : mark to time"); Console.WriteLine("'S' : mark to serial number"); Console.WriteLine("'R' : reset serial number"); Console.WriteLine("'Q' : quit"); Console.WriteLine(""); Console.Write("select your target : "); key = Console.ReadKey(false); if (key.Key == ConsoleKey.Q) { break; } Console.WriteLine(""); var timer = Stopwatch.StartNew(); switch (key.Key) { case ConsoleKey.D: RtcCharacterSetHelper.Clear(rtc); MarkToDate(laser, rtc); break; case ConsoleKey.I: RtcCharacterSetHelper.Clear(rtc); MarkToTime(laser, rtc); break; case ConsoleKey.S: RtcCharacterSetHelper.Clear(rtc); MarkToSerial(laser, rtc); break; case ConsoleKey.R: RtcCharacterSetHelper.Clear(rtc); rtcCharSet.CtlSerialReset(1000, 1); break; } Console.WriteLine($"Processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s"); } while (true); rtc.Dispose(); }
static void Main(string[] args) { SpiralLab.Core.Initialize(); #region initialize RTC var rtc = new RtcCustom(0); ///your custom rtc controller 생성 float fov = 60.0f; /// scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; /// k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); ///default correction file rtc.CtlFrequency(50 * 1000, 2); ///laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); /// default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); ///scanner and laser delays #endregion #region initialize Laser source ILaser laser = new LaserVirtual(0, "virtual laser", 10.0f); laser.Initialize(); var pen = new Pen { Power = 5.0f, }; laser.CtlPower(rtc, pen); #endregion ConsoleKeyInfo key; do { Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (https://sepwind.blogspot.com)"); Console.WriteLine(""); Console.WriteLine("'C' : draw circle"); Console.WriteLine("'R' : draw circle"); Console.WriteLine("'L' : pop up your custom rtc form"); Console.WriteLine("'Q' : quit"); Console.WriteLine(""); Console.Write("select your target : "); key = Console.ReadKey(false); if (key.Key == ConsoleKey.Q) { break; } switch (key.Key) { case ConsoleKey.C: Console.WriteLine("\r\nWARNING !!! LASER IS BUSY ..."); DrawCircle(laser, rtc, 10); break; case ConsoleKey.R: Console.WriteLine("\r\nWARNING !!! LASER IS BUSY ..."); DrawRectangle(laser, rtc, 10, 10); break; case ConsoleKey.L: Console.WriteLine("\r\nLASER FORM"); rtc.Form.ShowDialog(); break; } } while (true); rtc.Dispose(); }
static void Main(string[] args) { SpiralLab.Core.Initialize(); #region initialize RTC IRtc rtc = new RtcVirtual(0); ///가상 rtc 제어기 생성 //IRtc rtc = new Rtc5(0); ///rtc 5 제어기 생성 double fov = 60.0; /// scanner field of view : 60mm double kfactor = Math.Pow(2, 20) / fov; /// k factor (bits/mm) = 2^20 / fov rtc.Initialize(kfactor, LaserMode.Yag1, "cor_1to1.ct5"); ///default correction file rtc.CtlFrequency(50 * 1000, 2); ///laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); /// default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); ///scanner and laser delays #endregion #region initialize Laser(Virtual) ILaser laser = new LaserVirtual(0, "virtual", 20); #endregion #region create entities for scanner field correction var doc = new DocumentDefault("3x3 scanner field correction"); var layer = new Layer("default"); doc.Layers.Add(layer); /// 9 (3x3) 측정 위치에 마킹할 형상 생성 (나선 모양의 객체) layer.Add(new Spiral(-20.0f, 20.0f, 0.2f, 2.0f, 5, true)); layer.Add(new Spiral(0.0f, 20.0f, 0.2f, 2.0f, 5, true)); layer.Add(new Spiral(20.0f, 20.0f, 0.2f, 2.0f, 5, true)); layer.Add(new Spiral(-20.0f, 0.0f, 0.2f, 2.0f, 5, true)); layer.Add(new Spiral(0.0f, 0.0f, 0.2f, 2.0f, 5, true)); layer.Add(new Spiral(20.0f, 0.0f, 0.2f, 2.0f, 5, true)); layer.Add(new Spiral(-20.0f, -20.0f, 0.2f, 2.0f, 5, true)); layer.Add(new Spiral(0.0f, -20.0f, 0.2f, 2.0f, 5, true)); layer.Add(new Spiral(20.0f, -20.0f, 0.2f, 2.0f, 5, true)); var ds = new DocumentSerializer(); ds.Save(doc, "test.sirius"); #endregion ConsoleKeyInfo key; do { Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (https://sepwind.blogspot.com)"); Console.WriteLine(""); Console.WriteLine("'F' : draw field correction entities"); Console.WriteLine("'C' : create new field correction for 2D"); Console.WriteLine("'Q' : quit"); Console.WriteLine(""); Console.Write("select your target : "); key = Console.ReadKey(false); if (key.Key == ConsoleKey.Q) { break; } switch (key.Key) { case ConsoleKey.F: Console.WriteLine("\r\nWARNING !!! LASER IS BUSY ..."); var timer = new Stopwatch(); if (DrawForFieldCorrection(laser, rtc, doc)) { rtc.ListExecute(true); } Console.WriteLine($"processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s"); break; case ConsoleKey.C: string result = CreateFieldCorrection(); Console.WriteLine(""); Console.WriteLine(result); break; } } while (true); rtc.Dispose(); }
static void Main(string[] args) { SpiralLab.Core.Initialize(); #region initialize RTC var rtc = new RtcVirtual(0); ///create Rtc for dummy //var rtc = new Rtc5(0); ///create Rtc5 controller //var rtc = new Rtc6(0); ///create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.200"); ///create Rtc6 ethernet controller //var rtc = new Rtc53D(0); ///create Rtc5 + 3D option controller //var rtc = new Rtc63D(0); ///create Rtc5 + 3D option controller //var rtc = new Rtc5DualHead(0); ///create Rtc5 + Dual head option controller //var rtc = new Rtc5MOTF(0); ///create Rtc5 + MOTF option controller //var rtc = new Rtc6MOTF(0); ///create Rtc6 + MOTF option controller //var rtc = new Rtc6SyncAxis(0, "syncAXISConfig.xml"); ///create Rtc6 + XL-SCAN (ACS+SYNCAXIS) option controller float fov = 60.0f; /// scanner field of view : 60mm float kfactor = (float)Math.Pow(2, 20) / fov; /// k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); /// 스캐너 보정 파일 지정 : correction file rtc.CtlFrequency(50 * 1000, 2); /// laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); /// default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); /// scanner and laser delays #endregion #region initialize Laser (virtial) ILaser laser = new LaserVirtual(0, "virtual", 20); /// 최대 출력 20W 의 가상 레이저 소스 생성 #endregion ConsoleKeyInfo key; do { Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (https://sepwind.blogspot.com)"); Console.WriteLine(""); Console.WriteLine("'S' : get status"); Console.WriteLine("'C' : draw circle"); Console.WriteLine("'R' : draw rectangle"); Console.WriteLine("'D' : draw circle with dots"); Console.WriteLine("'Q' : quit"); Console.WriteLine(""); Console.Write("select your target : "); key = Console.ReadKey(false); if (key.Key == ConsoleKey.Q) { break; } var timer = Stopwatch.StartNew(); switch (key.Key) { case ConsoleKey.S: ///RTC의 상태 확인 if (rtc.CtlGetStatus(RtcStatus.Busy)) { Console.WriteLine($"\r\nRtc is busy!"); } else if (!rtc.CtlGetStatus(RtcStatus.PowerOK)) { Console.WriteLine($"\r\nScanner power is not ok"); } else if (!rtc.CtlGetStatus(RtcStatus.PositionAckOK)) { Console.WriteLine($"\r\nScanner position is not acked"); } else if (!rtc.CtlGetStatus(RtcStatus.NoError)) { Console.WriteLine($"\r\nRtc status has an error"); } else { Console.WriteLine($"\r\nIt's okay"); } break; case ConsoleKey.C: /// 원 모양 가공 Console.WriteLine("\r\nWARNING !!! LASER IS BUSY ..."); DrawCircle(laser, rtc, 10); break; case ConsoleKey.R: /// 사각형 모양 가공 Console.WriteLine("\r\nWARNING !!! LASER IS BUSY ..."); DrawRectangle(laser, rtc, 10, 10); break; case ConsoleKey.D: ///점으로 이루어진 원 모양 가공 Console.WriteLine("\r\nWARNING !!! LASER IS BUSY ..."); DrawCircleWithDots(laser, rtc, 10, 1.0f); break; } Console.WriteLine($"Processing time = {timer.ElapsedMilliseconds/1000.0:F3}s"); } while (true); rtc.Dispose(); }
static void Main(string[] args) { SpiralLab.Core.Initialize(); #region initialize RTC var rtc = new RtcVirtual(0); //var rtc = new Rtc5(0); ///create Rtc5 controller //var rtc = new Rtc6(0); ///create Rtc6 controller //var rtc = new Rtc6Ethernet(0, "192.168.0.200"); ///create Rtc6 ethernet controller //var rtc = new Rtc53D(0); ///create Rtc5 + 3D option controller //var rtc = new Rtc63D(0); ///create Rtc5 + 3D option controller //var rtc = new Rtc5DualHead(0); ///create Rtc5 + Dual head option controller //var rtc = new Rtc5MOTF(0); ///create Rtc5 + MOTF option controller //var rtc = new Rtc6MOTF(0); ///create Rtc6 + MOTF option controller //var rtc = new Rtc6SyncAxis(0); //var rtc = new Rtc6SyncAxis(0, "syncAXISConfig.xml"); ///create Rtc6 + XL-SCAN (ACS+SYNCAXIS) option controller float fov = 60.0f; /// scanner field of view : 60mm kfactor = (float)Math.Pow(2, 20) / fov; /// k factor (bits/mm) = 2^20 / fov var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc.Initialize(kfactor, LaserMode.Yag1, correctionFile); ///default correction file rtc.CtlFrequency(50 * 1000, 2); ///laser frequency : 50KHz, pulse width : 2usec rtc.CtlSpeed(100, 100); /// default jump and mark speed : 100mm/s rtc.CtlDelay(10, 100, 200, 200, 0); ///scanner and laser delays #endregion #region initialize Laser(Virtual) ILaser laser = new LaserVirtual(0, "virtual", 20); #endregion #region create entities for scanner field correction /// 신규 문서(Document) 생성 var doc = new DocumentDefault("3x3 scanner field correction"); /// 레이어를 생성해서 문서에 추가 var layer = new Layer("default"); doc.Layers.Add(layer); /// 나선모양 개체(Entities)를 레이어에 추가 /// 각 개체의 간격은 20mm 로 총 9개를 생성 layer.Add(new Spiral(-20.0f, 20.0f, 0.2f, 2.0f, 5, true)); layer.Add(new Spiral(0.0f, 20.0f, 0.2f, 2.0f, 5, true)); layer.Add(new Spiral(20.0f, 20.0f, 0.2f, 2.0f, 5, true)); layer.Add(new Spiral(-20.0f, 0.0f, 0.2f, 2.0f, 5, true)); layer.Add(new Spiral(0.0f, 0.0f, 0.2f, 2.0f, 5, true)); layer.Add(new Spiral(20.0f, 0.0f, 0.2f, 2.0f, 5, true)); layer.Add(new Spiral(-20.0f, -20.0f, 0.2f, 2.0f, 5, true)); layer.Add(new Spiral(0.0f, -20.0f, 0.2f, 2.0f, 5, true)); layer.Add(new Spiral(20.0f, -20.0f, 0.2f, 2.0f, 5, true)); /// 해당 문서를 파일에 저장 var ds = new DocumentSerializer(); ds.Save(doc, "test.sirius"); #endregion ConsoleKeyInfo key; do { Console.WriteLine("Testcase for spirallab.sirius. powered by [email protected] (https://sepwind.blogspot.com)"); Console.WriteLine(""); Console.WriteLine("'F' : draw field correction entities"); Console.WriteLine("'C' : create new field correction for 2D"); Console.WriteLine("'Q' : quit"); Console.WriteLine(""); Console.Write("select your target : "); key = Console.ReadKey(false); if (key.Key == ConsoleKey.Q) { break; } switch (key.Key) { case ConsoleKey.F: Console.WriteLine("\r\nWARNING !!! LASER IS BUSY ..."); var timer = Stopwatch.StartNew(); ///9개의 나선모양들을 가공 if (DrawForFieldCorrection(laser, rtc, doc)) { rtc.ListExecute(true); } Console.WriteLine($"processing time = {timer.ElapsedMilliseconds / 1000.0:F3}s"); break; case ConsoleKey.C: string result = CreateFieldCorrection(rtc); Console.WriteLine(""); Console.WriteLine(result); break; } } while (true); rtc.Dispose(); }