Example #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MeshModelPart"/> class.
        /// </summary>
        /// <param name="metaData">The meta data.</param>
        /// <param name="meshes">The meshes.</param>
        /// <param name="edges">The edges.</param>
        /// <param name="meshValueLists">A list of data values for this model (deviations, minima, maxima, mean values, etc.).</param>
        /// <param name="thumbnail">The thumbnail.</param>
        public MeshModelPart(MeshModelMetadata metaData, IEnumerable <Mesh> meshes, IEnumerable <Edge> edges = null, IEnumerable <MeshValueList> meshValueLists = null, byte[] thumbnail = null)
        {
            ConstructGeometry(meshes, edges);
            Metadata = metaData;

            UpdateTriangulationHash();
            MeshValues = (meshValueLists ?? new MeshValueList[0]).ToArray();

            CheckMeshValueIntegrity();

            Metadata.MeshValueEntries = MeshValues.Select(m => m.Entry).ToArray();

            Thumbnail = thumbnail;
        }
Example #2
0
        /// <summary>
        /// Creates the specified <paramref name="subFolder"/> in the specified <paramref name="zipFile"/> and writes the serialized data into it.
        /// If the <paramref name="subFolder"/> is null or empty, the data will be serialized into the root directory of the zip archive .
        /// </summary>
        public void Serialize(ZipArchive zipFile, string subFolder = "")
        {
            Metadata.MeshValueEntries = MeshValues.Select(v => v.Entry).ToArray();

            using (var entryStream = zipFile.CreateNormalizedEntry(Path.Combine(subFolder, "Metadata.xml"), CompressionLevel.Optimal).Open())
            {
                Metadata.WriteTo(entryStream, true);
            }

            // Vorschaubild
            if (HasThumbnail)
            {
                using (var entryStream = zipFile.CreateNormalizedEntry(Path.Combine(subFolder, "PreviewImage.png"), CompressionLevel.NoCompression).Open())
                {
                    entryStream.Write(_Thumbnail, 0, _Thumbnail.Length);
                }
            }

            // Triangulierungsdaten schreiben
            using (var entryStream = zipFile.CreateNormalizedEntry(Path.Combine(subFolder, "Meshes.dat"), CompressionLevel.Fastest).Open())
                using (var binaryWriter = new BinaryWriter(entryStream, Encoding.UTF8, true))
                {
                    binaryWriter.Write(Meshes.Length);
                    foreach (var mesh in Meshes)
                    {
                        mesh.Write(binaryWriter);
                    }
                }

            // Edgedaten schreiben
            using (var entryStream = zipFile.CreateNormalizedEntry(Path.Combine(subFolder, "Edges.dat"), CompressionLevel.Fastest).Open())
                using (var binaryWriter = new BinaryWriter(entryStream, Encoding.UTF8, true))
                {
                    binaryWriter.Write(Edges.Length);
                    foreach (var edge in Edges)
                    {
                        edge.Write(binaryWriter);
                    }
                }

            // Datenwerte schreiben
            foreach (var entry in MeshValues)
            {
                using (var entryStream = zipFile.CreateNormalizedEntry(Path.Combine(subFolder, entry.Entry.Filename), CompressionLevel.Fastest).Open())
                    using (var binaryWriter = new BinaryWriter(entryStream, Encoding.UTF8, true))
                    {
                        entry.Write(binaryWriter);
                    }
            }
        }