private void mnuPen_Click(object sender, EventArgs e) { IPen pen = new PenDefault(); var form = new PropertyForm(pen); if (DialogResult.OK != form.ShowDialog(this)) { return; } this.Document.Action.ActEntityAdd(pen); }
private void btnNew_Click(object sender, EventArgs e) { if (DialogResult.Yes != MessageBox.Show($"Do you really want to clear the document ?", "Document New", MessageBoxButtons.YesNo, MessageBoxIcon.Question)) { return; } trvEntity.Nodes.Clear(); this.FileName = string.Empty; this.Document.Action.ActNew(); // 기본 펜 생성후 문서에 추가 var pen = new PenDefault(); doc.Action.ActEntityAdd(pen); }
public MainForm() { InitializeComponent(); SpiralLab.Core.Initialize(); // 신규 문서 생성 var doc = new DocumentDefault(); siriusEditorForm1.Document = doc; if (!siriusEditorForm1.EnablePens) { // 기본 펜 생성후 문서에 추가 var pen = new PenDefault(); doc.Action.ActEntityAdd(pen); } // 내부 데이타(IDocument) 가 변경될경우 이를 이벤트 통지를 받는 핸들러 등록 siriusEditorForm1.OnDocumentSourceChanged += SiriusEditorForm1_OnDocumentSourceChanged; this.Load += MainForm_Load; this.FormClosing += MainForm_FormClosing; }
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(); }
public MainForm() { InitializeComponent(); this.FormClosed += MainForm_FormClosed; SpiralLab.Core.Initialize(); // 신규 문서 생성 var doc = new DocumentDefault(); // 문서 지정 siriusEditorForm1.Document = doc; // 기본 펜 생성후 문서에 추가 var pen = new PenDefault(); 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.tcpClient = new SiriusTcpClient(this.siriusEditorForm1, "localhost", 9999); this.tcpClient.Start(); }
public FormMain() { InitializeComponent(); SpiralLab.Core.Initialize(); //Rtc 제어기 객체 2개 생성 var rtc1 = new RtcVirtual(0, "output1.txt"); var rtc2 = new RtcVirtual(1, "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.100", "255.255.255.0"); //실험적인 상태 (Scanlab Rtc6 Ethernet 제어기) //var rtc = new Rtc6SyncAxis(0, Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "syncAxis", "syncAXISConfig.xml")); //실험적인 상태 (Scanlab XLSCAN 솔류션) var correctionFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); rtc1.Initialize(1000, LaserMode.Yag1, correctionFile); rtc2.Initialize(1000, LaserMode.Yag1, correctionFile); //Laser 소스 객체 2개 생성 var laser1 = new LaserVirtual(0, "virtual", 20); // virtual laser source with max 20W power (최대 출력 20W 의 가상 레이저 소스 생성) //var laser1 = new IPGYLP(0, "IPG YLP", 1, 20); //var laser1 = new JPTTypeE(0, "JPT Type E", 1, 20); //var laser1 = new SPIG4(0, "SPI G3/4", 1, 20); //var laser1 = new PhotonicsIndustryDX(0, "PI", 1, 20); //var laser1 = new AdvancedOptoWaveFotia(0, "Fotia", 1, 20); //var laser1 = new CoherentAviaLX(0, "Avia LX", 1, 20); laser1.Rtc = rtc1; laser1.Initialize(); laser1.CtlPower(2); var laser2 = new LaserVirtual(0, "virtual", 20); // virtual laser source with max 20W power (최대 출력 20W 의 가상 레이저 소스 생성) //var laser2 = new IPGYLP(0, "IPG YLP", 2, 20); //var laser2 = new JPTTypeE(0, "JPT Type E", 2, 20); //var laser2 = new SPIG4(0, "SPI G3/4", 2, 20); //var laser2 = new PhotonicsIndustryDX(0, "PI", 2, 20); //var laser2 = new AdvancedOptoWaveFotia(0, "Fotia", 2, 20); //var laser2 = new CoherentAviaLX(0, "Avia LX", 2, 20); laser2.Rtc = rtc2; laser2.Initialize(); laser2.CtlPower(2); //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.formEditor1.Editor.OnDocumentSourceChanged += Editor1_OnDocumentSourceChanged; this.formEditor2.Editor.OnDocumentSourceChanged += Editor2_OnDocumentSourceChanged; // 기본 펜 개체 생성 var pen1 = new PenDefault(); doc1.Action.ActEntityAdd(pen1); var pen2 = new PenDefault(); doc2.Action.ActEntityAdd(pen2); // 에디터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); }