Esempio n. 1
0
        /*
         * // TODO
         * public void AppendAsPath(Printable printable)
         * {
         *  this.Paths.Add(printable.GetPath());
         *
         *  or
         *
         *  this.Path.Add(Printable.GenerateInstructions())
         * }
         */

        /// <summary>
        /// Append a PrintPolyline as a path.
        /// </summary>
        /// <param name="ppl"></param>
        public void AppendAsPath(V2GPrintPolyline ppl)
        {
            V2GPath path = new V2GPath();

            foreach (V2GPrintPosition PrintPosition in ppl.PrintPositions)
            {
                V2GInstruction seg;
                if (path.Segments.Count == 0)
                {
                    seg = new V2GMovement(PrintPosition, 7200.0); // First: PrintMovement
                }
                else
                {
                    seg = new V2GPrintSegment(PrintPosition); // Others: PrintSegment
                }
                path.Segments.Add(seg);
            }
            Paths.Add(path);
        }
Esempio n. 2
0
        /// <summary>
        /// Construct a printable polyline.
        /// </summary>
        /// <param name="PolyCurve">a</param>
        /// <param name="MaterialAmount">a</param>
        /// <param name="Speed">a</param>
        /// <param name="Toolhead">a</param>
        /// <param name="MixPercentage">a</param>
        /// <returns name="PrintPolyline">A newly-constructed ZeroTouchEssentials object.</returns>

        public static V2GPrintPolyline PrintPolyline(
            Autodesk.DesignScript.Geometry.PolyCurve PolyCurve,
            double MaterialAmount = 0.033,
            double Speed          = 700.0,
            int Toolhead          = 0,
            double MixPercentage  = 0.0)
        {
            int i = 0;
            V2GPrintPolyline printPolyline = new V2GPrintPolyline();

            foreach (Curve c in PolyCurve.Curves())
            {
                if (i == 0)
                {
                    printPolyline.AddPrintPosition(V2GDesignScriptGeometry.V2GPoint(c.StartPoint));
                }
                printPolyline.AddPrintPosition(V2GDesignScriptGeometry.V2GPoint(c.EndPoint));
            }
            return(printPolyline);
        }
Esempio n. 3
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object can be used to retrieve data from input parameters and
        /// to store data in output parameters.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            List <Curve>            curves         = new List <Curve>();
            List <Polyline>         polylines      = new List <Polyline>();
            List <V2GPrintPolyline> printPolylines = new List <V2GPrintPolyline>();
            List <Point3d>          points         = new List <Point3d>();

            List <double> MaterialAmount = new List <double>();
            List <double> Speed          = new List <double>();
            List <int>    Toolhead       = new List <int>();
            List <double> MixPercentage  = new List <double>();

            if (!DA.GetDataList(0, curves))
            {
                return;
            }
            if (!DA.GetDataList(1, MaterialAmount))
            {
                return;
            }
            if (!DA.GetDataList(2, Speed))
            {
                return;
            }
            if (!DA.GetDataList(3, Toolhead))
            {
                return;
            }
            if (!DA.GetDataList(4, MixPercentage))
            {
                return;
            }

            foreach (Curve c in curves)
            {
                if (c.IsPolyline())
                {
                    Polyline pl;
                    if (c.TryGetPolyline(out pl))
                    {
                        polylines.Add(pl);

                        /*foreach (Point3d p in pl)
                         * {
                         *  points.Add(p);
                         * }*/
                    }
                }
            }

            int    idx             = 0;
            double _Speed          = Speed[0];
            double _MaterialAmount = MaterialAmount[0];
            int    _Head           = Toolhead[0];
            double _MixPercentage  = MixPercentage[0];

            foreach (Polyline pl in polylines)
            {
                if (Speed.Count - 1 >= idx)
                {
                    _Speed = Speed[idx];
                }
                if (MaterialAmount.Count - 1 >= idx)
                {
                    _MaterialAmount = MaterialAmount[idx];
                }
                if (Toolhead.Count - 1 >= idx)
                {
                    _Head = Toolhead[idx];
                }
                if (MixPercentage.Count - 1 >= idx)
                {
                    _MixPercentage = MixPercentage[idx];
                }

                V2GPrintPolyline ppl = new V2GPrintPolyline();
                foreach (Point3d p in pl)
                {
                    ppl.AddPrintPosition(new V2GPoint(p.X, p.Y, p.Z), _Speed, _MaterialAmount, _Head, _MixPercentage);
                }
                printPolylines.Add(ppl);
                idx++;
            }

            DA.SetDataList(0, printPolylines);
            DA.SetDataList(1, polylines);
        }