コード例 #1
0
        public static NurbsCurve ToRhino(this DB.Ellipse ellipse)
        {
            var plane      = new Plane(ellipse.Center.ToRhino(), new Vector3d(ellipse.XDirection.ToRhino()), new Vector3d(ellipse.YDirection.ToRhino()));
            var e          = new Ellipse(plane, ellipse.RadiusX, ellipse.RadiusY);
            var nurbsCurve = e.ToNurbsCurve();

            if (ellipse.IsBound)
            {
                nurbsCurve.ClosestPoint(ellipse.GetEndPoint(0).ToRhino(), out var param0);
                nurbsCurve.ClosestPoint(ellipse.GetEndPoint(1).ToRhino(), out var param1);
                nurbsCurve        = nurbsCurve.Trim(param0, param1) as NurbsCurve;
                nurbsCurve.Domain = new Interval(ellipse.GetEndParameter(0), ellipse.GetEndParameter(1));
            }

            return(nurbsCurve);
        }
コード例 #2
0
        public static NurbsCurve ToRhino(DB.Ellipse ellipse)
        {
            var plane      = new Plane(AsPoint3d(ellipse.Center), AsVector3d(ellipse.XDirection), AsVector3d(ellipse.YDirection));
            var e          = new Ellipse(plane, ellipse.RadiusX, ellipse.RadiusY);
            var nurbsCurve = e.ToNurbsCurve();

            if (ellipse.IsBound)
            {
                nurbsCurve.ClosestPoint(AsPoint3d(ellipse.GetEndPoint(0)), out var param0);
                if (!nurbsCurve.ChangeClosedCurveSeam(param0))
                {
                    nurbsCurve.Domain = new Interval(param0, param0 + nurbsCurve.Domain.Length);
                }

                nurbsCurve.ClosestPoint(AsPoint3d(ellipse.GetEndPoint(1)), out var param1);
                nurbsCurve        = nurbsCurve.Trim(param0, param1) as NurbsCurve;
                nurbsCurve.Domain = new Interval(ellipse.GetEndParameter(0), ellipse.GetEndParameter(1));
            }

            return(nurbsCurve);
        }