static void Create() { GameObject gameObject = new GameObject("CurveMesh"); CurveObject cm = gameObject.AddComponent <CurveObject>(); MeshFilter meshFilter = gameObject.GetComponent <MeshFilter>(); meshFilter.mesh = new Mesh(); List <Vector3> controlPoints = new List <Vector3>(); controlPoints.Add(new Vector3() { x = 0.0f, y = 0.0f, z = 0.0f }); controlPoints.Add(new Vector3() { x = 40.0f, y = 1.0f, z = 0.0f }); controlPoints.Add(new Vector3() { x = 50.0f, y = 4.0f, z = 60.0f }); controlPoints.Add(new Vector3() { x = 100.0f, y = 0.0f, z = 80.0f }); controlPoints.Add(new Vector3() { x = 150.0f, y = 0.0f, z = 80.0f }); controlPoints.Add(new Vector3() { x = 200.0f, y = 0.0f, z = 140.0f }); // cm.CreateQuadMesh(); cm.CreateCatmullCurve(controlPoints, 0.0f); }
protected override Result RunCommand(RhinoDoc doc, RunMode mode) { RhinoApp.WriteLine("The {0} command will run now", EnglishName); ObjectType filter = ObjectType.Curve; int percent = 50; int degree = 3; RhinoGet.GetInteger("Enter the percentage you want to reduce the curves by (1-100)", true, ref percent); double reduce = ((double)percent) / 100; RhinoGet.GetInteger("Enter the new curve degree", true, ref degree); GetObject go = new GetObject(); go.SetCommandPrompt("Select curves you want to reduce"); go.GeometryFilter = filter; go.GroupSelect = true; GetResult get = go.GetMultiple(1, 0); for (int i = 0; i < go.ObjectCount; i++) { CurveObject curObj = (CurveObject)go.Object(i).Object(); Curve curCurve = curObj.CurveGeometry; NurbsCurve curNurbsCurve = curCurve.ToNurbsCurve(); int curControlPoints = curNurbsCurve.Points.Count; int newPoints = Convert.ToInt32(curControlPoints * reduce); Curve rebuiltCurve = curCurve.Rebuild(newPoints, degree, false); doc.Objects.Add(rebuiltCurve, curObj.Attributes); doc.Objects.Delete(curObj); } doc.Views.Redraw(); RhinoApp.WriteLine("The curves were rebuilt"); return(Result.Success); }