public static void ConvertOptimisedTTMToMutableTTM(VSS.TRex.Designs.TTM.Optimised.TrimbleTINModel ttm, string fileName) { // Create a mutable TIN model, convert the optimized model into it, then extract the optimized index from it var mutableTTM = new VSS.TRex.Designs.TTM.TrimbleTINModel(); mutableTTM.Vertices.InitPointSearch(ttm.Vertices.Items.Min(x => x.X) - 1, ttm.Vertices.Items.Min(x => x.Y) - 1, ttm.Vertices.Items.Max(x => x.X) + 1, ttm.Vertices.Items.Max(x => x.Y) + 1, ttm.Vertices.Items.Length); // Create the vertices foreach (var v in ttm.Vertices.Items) { mutableTTM.Vertices.AddPoint(v.X, v.Y, v.Z); } // Create the triangles foreach (var tri in ttm.Triangles.Items) { mutableTTM.Triangles.AddTriangle( mutableTTM.Vertices[tri.Vertex0], mutableTTM.Vertices[tri.Vertex1], mutableTTM.Vertices[tri.Vertex2]); } mutableTTM.SaveToFile(fileName, true); }
public static bool CreateOptimisedIndexForModel(VSS.TRex.Designs.TTM.Optimised.TrimbleTINModel ttm, out OptimisedSpatialIndexSubGridTree tree, out int[] triangleIndices) { const double CellSize = 1.0; tree = null; triangleIndices = null; var indexBuilder = new OptimisedTTMSpatialIndexBuilder(ttm, CellSize); if (indexBuilder.ConstructSpatialIndex()) { tree = indexBuilder.SpatialIndexOptimised; triangleIndices = indexBuilder.SpatialIndexOptimisedTriangles; return(true); } return(false); }