Parameters
- material
- Material instance to check. If null, the method will collect indices of all patches that have null material.
Return Value
Returns an array of patch indices. The array is empty if no patches reference the given material instance.
var coords_face1 = new List<Coordinate3D>() { new Coordinate3D(12.495461061000071,41.902603910000039,62.552700000000186), new Coordinate3D(12.495461061000071,41.902603910000039,59.504700000004959), new Coordinate3D(12.495461061000071,41.902576344000067,59.504700000004959), new Coordinate3D(12.495461061000071,41.902603910000039,62.552700000000186), new Coordinate3D(12.495461061000071,41.902576344000067,59.504700000004959), new Coordinate3D(12.495461061000071,41.902576344000067,62.552700000000186), }; var coords_face2 = new List<Coordinate3D>() { new Coordinate3D(12.495461061000071, 41.902576344000067, 62.552700000000186), new Coordinate3D(12.495461061000071, 41.902576344000067, 59.504700000004959), new Coordinate3D(12.495488442000067, 41.902576344000067, 59.504700000004959), new Coordinate3D(12.495461061000071, 41.902576344000067, 62.552700000000186), new Coordinate3D(12.495488442000067, 41.902576344000067, 59.504700000004959), new Coordinate3D(12.495488442000067, 41.902576344000067, 62.552700000000186), }; var coords_face3 = new List<Coordinate3D>() { new Coordinate3D(12.495488442000067, 41.902576344000067, 62.552700000000186), new Coordinate3D(12.495488442000067, 41.902576344000067, 59.504700000004959), new Coordinate3D(12.495488442000067, 41.902603910000039, 59.504700000004959), new Coordinate3D(12.495488442000067, 41.902576344000067, 62.552700000000186), new Coordinate3D(12.495488442000067, 41.902603910000039, 59.504700000004959), new Coordinate3D(12.495488442000067, 41.902603910000039, 62.552700000000186), }; var coords_face4 = new List<Coordinate3D>() { new Coordinate3D(12.495488442000067, 41.902576344000067, 59.504700000004959), new Coordinate3D(12.495461061000071, 41.902576344000067, 59.504700000004959), new Coordinate3D(12.495461061000071, 41.902603910000039, 59.504700000004959), new Coordinate3D(12.495488442000067, 41.902576344000067, 59.504700000004959), new Coordinate3D(12.495461061000071, 41.902603910000039, 59.504700000004959), new Coordinate3D(12.495488442000067, 41.902603910000039, 59.504700000004959), }; var coords_face5 = new List<Coordinate3D>() { new Coordinate3D(12.495488442000067, 41.902603910000039, 59.504700000004959), new Coordinate3D(12.495461061000071, 41.902603910000039, 59.504700000004959), new Coordinate3D(12.495461061000071, 41.902603910000039, 62.552700000000186), new Coordinate3D(12.495488442000067, 41.902603910000039, 59.504700000004959), new Coordinate3D(12.495461061000071, 41.902603910000039, 62.552700000000186), new Coordinate3D(12.495488442000067, 41.902603910000039, 62.552700000000186), }; var coords_face6 = new List<Coordinate3D>() { new Coordinate3D(12.495488442000067, 41.902603910000039, 62.552700000000186), new Coordinate3D(12.495461061000071, 41.902603910000039, 62.552700000000186), new Coordinate3D(12.495461061000071, 41.902576344000067, 62.552700000000186), new Coordinate3D(12.495488442000067, 41.902603910000039, 62.552700000000186), new Coordinate3D(12.495461061000071, 41.902576344000067, 62.552700000000186), new Coordinate3D(12.495488442000067, 41.902576344000067, 62.552700000000186), }; // materials var materialRed = new BasicMaterial(); materialRed.Color = System.Windows.Media.Colors.Red; var materialTransparent = new BasicMaterial(); materialTransparent.Color = System.Windows.Media.Colors.White; materialTransparent.TransparencyPercent = 80; var blueTransparent = new BasicMaterial(materialTransparent); blueTransparent.Color = System.Windows.Media.Colors.SkyBlue; // create a list of patch objects var patches = new List<Patch>(); // create the multipatchBuilderEx object var mpb = new ArcGIS.Core.Geometry.MultipatchBuilderEx(); // make each patch using the appropriate coordinates and add to the patch list var patch = mpb.MakePatch(esriPatchType.Triangles); patch.Coords = coords_face1; patches.Add(patch); patch = mpb.MakePatch(esriPatchType.Triangles); patch.Coords = coords_face2; patches.Add(patch); patch = mpb.MakePatch(esriPatchType.Triangles); patch.Coords = coords_face3; patches.Add(patch); patch = mpb.MakePatch(esriPatchType.Triangles); patch.Coords = coords_face4; patches.Add(patch); patch = mpb.MakePatch(esriPatchType.Triangles); patch.Coords = coords_face5; patches.Add(patch); patch = mpb.MakePatch(esriPatchType.Triangles); patch.Coords = coords_face6; patches.Add(patch); patches[0].Material = materialRed; patches[1].Material = materialTransparent; patches[2].Material = materialRed; patches[3].Material = materialRed; patches[4].Material = materialRed; patches[5].Material = blueTransparent; // assign the patches to the multipatchBuilder mpb.Patches = patches; // check which patches currently contain the material var red = mpb.QueryPatchIndicesWithMaterial(materialRed); // red should be [0, 2, 3, 4] // call ToGeometry to get the multipatch multipatch = mpb.ToGeometry() as Multipatch;
Target Platforms: Windows 10, Windows 8.1