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(PatchType.Triangles); patch.Coords = coords_face1; patches.Add(patch); patch = mpb.MakePatch(PatchType.Triangles); patch.Coords = coords_face2; patches.Add(patch); patch = mpb.MakePatch(PatchType.Triangles); patch.Coords = coords_face3; patches.Add(patch); patch = mpb.MakePatch(PatchType.Triangles); patch.Coords = coords_face4; patches.Add(patch); patch = mpb.MakePatch(PatchType.Triangles); patch.Coords = coords_face5; patches.Add(patch); patch = mpb.MakePatch(PatchType.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;
var sr = MapView.Active.Map.SpatialReference; var extent = MapView.Active.Extent; var center = extent.Center; var centerZ = MapPointBuilderEx.CreateMapPoint(center.X, center.Y, 500, sr); // cube multipatch = ArcGIS.Core.Geometry.MultipatchBuilderEx.CreateMultipatch(MultipatchConstructType.Cube, centerZ, 200, sr); // tetrahedron multipatch = ArcGIS.Core.Geometry.MultipatchBuilderEx.CreateMultipatch(MultipatchConstructType.Tetrahedron, centerZ, 200, sr); // diamond multipatch = ArcGIS.Core.Geometry.MultipatchBuilderEx.CreateMultipatch(MultipatchConstructType.Diamond, centerZ, 200, sr); // hexagon multipatch = ArcGIS.Core.Geometry.MultipatchBuilderEx.CreateMultipatch(MultipatchConstructType.Hexagon, centerZ, 200, sr); // sphere frame multipatch = ArcGIS.Core.Geometry.MultipatchBuilderEx.CreateMultipatch(MultipatchConstructType.SphereFrame, centerZ, 200, 0.8, sr); // sphere multipatch = ArcGIS.Core.Geometry.MultipatchBuilderEx.CreateMultipatch(MultipatchConstructType.Sphere, centerZ, 200, 0.8, sr); // cylinder multipatch = ArcGIS.Core.Geometry.MultipatchBuilderEx.CreateMultipatch(MultipatchConstructType.Cylinder, centerZ, 200, 0.8, sr); // cone multipatch = ArcGIS.Core.Geometry.MultipatchBuilderEx.CreateMultipatch(MultipatchConstructType.Cone, centerZ, 200, 0.8, sr); // use the builder to add materials or textures // - create a cone with a material builder = new MultipatchBuilderEx(MultipatchConstructType.Cone, centerZ, 200, 0.8, sr); BasicMaterial faceMaterial = new BasicMaterial(); faceMaterial.Color = System.Windows.Media.Color.FromRgb(255, 0, 0); faceMaterial.Shininess = 150; faceMaterial.TransparencyPercent = 50; faceMaterial.EdgeWidth = 20; foreach (var patch in builder.Patches) patch.Material = faceMaterial; multipatch = builder.ToGeometry() as Multipatch;
// Create BasicMaterial with default values BasicMaterial material = new BasicMaterial(); System.Windows.Media.Color color = material.Color; // color = Colors.Black System.Windows.Media.Color edgeColor = material.EdgeColor; // edgeColor = Colors.Black int edgeWidth = material.EdgeWidth; // edgeWidth = 0 int transparency = material.TransparencyPercent; // transparency = 0 int shininess = material.Shininess; // shininess = 0 bool cullBackFace = material.IsCullBackFace; // cullBackFace = false // Modify the properties material.Color = System.Windows.Media.Colors.Red; material.EdgeColor = System.Windows.Media.Colors.Blue; material.EdgeWidth = 10; material.TransparencyPercent = 50; material.Shininess = 25; material.IsCullBackFace = true;
Target Platforms: Windows 11, Windows 10