ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Core.Geometry Namespace / Multipatch Class / GetPatchTextureCoordinate Method
The index of the patch. Must be greater than or equal to zero and less than PartCount.
The index of the point. Must be greater than or equal to zero and less than number of texture coordinates returned from GetPatchTextureVertexCount.
Example Version

GetPatchTextureCoordinate Method
Gets the texture coordinate for the specified patch (part) at the point index.
Syntax
public Coordinate2D GetPatchTextureCoordinate( 
   int patchIndex,
   int pointIndex
)

Parameters

patchIndex
The index of the patch. Must be greater than or equal to zero and less than PartCount.
pointIndex
The index of the point. Must be greater than or equal to zero and less than number of texture coordinates returned from GetPatchTextureVertexCount.

Return Value

The coordinate for the texture.
Exceptions
ExceptionDescription
The patch index must be >= 0.
The patch index must be less than the number of patches (parts) in the multipatch.
The point index must be >= 0.
The point index must be less than the number of vertex coordinates for the patch. See GetPatchTextureVertexCount.
Example
Multipatch Properties
// standard geometry properties
bool hasZ = multipatch.HasZ;
bool hasM = multipatch.HasM;
bool hasID = multipatch.HasID;
bool isEmpty = multipatch.IsEmpty;
var sr = multipatch.SpatialReference;

// number of patches (parts)
int patchCount = multiPatch.PartCount;
// number of points
int pointCount = multiPatch.PointCount;

// retrieve the points as MapPoints
ReadOnlyPointCollection points = multipatch.Points;
// or as 3D Coordinates
IReadOnlyList<Coordinate3D> coordinates = multipatch.Copy3DCoordinatesToList();


// multipatch materials
bool hasMaterials = multiPatch.HasMaterials;
int materialCount = multiPatch.MaterialCount;


// multipatch textures
bool hasTextures = multiPatch.HasTextures;
int textureVertexCount = multiPatch.TextureVertexCount;

// normals
bool hasNormals = multiPatch.HasNormals;


// properties for an individual patch (if multipatch.PartCount > 0)
int patchPriority = multiPatch.GetPatchPriority(patchIndex);
PatchType patchType = multiPatch.GetPatchType(patchIndex);

// patch points
int patchPointCount = multiPatch.GetPatchPointCount(patchIndex);
int pointStartIndex = multiPatch.GetPatchStartPointIndex(patchIndex);
// the patch Points are then the points in multipatch.Points from pointStartIndex to pointStartIndex + patchPointCount 

// if the multipatch has materials 
if (hasMaterials)
{
  // does the patch have a material?  
  //   materialIndex = -1 if the patch does not have a material; 
  //   0 <= materialIndex < materialCount if the patch does have materials
  int materialIndex = multipatch.GetPatchMaterialIndex(patchIndex);


  // properties for an individual material (if multipatch.MaterialCount > 0)
  var color = multipatch.GetMaterialColor(materialIndex);
  var edgeColor = multipatch.GetMaterialEdgeColor(materialIndex);
  var edgeWidth = multipatch.GetMaterialEdgeWidth(materialIndex);
  var shiness = multipatch.GetMaterialShininess(materialIndex);
  var percent = multipatch.GetMaterialTransparencyPercent(materialIndex);
  var cullBackFace = multipatch.IsMaterialCullBackFace(materialIndex);

  // texture properties
  bool isTextured = multipatch.IsMaterialTextured(materialIndex);
  if (isTextured)
  {
    int columnCount = multipatch.GetMaterialTextureColumnCount(materialIndex);
    int rowCount = multipatch.GetMaterialTextureRowCount(materialIndex);
    int bpp = multipatch.GetMaterialTextureBytesPerPixel(materialIndex);
    TextureCompressionType compressionType = multipatch.GetMaterialTextureCompressionType(materialIndex);
    var texture = multipatch.GetMaterialTexture(materialIndex);
  }
}

// texture coordinates (if multipatch.HasTextures = true)
if (hasTextures)
{
  int numPatchTexturePoints = multiPatch.GetPatchTextureVertexCount(patchIndex);
  var coordinate2D = multiPatch.GetPatchTextureCoordinate(patchIndex, 0);

  ICollection<Coordinate2D> textureCoordinates = new List<Coordinate2D>(numPatchTexturePoints);
  multiPatch.GetPatchTextureCoordinates(patchIndex, ref textureCoordinates);
}


// patch normals (if multipatch.HasNormals = true)
if (hasNormals)
{
  //  number of normal coordinates = multipatch.GetPatchPointCount(patchIndex)
  Coordinate3D patchNormal = multipatch.GetPatchNormal(patchIndex, 0);
  ICollection<Coordinate3D> normalCoordinates = new List<Coordinate3D>(patchPointCount);
  multipatch.GetPatchNormals(patchIndex, ref normalCoordinates);
}

Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also