Пример #1
0
        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);
        }