コード例 #1
0
    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);
    }
コード例 #2
0
        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);
        }