This document is archived and information here might be outdated.  Recommended version.


esriMultiPatchRingType Constants (ArcObjects .NET 10.8 SDK)
ArcObjects Help for .NET developers > ArcObjects Help for .NET developers > ArcObjects namespaces > Geometry > ESRI.ArcGIS.Geometry > Constants > E > esriMultiPatchRingType Constants
ArcGIS Developer Help

esriMultiPatchRingType Constants

MultiPatch Ring Types.

Constant Value Description
esriMultiPatchInvalidRing 1 Invalid Ring.
esriMultiPatchUndefinedRing 2 Ring type has not been defined.
esriMultiPatchFirstRing 4 The beginning FirstRing in a FirstRing/Ring sequence.
esriMultiPatchRing 8 A following Ring in a FirstRing/Ring sequence or a beginning Ring in a solo Ring group.
esriMultiPatchOuterRing 16 The beginning OuterRing in an OuterRing/InnerRing sequence.
esriMultiPatchInnerRing 32 A following InnerRing in an OuterRing/InnerRing sequence.
esriMultiPatchBeginningRingMask 28 A mask of valid beginning rings (OuterRings, FirstRings, and solo Rings).
esriMultiPatchFollowingRingMask 40 A mask of valid following rings (InnerRings and Rings).
esriMultiPatchProblemCaseRingMask 3 A mask of problematic rings (UndefinedRings and InvalidRings).

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Remarks


[C#]

private static object _missing = Type.Missing;
public static IGeometry GetMultiPatchGeometry()
{
    const int XRange = 16;
    const int YRange = 16;
    const int InteriorRingCount = 25;
    const double HoleRange = 0.5;
    //RingGroup: Square Lying In XY Plane With Single Exterior Ring
    //             And Multiple Interior Rings

    IGeometryCollection multiPatchGeometryCollection = new MultiPatchClass();
    IMultiPatch multiPatch = multiPatchGeometryCollection as IMultiPatch;

    //Exterior Ring
    IPointCollection exteriorRingPointCollection = new RingClass();

    exteriorRingPointCollection.AddPoint(ConstructPoint3D(0.5 * (XRange + 2), -0.5 * (YRange + 2), 0), ref _missing, ref _missing);
    exteriorRingPointCollection.AddPoint(ConstructPoint3D(-0.5 * (XRange + 2), -0.5 * (YRange + 2), 0), ref _missing, ref _missing);
    exteriorRingPointCollection.AddPoint(ConstructPoint3D(-0.5 * (XRange + 2), 0.5 * (YRange + 2), 0), ref _missing, ref _missing);
    exteriorRingPointCollection.AddPoint(ConstructPoint3D(0.5 * (XRange + 2), 0.5 * (YRange + 2), 0), ref _missing, ref _missing);

    IRing exteriorRing = exteriorRingPointCollection as IRing;
    exteriorRing.Close();

    multiPatchGeometryCollection.AddGeometry(exteriorRing as IGeometry, ref _missing, ref _missing);
    multiPatch.PutRingType(exteriorRing, esriMultiPatchRingType.esriMultiPatchOuterRing);

    //Interior Rings
    Random random = new Random();

    for (int i = 0; i < InteriorRingCount; i++)
    {
        double interiorRingOriginX = XRange * (random.NextDouble() - 0.5);
        double interiorRingOriginY = YRange * (random.NextDouble() - 0.5);

        IPointCollection interiorRingPointCollection = new RingClass();
        interiorRingPointCollection.AddPoint(ConstructPoint3D(interiorRingOriginX - 0.5 * HoleRange, interiorRingOriginY - 0.5 * HoleRange, 0), ref _missing, ref _missing);
        interiorRingPointCollection.AddPoint(ConstructPoint3D(interiorRingOriginX + 0.5 * HoleRange, interiorRingOriginY - 0.5 * HoleRange, 0), ref _missing, ref _missing);
        interiorRingPointCollection.AddPoint(ConstructPoint3D(interiorRingOriginX + 0.5 * HoleRange, interiorRingOriginY + 0.5 * HoleRange, 0), ref _missing, ref _missing);
        interiorRingPointCollection.AddPoint(ConstructPoint3D(interiorRingOriginX - 0.5 * HoleRange, interiorRingOriginY + 0.5 * HoleRange, 0), ref _missing, ref _missing);

        IRing interiorRing = interiorRingPointCollection as IRing;
        interiorRing.Close();

        multiPatchGeometryCollection.AddGeometry(interiorRing as IGeometry, ref _missing, ref _missing);

        multiPatch.PutRingType(interiorRing, esriMultiPatchRingType.esriMultiPatchInnerRing);
    }

    return multiPatchGeometryCollection as IGeometry;
}

public static IPoint ConstructPoint3D(double x, double y, double z)
{
    IPoint point = ConstructPoint2D(x, y);
    point.Z = z;

    return point;
}

public static IPoint ConstructPoint2D(double x, double y)
{
    IPoint point = new PointClass();
    point.PutCoords(x, y);

    return point;
}

[C++]
[Visual Basic .NET]

.NET Samples

3D multipatch examples 3D multipatch examples