// This method will be called when the thread is started. public void DoWork() { PiMakerEditor ed = Main.main.editor; Stopwatch sw = new Stopwatch(); sw.Start(); visual = new GCodeVisual(); visual.showSelection = true; switch (ed.ShowMode) { case 0: visual.minLayer = 0; visual.maxLayer = 999999; break; case 1: visual.minLayer = visual.maxLayer = ed.ShowMinLayer; break; case 2: visual.minLayer = ed.ShowMinLayer; visual.maxLayer = ed.ShowMaxLayer; break; } visual.parseGCodeShortArray(Main.main.previewArray0, true, 0); visual.parseGCodeShortArray(Main.main.previewArray1, false, 1); visual.parseGCodeShortArray(Main.main.previewArray2, false, 2); Main.main.previewArray0 = Main.main.previewArray1 = Main.main.previewArray2 = null; visual.Reduce(); Main.main.gcodePrintingTime = visual.ana.printingTime; //visual.stats(); Main.main.newVisual = visual; Main.main.jobPreviewThreadFinished = true; Main.main.previewThread = null; sw.Stop(); //Main.conn.log("Update time:" + sw.ElapsedMilliseconds, false, 3); }
private void timer_Tick(object sender, EventArgs e) { if (newVisual != null) { jobPreview.models.RemoveLast(); jobVisual.Clear(); jobVisual = newVisual; jobPreview.models.AddLast(jobVisual); threedview.UpdateChanges(); newVisual = null; editor.toolUpdating.Text = ""; if (Main.main.gcodePrintingTime > 0) { Main.main.editor.printingTime = Main.main.gcodePrintingTime; int sec = (int)(Main.main.editor.printingTime * (1 + 0.01 * Main.conn.addPrintingTime)); int hours = sec / 3600; sec -= 3600 * hours; int min = sec / 60; sec -= min * 60; StringBuilder s = new StringBuilder(); if (hours > 0) s.Append(Trans.T1("L_TIME_H:", hours.ToString())); //"h:"); if (min > 0) s.Append(Trans.T1("L_TIME_M:", min.ToString())); s.Append(Trans.T1("L_TIME_S", sec.ToString())); Main.main.editor.toolPrintingTime.Text = Trans.T1("L_PRINTING_TIME:", s.ToString()); } editor.UpdateLayerInfo(); editor.MaxLayer = editor.getContentArray(0).Last<GCodeShort>().layer; } if (recalcJobPreview && jobPreviewThreadFinished) { previewArray0 = new List<GCodeShort>(); previewArray1 = new List<GCodeShort>(); previewArray2 = new List<GCodeShort>(); previewArray0.AddRange(((PiMakerEditor.Content)editor.toolFile.Items[1]).textArray); previewArray1.AddRange(((PiMakerEditor.Content)editor.toolFile.Items[0]).textArray); previewArray2.AddRange(((PiMakerEditor.Content)editor.toolFile.Items[2]).textArray); recalcJobPreview = false; jobPreviewThreadFinished = false; JobUpdater workerObject = new JobUpdater(); editor.toolUpdating.Text = Trans.T("L_UPDATING..."); // "Updating ..."; previewThread = new Thread(workerObject.DoWork); previewThread.Start(); } if (refreshCounter > 0) { if (--refreshCounter == 0) { Invalidate(); } } }
public Main() { executeHostCall = new executeHostCommandDelegate(this.executeHostCommand); PiMakerKey = Custom.BaseKey; // Registry.CurrentUser.CreateSubKey("SOFTWARE\\PiMaker"); PiMakerKey.SetValue("installPath", Application.StartupPath); if (Path.DirectorySeparatorChar != '\\' && IsRunningOnMac()) IsMac = true; /*String[] parms = Environment.GetCommandLineArgs(); string lastcom = ""; foreach (string s in parms) { if (lastcom == "-home") { PiMakerKey.SetValue("installPath",s); lastcom = ""; continue; } if (s == "-macosx") IsMac = true; lastcom = s; }*/ main = this; trans = new Trans(Application.StartupPath + Path.DirectorySeparatorChar + "data" + Path.DirectorySeparatorChar + "translations"); SwitchButton.imageOffset = RegMemory.GetInt("onOffImageOffset", 0); generator = new GCodeGenerator(); globalSettings = new GlobalSettings(); conn = new PrinterConnection(); printerSettings = new FormPrinterSettings(); conn.analyzer.start(); threeDSettings = new ThreeDSettings(); InitializeComponent(); editor = new PiMakerEditor(); editor.Dock = DockStyle.Fill; tabGCode.Controls.Add(editor); updateShowFilament(); RegMemory.RestoreWindowPos("mainWindow", this); if (WindowState == FormWindowState.Maximized) Application.DoEvents(); splitLog.SplitterDistance = RegMemory.GetInt("logSplitterDistance", splitLog.SplitterDistance); splitInfoEdit.SplitterDistance = RegMemory.GetInt("infoEditSplitterDistance", Width - 470); if (IsMono) { if (!IsMac) { foreach (ToolStripItem m in menu.Items) { m.Text = m.Text.Replace("&", null); } } if (IsMac) { /*Application.Events.Quit += delegate (object sender, ApplicationEventArgs e) { Application.Quit (); e.Handled = true; }; ApplicationEvents.Reopen += delegate (object sender, ApplicationEventArgs e) { WindowState = FormWindowState.Normal; e.Handled = true; };*/ MinimumSize = new Size(500, 640); tab.MinimumSize = new Size(500, 500); splitLog.Panel1MinSize = 520; splitLog.Panel2MinSize = 100; splitLog.IsSplitterFixed = true; //splitContainerPrinterGraphic.SplitterDistance -= 52; splitLog.SplitterDistance = splitLog.Height - 100; } } slicerToolStripMenuItem.Visible = false; splitLog.Panel2Collapsed = !RegMemory.GetBool("logShow", true); conn.eventConnectionChange += OnPrinterConnectionChange; conn.eventPrinterAction += OnPrinterAction; conn.eventJobProgress += OnJobProgress; stlComposer1 = new STLComposer(); stlComposer1.Dock = DockStyle.Fill; tabModel.Controls.Add(stlComposer1); printPanel = new PrintPanel(); printPanel.Dock = DockStyle.Fill; tabPrint.Controls.Add(printPanel); printerSettings.formToCon(); logView = new LogView(); logView.Dock = DockStyle.Fill; splitLog.Panel2.Controls.Add(logView); skeinforge = new Skeinforge(); PrinterChanged(printerSettings.currentPrinterKey, true); printerSettings.eventPrinterChanged += PrinterChanged; // GCode print preview threedview = new ThreeDControl(); threedview.Dock = DockStyle.Fill; tabPage3DView.Controls.Add(threedview); printPreview = new ThreeDView(); // printPreview.Dock = DockStyle.Fill; // splitContainerPrinterGraphic.Panel2.Controls.Add(printPreview); printPreview.SetEditor(false); printPreview.autoupdateable = true; printVisual = new GCodeVisual(conn.analyzer); printVisual.liveView = true; printPreview.models.AddLast(printVisual); basicTitle = Text; jobPreview = new ThreeDView(); // jobPreview.Dock = DockStyle.Fill; // splitJob.Panel2.Controls.Add(jobPreview); jobPreview.SetEditor(false); jobPreview.models.AddLast(jobVisual); editor.contentChangedEvent += JobPreview; editor.commands = new Commands(); editor.commands.Read("default", "en"); UpdateHistory(); UpdateConnections(); Main.slic3r = new Slic3r(); slicer = new Slicer(); //toolShowLog_CheckedChanged(null, null); updateShowFilament(); assign3DView(); history = new TemperatureHistory(); tempView = new TemperatureView(); tempView.Dock = DockStyle.Fill; tabPageTemp.Controls.Add(tempView); if (IsMono) showWorkdirectoryToolStripMenuItem.Visible = false; new SoundConfig(); stlComposer1.buttonSlice.Text = Trans.T1("L_SLICE_WITH", slicer.SlicerName); // Customizations if (Custom.GetBool("removeTestgenerator", false)) { internalSlicingParameterToolStripMenuItem.Visible = false; testCaseGeneratorToolStripMenuItem.Visible = false; } string titleAdd = Custom.GetString("titleAddition", ""); if (titleAdd.Length > 0) { int p = basicTitle.IndexOf(' '); basicTitle = basicTitle.Substring(0, p) + titleAdd + basicTitle.Substring(p); Text = basicTitle; } slicerPanel.UpdateSelection(); if (Custom.GetBool("removeUpdates", false)) checkForUpdatesToolStripMenuItem.Visible = false; else RHUpdater.checkForUpdates(true); UpdateToolbarSize(); // Add languages foreach (Translation t in trans.translations.Values) { ToolStripMenuItem item = new ToolStripMenuItem(t.language, null, languageSelected); item.Tag = t; languageToolStripMenuItem.DropDownItems.Add(item); } languageChanged += translate; translate(); toolAction.Text = Trans.T("L_IDLE"); toolConnection.Text = Trans.T("L_DISCONNECTED"); }