private bool LoadStlFile(string filename) { this.stl_file = filename; if (!File.Exists(filename)) { pictureBox1.Image = null; return(false); } int w = 2400; int h = 1600; int xdiv = 12; int ydiv = 8; //slice Stopwatch sw = Stopwatch.StartNew(); Mesh mesh = new Mesh(filename); Console.WriteLine("load stl: {0} ms", sw.ElapsedMilliseconds); sw.Restart(); mesh.ShiftCenter(); mesh.Scale(appset.stl_scale); Console.WriteLine("shift/scale stl: {0} ms", sw.ElapsedMilliseconds); sw.Restart(); //float zstep = (mesh.zmax - mesh.zmin) / (xdiv * ydiv); float zstep = appset.zstep; slices = new Slices(mesh, zstep, appset.slice_tol, appset.z_angle * (float)Math.PI / 180f); Console.WriteLine("total slicing: {0} ms", sw.ElapsedMilliseconds); sw.Restart(); //visualize Visualize vis = new Visualize(w, h); pictureBox1.Image = vis.show_Slices(slices, xdiv, ydiv); Console.WriteLine("visualize: {0} ms", sw.ElapsedMilliseconds); sw.Restart(); //gcode gcode = new Gcode(); gcode.ZStep = appset.zstep; gcode.header = appset.gcode_header; gcode.footer = appset.gcode_footer; gcode.WallThickness = appset.WallThickness; gcode.FilamentDiameter = appset.FilamentDiameter; gcode.PrintSpeed = appset.PrintSpeed; gcode.PrintPerimeter = appset.PrintPerimeter; gcode.Append(slices); Console.WriteLine("gcode: {0} ms", sw.ElapsedMilliseconds); sw.Restart(); //show info txtInfo.Text = gcode.info().Replace(";", "").Replace("\n", "\r\n") + mesh.ToString() + "\r\n" + string.Format("Mesh Facets {0:0.}\r\n", mesh.Facets.Length) + string.Format("Layers {0:0.}\r\n", slices.slices.Count) + string.Format("Line Segments {0:0.}\r\n", slices.LineSegmentCount()); //clear settings isdirty flag appset.IsDirtyClearFlag(); return(true); }