/// <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); }
/// <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); }