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


esriMultiPatchRingType Constants (ArcObjects .NET 10.6 SDK)
ArcObjects Help for .NET developers > ArcObjects namespaces > Geometry > ESRI.ArcGIS.Geometry > Constants > E > esriMultiPatchRingType Constants (ArcObjects .NET 10.6 SDK)
ArcObjects Library Reference (Geometry)  

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 (Code Files: CompositeExamples RingGroupExamples)