예제 #1
0
 public static void MakeOffsetZ(IGeometry igeometry_0, double double_0)
 {
     if (igeometry_0 is IZ)
     {
         GeometryOperator.MakeZMAware(igeometry_0, true);
         IZ igeometry0 = igeometry_0 as IZ;
         igeometry0.CalculateNonSimpleZs();
         igeometry0.OffsetZs(double_0);
     }
 }
예제 #2
0
        public static IGeometry Mirror(IGeometry igeometry_0, ILine iline_0)
        {
            IGeometry        geometry;
            IPointCollection igeometry0;
            object           value;
            int i;
            IPointCollection polylineClass = null;

            if (igeometry_0 is IPolyline)
            {
                polylineClass = new Polyline();
            }
            else if (!(igeometry_0 is IPolygon))
            {
                if (igeometry_0 is IMultipoint)
                {
                    polylineClass = new Multipoint();
                    igeometry0    = igeometry_0 as IPointCollection;
                    value         = Missing.Value;
                    for (i = 0; i < igeometry0.PointCount; i++)
                    {
                        polylineClass.AddPoint(GeometryOperator.Mirror(igeometry0.Point[i], iline_0), ref value,
                                               ref value);
                    }
                    geometry = polylineClass as IGeometry;
                    return(geometry);
                }
                if (!(igeometry_0 is IPoint))
                {
                    geometry = null;
                    return(geometry);
                }
                else
                {
                    geometry = GeometryOperator.Mirror(igeometry_0 as IPoint, iline_0);
                    return(geometry);
                }
            }
            else
            {
                polylineClass = new Polygon();
            }
            igeometry0 = igeometry_0 as IPointCollection;
            value      = Missing.Value;
            for (i = 0; i < igeometry0.PointCount; i++)
            {
                polylineClass.AddPoint(GeometryOperator.Mirror(igeometry0.Point[i], iline_0), ref value, ref value);
            }
            geometry = polylineClass as IGeometry;
            return(geometry);
        }
예제 #3
0
        public static IGeometry Mirror(IGeometry igeometry_0, IPolyline ipolyline_0)
        {
            ILine segment = (ipolyline_0 as ISegmentCollection).Segment[0] as ILine;

            return(GeometryOperator.Mirror(igeometry_0, segment));
        }
예제 #4
0
        public IPolyline Cut(IPoint ipoint_0, IPoint ipoint_1, double double_0)
        {
            IPoint    point;
            bool      flag;
            int       num;
            int       num1;
            IPoint    point1;
            int       num2;
            IPolyline polyline;
            IPolyline mPGeometry = this.m_pGeometry as IPolyline;
            bool      flag1      = false;
            int       num3       = -1;
            int       num4       = -1;
            double    num5       = 0;
            int       num6       = -1;
            int       num7       = -1;
            bool      flag2      = GeometryOperator.TestGeometryHit(double_0, ipoint_0, mPGeometry, out point, ref num5, ref num6,
                                                                    ref num3, out flag1);
            bool flag3 = flag2;

            if ((!flag2 ? false : !flag1))
            {
                mPGeometry.SplitAtPoint(point, true, false, out flag, out num, out num1);
                if (flag)
                {
                    GeometryOperator.TestGeometryHit(double_0, ipoint_0, mPGeometry, out point, ref num5, ref num6,
                                                     ref num3, out flag1);
                }
            }
            bool flag4 = GeometryOperator.TestGeometryHit(double_0, ipoint_1, mPGeometry, out point1, ref num5, ref num7,
                                                          ref num4, out flag1);
            bool flag5 = flag4;

            if ((!flag4 ? false : !flag1))
            {
                mPGeometry.SplitAtPoint(point, true, false, out flag, out num, out num1);
                if (flag)
                {
                    if (num3 >= num4)
                    {
                        num3++;
                    }
                    GeometryOperator.TestGeometryHit(double_0, ipoint_1, mPGeometry, out point1, ref num5, ref num7,
                                                     ref num4, out flag1);
                }
            }
            if ((!flag3 ? true : !flag5))
            {
                polyline = null;
            }
            else
            {
                if (num6 > num7)
                {
                    num2 = num6;
                    num6 = num7;
                    num7 = num2;
                    num2 = num3;
                    num3 = num4;
                    num4 = num2;
                }
                else if ((num6 != num7 ? false : num3 > num4))
                {
                    num2 = num3;
                    num3 = num4;
                    num4 = num2;
                }
                polyline = this.method_1(mPGeometry, num6, num3, num7, num4) as IPolyline;
            }
            return(polyline);
        }