示例#1
0
        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);
        }
示例#2
0
        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);
        }