Пример #1
0
        /// <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));
        }
Пример #2
0
        /// <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));
        }