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); }
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); }