/// <summary> /// Creates a new Polyline that is the result of projecting the Polyline3d parallel to 'direction' onto 'plane' and /// returns it. /// </summary> /// <param name="pline">The polyline to project.</param> /// <param name="plane">The plane onto which the curve is to be projected.</param> /// <param name="direction">Direction (in WCS coordinates) of the projection.</param> /// <returns>The projected Polyline.</returns> public static Polyline GetProjectedPolyline(this Polyline3d pline, Plane plane, Vector3d direction) { if (plane.Normal.IsPerpendicularTo(direction, new Tolerance(1e-9, 1e-9))) { return(null); } return(GeomExt.ProjectPolyline(pline, plane, direction)); }
/// <summary> /// Creates a new Polyline that is the result of projecting the Polyline2d parallel to 'direction' onto 'plane' and /// returns it. /// </summary> /// <param name="pline">The polyline to project.</param> /// <param name="plane">The plane onto which the curve is to be projected.</param> /// <param name="direction">Direction (in WCS coordinates) of the projection.</param> /// <returns>The projected Polyline.</returns> public static Polyline GetProjectedPolyline(this Polyline2d pline, Plane plane, Vector3d direction) { var tol = new Tolerance(1e-9, 1e-9); if (plane.Normal.IsPerpendicularTo(direction, tol)) { return(null); } if (pline.Normal.IsPerpendicularTo(direction, tol)) { var dirPlane = new Plane(Point3d.Origin, direction); if (!pline.IsWriteEnabled) { pline.UpgradeOpen(); } pline.TransformBy(Matrix3d.WorldToPlane(dirPlane)); var extents = pline.GeometricExtents; pline.TransformBy(Matrix3d.PlaneToWorld(dirPlane)); return(GeomExt.ProjectExtents(extents, plane, direction, dirPlane)); } return(GeomExt.ProjectPolyline(pline, plane, direction)); }