private void HandlePackCommand(FileInfo project, DirectoryInfo dir, bool overwrite)
        {
            var modelBuilder = new Model3MFBuilder();
            var projectFile  = ProjectFile.Load(project.FullName);

            modelBuilder.Set3D2PFile(project.FullName);
            if (!string.IsNullOrEmpty(projectFile.Readme))
            {
                modelBuilder.SetReadme(Path.GetFullPath(projectFile.Readme, project.DirectoryName));
            }
            if (!string.IsNullOrEmpty(projectFile.Thumbnail))
            {
                modelBuilder.SetThumbnail(Path.GetFullPath(projectFile.Thumbnail, project.DirectoryName));
            }

            foreach (var stl in projectFile.StlInfoList)
            {
                modelBuilder.AddStl(Path.GetFullPath(stl.RelativePath, project.DirectoryName));
            }

            var targetFilepath = Path.Combine(dir.FullName, $"{projectFile.Name}.3mf");

            Console.WriteLine($"Creating '{targetFilepath}' ...");
            modelBuilder.Write3MF(targetFilepath, overwrite);
        }
Пример #2
0
        public void ShouldSetAttachmentSuccessfully()
        {
            // Arrange
            var builder = new Model3MFBuilder();

            // Act
            builder.Set3D2PFile("TestData/3D2P.json");
            builder.Write3MF("TestData/Test.3mf", true);

            // Assert
            var model = new Model3MF("TestData/Test.3mf");

            Assert.IsTrue(model.GetAttachment("/Metadata/3D2P.json") != null);
        }
Пример #3
0
        public void ShouldSetReadmeSuccessfully()
        {
            // Arrange
            var builder = new Model3MFBuilder();

            // Act
            builder.SetReadme("TestData/README.md");
            builder.Write3MF("TestData/Test.3mf", true);

            // Assert
            var model = new Model3MF("TestData/Test.3mf");

            Assert.IsFalse(string.IsNullOrEmpty(model.Readme));
        }
Пример #4
0
        public void ShouldAddStlsSuccessfully()
        {
            // Arrange
            var builder = new Model3MFBuilder();

            // Act
            builder.AddStl("TestData/Test1.stl");
            builder.AddStl("TestData/Test2.stl");
            builder.Write3MF("TestData/Test.3mf", true);

            // Assert
            var model = new Model3MF("TestData/Test.3mf");

            Assert.AreEqual(2, model.Meshes.Count);
        }
Пример #5
0
        public void ShouldExtractModelSuccesfully()
        {
            // Arrange
            var builder = new Model3MFBuilder();

            builder.AddStl("TestData/Test1.stl");
            builder.AddStl("TestData/Test2.stl");
            builder.Set3D2PFile("TestData/3D2P.json");
            builder.SetReadme("TestData/README.md");
            builder.Write3MF("TestData/Test.3mf", true);

            var model = new Model3MF("TestData/Test.3mf");

            // Act
            model.ExtractPrintProject("TestData/extracted");

            // Assert
            Assert.IsTrue(File.Exists("TestData/extracted/stl/Test1.stl"), "Test1.stl not found!");
            Assert.IsTrue(File.Exists("TestData/extracted/stl/Test2.stl"), "Test2.stl not found!");
            Assert.IsTrue(File.Exists("TestData/extracted/3D2P.json"), "3D2P.json not found!");
            Assert.IsTrue(File.Exists("TestData/extracted/README.md"), "README.md not found!");
            Assert.IsTrue(File.ReadAllBytes("TestData/extracted/stl/Test1.stl").Length > 100);
        }