首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >_CurveThroughPt rhino3d软件开发工具包(C# )

_CurveThroughPt rhino3d软件开发工具包(C# )
EN

Stack Overflow用户
提问于 2013-09-25 22:37:49
回答 1查看 349关注 0票数 1

我的名字是Bart,这是我第一次真正发布问题,而不是在这里找到解决方案。

我目前正在为Rhino开发一个非常简单的插件。

它应该做的是:

您可以选择点的结构化栅格。该插件基于X位置对点进行分组,然后通过这些点对NURB曲线进行插值。

目前,这是我的代码:

代码语言:javascript
复制
       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曲线(其中一种已被注释掉)。然而,两者都没有预期的结果。我希望通过点来拟合曲线(类似于Rhino中的_CurveThroughPt函数),而不是使用这些点作为控制点。

有人能给我一个解决方案或方向吗?我看到了一个关于stackoverflow的老问题和解决方案,但那是在2009年和VB中(那个函数显然已经不存在了)。非常感谢!

致以最好的问候,巴特

EN

回答 1

Stack Overflow用户

发布于 2013-09-26 14:34:35

显然,在调试过程中出现了错误,并且新代码没有加载到Rhino中。

实际上,CreateInterpolatedCurve给出了与Rhino中的_CurveThroughPt函数相同的结果。

致以最好的问候,巴特

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19007908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档