Ejemplo n.º 1
0
        static void generate_square(SingleMaterialFFFCompiler compiler,
                                    SingleMaterialFFFSettings settings)
        {
            ToolpathSetBuilder builder = new ToolpathSetBuilder();

            builder.Initialize(compiler.NozzlePosition);

            // layer-up
            builder.AppendZChange(settings.LayerHeightMM, settings.ZTravelSpeed);

            // draw rectangle
            float left = 0, right = 50, bottom = -20, top = 20;

            builder.AppendTravel(new Vector2d(left, bottom), settings.RapidTravelSpeed);
            builder.AppendExtrude(new Vector2d(right, bottom), settings.CarefulExtrudeSpeed);
            builder.AppendExtrude(new Vector2d(right, top), settings.CarefulExtrudeSpeed);
            builder.AppendExtrude(new Vector2d(left, top), settings.CarefulExtrudeSpeed);
            builder.AppendExtrude(new Vector2d(left, bottom), settings.CarefulExtrudeSpeed);

            compiler.AppendPaths(builder.Paths, settings);
        }
Ejemplo n.º 2
0
        static void generate_vertical_wave(SingleMaterialFFFCompiler compiler,
                                           SingleMaterialFFFSettings settings)
        {
            ToolpathSetBuilder builder = new ToolpathSetBuilder();

            builder.Initialize(compiler.NozzlePosition);

            // layer-up
            builder.AppendZChange(settings.LayerHeightMM, settings.ZTravelSpeed);

            int       N      = 24;
            Polygon2d circle = Polygon2d.MakeCircle(15.0f, N, -MathUtil.HalfPI);

            int REPEAT = 5;

            for (int ri = 0; ri < REPEAT; ++ri)
            {
                builder.AppendTravel(circle[0], settings.RapidTravelSpeed);
                for (int k = 1; k <= N; k++)
                {
                    builder.AppendExtrude(circle[k % N], settings.CarefulExtrudeSpeed / 4);
                }
                builder.AppendZChange(settings.LayerHeightMM, settings.ZTravelSpeed);

                builder.AppendTravel(circle[0], settings.RapidTravelSpeed);
                for (int k = 1; k <= N; k++)
                {
                    builder.AppendExtrude(circle[k % N], settings.CarefulExtrudeSpeed / 4);
                }
                builder.AppendZChange(settings.LayerHeightMM, settings.ZTravelSpeed);

                if (ri == REPEAT - 1)
                {
                    break;
                }

                // make on the move up we should also move 'back' a bit,
                // to counteract forward pull force?

                double height  = 1.0f;
                double h_fudge = 0.0f;
                double z_stick = -0.05f;
                double z_layer = builder.Position.z;
                double top_z   = z_layer + height + h_fudge;
                for (int k = 0; k < N - 1; k++)
                {
                    Vector2d pcur = circle[k % N], pnext = circle[(k + 1) % N];
                    Vector3d pUp = new Vector3d(pcur.x, pcur.y, top_z);
                    builder.AppendExtrude(pUp, settings.CarefulExtrudeSpeed / 8);
                    builder.AppendDwell(500, false);
                    Vector3d pDown = new Vector3d(pnext.x, pnext.y, z_layer + z_stick);
                    builder.AppendExtrude(pDown, settings.CarefulExtrudeSpeed / 8);
                }

                // move up to z_high
                Vector3d vpos = new Vector3d(circle[0].x, circle[0].y, z_layer + height);
                builder.AppendExtrude(vpos, settings.CarefulExtrudeSpeed / 8);
            }

            compiler.AppendPaths(builder.Paths, settings);
        }
Ejemplo n.º 3
0
        static void generate_vertical(SingleMaterialFFFCompiler compiler,
                                      SingleMaterialFFFSettings settings)
        {
            ToolpathSetBuilder builder = new ToolpathSetBuilder();

            builder.Initialize(compiler.NozzlePosition);

            // layer-up
            builder.AppendZChange(settings.LayerHeightMM, settings.ZTravelSpeed);

            // draw circle
            int       N      = 32;
            Polygon2d circle = Polygon2d.MakeCircle(25.0f, N, -MathUtil.HalfPI);

            builder.AppendTravel(circle[0], settings.RapidTravelSpeed);
            for (int k = 1; k <= N; k++)
            {
                builder.AppendExtrude(circle[k % N], settings.CarefulExtrudeSpeed);
            }

            // layer-up
            builder.AppendZChange(settings.LayerHeightMM, settings.ZTravelSpeed);

            double height  = 5.0f;
            double z_layer = builder.Position.z;
            double z_high  = z_layer + height;

            for (int k = 1; k <= N; k++)
            {
                Vector2d p2 = circle[k % N];
                double   z  = (k % 2 == 1) ? z_high : z_layer;
                Vector3d p3 = new Vector3d(p2.x, p2.y, z);
                builder.AppendExtrude(p3, settings.CarefulExtrudeSpeed / 4);

                // dwell at tops
                if (z == z_high)
                {
                    AssemblerCommandsToolpath dwell_path = new AssemblerCommandsToolpath()
                    {
                        AssemblerF = make_tip
                    };
                    builder.AppendPath(dwell_path);
                }
            }

            // move up to z_high
            builder.AppendZChange(height, settings.ZTravelSpeed);

            // draw circle again
            builder.AppendTravel(circle[0], settings.RapidTravelSpeed);
            for (int k = 1; k <= N; k++)
            {
                builder.AppendExtrude(circle[k % N], settings.RapidExtrudeSpeed);
            }


            // draw teeth again

            z_layer = builder.Position.z;
            z_high  = z_layer + height;
            for (int k = 1; k <= N; k++)
            {
                Vector2d p2 = circle[k % N];
                double   z  = (k % 2 == 1) ? z_high : z_layer;
                Vector3d p3 = new Vector3d(p2.x, p2.y, z);
                builder.AppendExtrude(p3, settings.CarefulExtrudeSpeed / 4);

                // dwell at tops
                if (z == z_high)
                {
                    AssemblerCommandsToolpath dwell_path = new AssemblerCommandsToolpath()
                    {
                        AssemblerF = make_tip
                    };
                    builder.AppendPath(dwell_path);
                }
            }


            // move up to z_high
            builder.AppendZChange(height, settings.ZTravelSpeed);

            // draw circle again
            builder.AppendTravel(circle[0], settings.RapidTravelSpeed);
            for (int k = 1; k <= N; k++)
            {
                builder.AppendExtrude(circle[k % N], settings.RapidExtrudeSpeed);
            }


            compiler.AppendPaths(builder.Paths, settings);
        }