Пример #1
0
        public void EnsureModelRelationshipEntryInSavedFileTest()
        {
            var file = new ThreeMfFile();

            using (var ms = new MemoryStream())
            {
                file.Save(ms);
                ms.Seek(0, SeekOrigin.Begin);
                file = ThreeMfFile.Load(ms);
                Assert.Equal(0, file.Models.Count);
            }

            file.Models.Add(new ThreeMfModel());
            using (var ms = new MemoryStream())
            {
                file.Save(ms);
                ms.Seek(0, SeekOrigin.Begin);
                file = ThreeMfFile.Load(ms);
                Assert.Equal(1, file.Models.Count);
            }

            file.Models.Add(new ThreeMfModel());
            using (var ms = new MemoryStream())
            {
                file.Save(ms);
                ms.Seek(0, SeekOrigin.Begin);
                file = ThreeMfFile.Load(ms);
                Assert.Equal(2, file.Models.Count);
            }
        }
Пример #2
0
        public void LoadFromDiskTest()
        {
            var samplesDir  = Path.Combine(Path.GetDirectoryName(typeof(ThreeMfFileLoadTests).GetTypeInfo().Assembly.Location), "Samples");
            var loadedFiles = 0;

            foreach (var path in Directory.EnumerateFiles(samplesDir, "*.3mf", SearchOption.AllDirectories))
            {
                var fileName = Path.GetFileName(path);
                if (fileName == "multiprop-metallic.3mf" || fileName == "multiprop-translucent.3mf")
                {
                    // undefined namespace `ms`
                    continue;
                }

                var pathParts = path.Split(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
                if (pathParts.Contains("production") || pathParts.Contains("beam lattice"))
                {
                    // not yet implemented
                    continue;
                }
                if (pathParts.Contains("MUSTFAIL"))
                {
                    // expected to fail
                    continue;
                }
                using (var fs = new FileStream(path, FileMode.Open))
                {
                    var file  = ThreeMfFile.Load(fs);
                    var model = file.Models.Single();
                    loadedFiles++;
                }
            }

            Assert.True(loadedFiles > 0, "No sample files were loaded.  Ensure all submodules have been initialized.");
        }
Пример #3
0
        private static ThreeMfFile FileFromParts(params Tuple <string, string>[] filesAndContents)
        {
            using (var ms = new MemoryStream())
            {
                using (var archive = new ZipArchive(ms, ZipArchiveMode.Create, true))
                {
                    var contentTypes = Tuple.Create("[Content_Types].xml", @"
<Types xmlns=""http://schemas.openxmlformats.org/package/2006/content-types"">
  <Default Extension=""rels"" ContentType=""application/vnd.openxmlformats-package.relationships+xml"" />
  <Default Extension=""model"" ContentType=""application/vnd.ms-package.3dmanufacturing-3dmodel+xml"" />
</Types>
");
                    foreach (var pair in filesAndContents.Append(contentTypes))
                    {
                        var path     = pair.Item1;
                        var contents = pair.Item2;
                        var entry    = archive.CreateEntry(path);
                        using (var stream = entry.Open())
                            using (var writer = new StreamWriter(stream))
                            {
                                writer.Write(contents);
                            }
                    }
                }

                ms.Seek(0, SeekOrigin.Begin);
                var file = ThreeMfFile.Load(ms);
                return(file);
            }
        }
 public static ThreeMfFile RoundTripFile(ThreeMfFile file)
 {
     using (var ms = new MemoryStream())
     {
         file.Save(ms);
         ms.Seek(0, SeekOrigin.Begin);
         var file2 = ThreeMfFile.Load(ms);
         return(file2);
     }
 }
Пример #5
0
        public void FileSystemAPITest()
        {
            var filePath = Path.GetTempFileName();
            var file     = new ThreeMfFile();

            file.Save(filePath);
            var roundTripFile = ThreeMfFile.Load(filePath);

            try
            {
                File.Delete(filePath);
            }
            catch
            {
            }
        }