1

私の名前はバートです。ここで解決策を見つけるのではなく、実際に質問を投稿するのはこれが初めてです。

私は現在、Rhino 用の非常にシンプルなプラグインに取り組んでいます。

想定されること:

ポイントの構造化されたグリッドを選択します。プラグインは、X 位置に基づいてポイントをグループ化し、ポイントを介して NURB カーブを補間します。

現時点では、これは私のコードです:

       var go = new Rhino.Input.Custom.GetObject();
        go.SetCommandPrompt("Select All Points");
        go.GeometryFilter = Rhino.DocObjects.ObjectType.Point;
        go.GetMultiple(2,0);

        if (go.CommandResult() != Rhino.Commands.Result.Success)
            return go.CommandResult();

        var o = go.Objects().Select(objRef => objRef.Point()).GroupBy(p => Math.Round (p.Location.X, 2)).ToList();

        Rhino.Commands.Result rc = Rhino.Commands.Result.Success;

        foreach (var ylist in o)
        {
            var sortedList = ylist.OrderBy(p => p.Location.Y);

            Rhino.Collections.Point3dList points = new Rhino.Collections.Point3dList();

            foreach (var point in sortedList)
            {
                Rhino.RhinoApp.WriteLine("Coordinates are: {0}, {1}, {2}", point.Location.X, point.Location.Y, point.Location.Z);
                points.Add(point.Location.X, point.Location.Y, point.Location.Z);
            }

            //Rhino.Geometry.NurbsCurve nc = Rhino.Geometry.NurbsCurve.Create(false, 3, points);
            Rhino.Geometry.Curve nc = Rhino.Geometry.Curve.CreateInterpolatedCurve(points, 3, CurveKnotStyle.Uniform);


            if (nc != null && nc.IsValid)
            {
                if (doc.Objects.AddCurve(nc) != Guid.Empty)
                {
                    doc.Views.Redraw();
                }
                else
                {
                    rc = Rhino.Commands.Result.Failure;
                }
            }

        }

        return rc;

        return Result.Success;
    }

ご覧のとおり、NURB カーブを生成するために 2 つの方法を試しました (そのうちの 1 つはコメント アウトされています)。ただし、どちらも望ましい結果にはなりません。ポイントを介して曲線をフィットさせ (Rhino の _CurveThroughPt 関数に似ています)、ポイントをコントロールポイントとして使用したくありません。

誰かが私に解決策や方向性を教えてもらえますか? stackoverflow で古い質問と解決策を見ましたが、それは 2009 年と VB のものでした (そして、その機能は明らかに存在しません)。とてもありがたいです!!!

よろしく、バート

4

1 に答える 1

0

どうやら、デバッグ中に問題が発生し、新しいコードが Rhino に読み込まれませんでした。

実際、CreateInterpolatedCurve は、Rhino の _CurveThroughPt 関数と同じ結果をもたらします。

よろしく、バート

于 2013-09-26T06:34:34.767 に答える