mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 12:11:15 -06:00 
			
		
		
		
	Add the full source of BambuStudio
using version 1.0.10
This commit is contained in:
		
							parent
							
								
									30bcadab3e
								
							
						
					
					
						commit
						1555904bef
					
				
					 3771 changed files with 1251328 additions and 0 deletions
				
			
		
							
								
								
									
										128
									
								
								tests/fff_print/test_print.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								tests/fff_print/test_print.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,128 @@ | |||
| #include <catch2/catch.hpp> | ||||
| 
 | ||||
| #include "libslic3r/libslic3r.h" | ||||
| #include "libslic3r/Print.hpp" | ||||
| #include "libslic3r/Layer.hpp" | ||||
| 
 | ||||
| #include "test_data.hpp" | ||||
| 
 | ||||
| using namespace Slic3r; | ||||
| using namespace Slic3r::Test; | ||||
| 
 | ||||
| SCENARIO("PrintObject: Perimeter generation", "[PrintObject]") { | ||||
|     GIVEN("20mm cube and default config") { | ||||
|         WHEN("make_perimeters() is called")  { | ||||
|             Slic3r::Print print; | ||||
|             Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { { "fill_density", 0 } }); | ||||
| 			const PrintObject &object = *print.objects().front(); | ||||
| 			THEN("67 layers exist in the model") { | ||||
|                 REQUIRE(object.layers().size() == 66); | ||||
|             } | ||||
|             THEN("Every layer in region 0 has 1 island of perimeters") { | ||||
|                 for (const Layer *layer : object.layers()) | ||||
|                     REQUIRE(layer->regions().front()->perimeters.entities.size() == 1); | ||||
|             } | ||||
|             THEN("Every layer in region 0 has 3 paths in its perimeters list.") { | ||||
|                 for (const Layer *layer : object.layers()) | ||||
|                     REQUIRE(layer->regions().front()->perimeters.items_count() == 3); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| SCENARIO("Print: Skirt generation", "[Print]") { | ||||
|     GIVEN("20mm cube and default config") { | ||||
|         WHEN("Skirts is set to 2 loops")  { | ||||
|             Slic3r::Print print; | ||||
|             Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { | ||||
|             	{ "skirt_height", 	1 }, | ||||
|         		{ "skirt_distance", 1 }, | ||||
|         		{ "skirts", 		2 } | ||||
|             }); | ||||
|             THEN("Skirt Extrusion collection has 2 loops in it") { | ||||
|                 REQUIRE(print.skirt().items_count() == 2); | ||||
|                 REQUIRE(print.skirt().flatten().entities.size() == 2); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| SCENARIO("Print: Changing number of solid surfaces does not cause all surfaces to become internal.", "[Print]") { | ||||
|     GIVEN("sliced 20mm cube and config with top_solid_surfaces = 2 and bottom_solid_surfaces = 1") { | ||||
|         Slic3r::DynamicPrintConfig config = Slic3r::DynamicPrintConfig::full_print_config(); | ||||
| 		config.set_deserialize_strict({ | ||||
| 			{ "top_solid_layers",		2 }, | ||||
| 			{ "bottom_solid_layers",	1 }, | ||||
| 			{ "layer_height",			0.25 }, // get a known number of layers
 | ||||
| 			{ "first_layer_height",		0.25 } | ||||
| 			}); | ||||
|         Slic3r::Print print; | ||||
|         Slic3r::Model model; | ||||
|         Slic3r::Test::init_print({TestMesh::cube_20x20x20}, print, model, config); | ||||
|         // Precondition: Ensure that the model has 2 solid top layers (39, 38)
 | ||||
|         // and one solid bottom layer (0).
 | ||||
| 		auto test_is_solid_infill = [&print](size_t obj_id, size_t layer_id) { | ||||
| 		    const Layer &layer = *(print.objects().at(obj_id)->get_layer((int)layer_id)); | ||||
| 		    // iterate over all of the regions in the layer
 | ||||
| 		    for (const LayerRegion *region : layer.regions()) { | ||||
| 		        // for each region, iterate over the fill surfaces
 | ||||
| 		        for (const Surface &surface : region->fill_surfaces.surfaces) | ||||
| 		            CHECK(surface.is_solid()); | ||||
| 		    } | ||||
| 		}; | ||||
|         print.process(); | ||||
|         test_is_solid_infill(0,  0); // should be solid
 | ||||
|         test_is_solid_infill(0, 79); // should be solid
 | ||||
|         test_is_solid_infill(0, 78); // should be solid
 | ||||
|         WHEN("Model is re-sliced with top_solid_layers == 3") { | ||||
| 			config.set("top_solid_layers", 3); | ||||
| 			print.apply(model, config); | ||||
|             print.process(); | ||||
|             THEN("Print object does not have 0 solid bottom layers.") { | ||||
|                 test_is_solid_infill(0, 0); | ||||
|             } | ||||
|             AND_THEN("Print object has 3 top solid layers") { | ||||
|                 test_is_solid_infill(0, 79); | ||||
|                 test_is_solid_infill(0, 78); | ||||
|                 test_is_solid_infill(0, 77); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| SCENARIO("Print: Brim generation", "[Print]") { | ||||
|     GIVEN("20mm cube and default config, 1mm first layer width") { | ||||
|         WHEN("Brim is set to 3mm")  { | ||||
| 	        Slic3r::Print print; | ||||
| 	        Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { | ||||
| 	        	{ "first_layer_extrusion_width", 	1 }, | ||||
| 	        	{ "brim_width", 					3 } | ||||
| 	        }); | ||||
|             THEN("Brim Extrusion collection has 3 loops in it") { | ||||
|                 REQUIRE(print.brim().items_count() == 3); | ||||
|             } | ||||
|         } | ||||
|         WHEN("Brim is set to 6mm")  { | ||||
| 	        Slic3r::Print print; | ||||
| 	        Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { | ||||
| 	        	{ "first_layer_extrusion_width", 	1 }, | ||||
| 	        	{ "brim_width", 					6 } | ||||
| 	        }); | ||||
|             THEN("Brim Extrusion collection has 6 loops in it") { | ||||
|                 REQUIRE(print.brim().items_count() == 6); | ||||
|             } | ||||
|         } | ||||
|         WHEN("Brim is set to 6mm, extrusion width 0.5mm")  { | ||||
| 	        Slic3r::Print print; | ||||
| 	        Slic3r::Test::init_and_process_print({TestMesh::cube_20x20x20}, print, { | ||||
| 	        	{ "first_layer_extrusion_width", 	1 }, | ||||
| 	        	{ "brim_width", 					6 }, | ||||
| 	        	{ "first_layer_extrusion_width", 	0.5 } | ||||
| 	        }); | ||||
| 			print.process(); | ||||
|             THEN("Brim Extrusion collection has 12 loops in it") { | ||||
|                 REQUIRE(print.brim().items_count() == 14); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 lane.wei
						lane.wei