/** * Does the computation */ protected override void SolveRabbitInstance(IGH_DataAccess DA) { //PARSE THE INPUT PARAMS: String sourceString = null; DA.GetData <String>(0, ref sourceString);//param index, place holder Double defaultStep = 0.0; DA.GetData <Double>(1, ref defaultStep);//param index, variable Double stepLengthScale = 0.0; DA.GetData <Double>(2, ref stepLengthScale);//param index, variable Double defaultAngleIncrement = 0.0; DA.GetData <Double>(3, ref defaultAngleIncrement); Double defaultAngleScale = 0.7; DA.GetData <Double>(4, ref defaultAngleScale);//param index, variable GH_Plane ghPlane = null; DA.GetData <GH_Plane>(5, ref ghPlane);//param index, variable Plane rhinoPlane = ghPlane.Value; //Loft settings Boolean loftSkeleton = false; GH_ObjectWrapper loftSkeletonSettingsWrapper = null; DA.GetData <GH_ObjectWrapper>(6, ref loftSkeletonSettingsWrapper); Double defaultThickness = -1; Double defaultThicknessScale = -1; Curve profile = new Circle(5).ToNurbsCurve(); Plane profilePivot = Plane.Unset; if (loftSkeletonSettingsWrapper != null && loftSkeletonSettingsWrapper.Value != null) { loftSkeleton = true; GH_TubeSettings loftSkeletonSettings = (GH_TubeSettings)loftSkeletonSettingsWrapper.Value; defaultThickness = loftSkeletonSettings.defaultThickness; defaultThicknessScale = loftSkeletonSettings.defaultThicknessScale; profile = loftSkeletonSettings.profile; profilePivot = loftSkeletonSettings.profilePivot; } //clear the canvas canvas.Clear(); Turtle3d Turtle = new Turtle3d(canvas, new Point3d(rhinoPlane.Origin.X, rhinoPlane.Origin.Y, rhinoPlane.Origin.Z), new Plane(rhinoPlane.Origin, rhinoPlane.XAxis, rhinoPlane.YAxis), defaultStep, stepLengthScale, defaultAngleIncrement, profile, profilePivot, defaultThickness, defaultThicknessScale, loftSkeleton);//clone the input variables, because they could have been modified in a previous solution //interpret the specified source string RLogoInterpreter rlogoInterpreter = new RLogoInterpreter(Turtle); rlogoInterpreter.Interpret(sourceString); if (loftSkeleton) { Brep[] breps = Turtle.LoftSkeleton(); foreach (Brep brep in breps) { canvas.AddGeometry(brep); } } Boolean showTurtlePositions = false; //Set the resulting Graphics in the output: DA.SetDataList(0, canvas.GetEdges()); DA.SetDataList(1, canvas.GetVertices()); DA.SetDataList(2, canvas.GetGeometry()); if (showTurtlePositions) { DA.SetDataList(3, canvas.GetPlanes()); } DA.SetDataList(4, canvas.GetProfiles()); //DA.SetDataTree }