mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 12:41:20 -06:00 
			
		
		
		
	fix sandwich inner-outer-inner regression
$468
This commit is contained in:
		
							parent
							
								
									ee72ebb988
								
							
						
					
					
						commit
						6d8f01f48d
					
				
					 1 changed files with 7 additions and 20 deletions
				
			
		|  | @ -960,14 +960,14 @@ void PerimeterGenerator::process_classic() | ||||||
|             // TODO: add test for perimeter order
 |             // TODO: add test for perimeter order
 | ||||||
|             bool is_outer_wall_first = |             bool is_outer_wall_first = | ||||||
|                 this->config->wall_infill_order == WallInfillOrder::OuterInnerInfill || |                 this->config->wall_infill_order == WallInfillOrder::OuterInnerInfill || | ||||||
|                 this->config->wall_infill_order == WallInfillOrder::InfillOuterInner ||  |                 this->config->wall_infill_order == WallInfillOrder::InfillOuterInner; | ||||||
|                 this->config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill; |  | ||||||
|             if (is_outer_wall_first || |             if (is_outer_wall_first || | ||||||
|                 //BBS: always print outer wall first when there indeed has brim.
 |                 //BBS: always print outer wall first when there indeed has brim.
 | ||||||
|                 (this->layer_id == 0 && |                 (this->layer_id == 0 && | ||||||
|                  this->object_config->brim_type == BrimType::btOuterOnly && |                     this->object_config->brim_type == BrimType::btOuterOnly && | ||||||
|                  this->object_config->brim_width.value > 0)) |                     this->object_config->brim_width.value > 0)) | ||||||
|                 entities.reverse(); |                 entities.reverse(); | ||||||
|  |             // SoftFever: sandwich mode 
 | ||||||
|             else if (this->config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill) |             else if (this->config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill) | ||||||
|                 if (entities.entities.size() > 1){ |                 if (entities.entities.size() > 1){ | ||||||
|                     int              last_outer=0; |                     int              last_outer=0; | ||||||
|  | @ -981,6 +981,7 @@ void PerimeterGenerator::process_classic() | ||||||
|             // append perimeters for this slice as a collection
 |             // append perimeters for this slice as a collection
 | ||||||
|             if (! entities.empty()) |             if (! entities.empty()) | ||||||
|                 this->loops->append(entities); |                 this->loops->append(entities); | ||||||
|  | 
 | ||||||
|         } // for each loop of an island
 |         } // for each loop of an island
 | ||||||
| 
 | 
 | ||||||
|         // fill gaps
 |         // fill gaps
 | ||||||
|  | @ -1320,7 +1321,8 @@ void PerimeterGenerator::process_arachne() | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         // BBS. adjust wall generate seq
 | 
 | ||||||
|  |          | ||||||
|         if (this->config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill) |         if (this->config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill) | ||||||
|             if (ordered_extrusions.size() > 1) { |             if (ordered_extrusions.size() > 1) { | ||||||
|                 int last_outer = 0; |                 int last_outer = 0; | ||||||
|  | @ -1333,21 +1335,6 @@ void PerimeterGenerator::process_arachne() | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|          |          | ||||||
|         if (this->config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill) { |  | ||||||
|             if (ordered_extrusions.size() > 1) { |  | ||||||
|                 std::vector<int> extPs; |  | ||||||
|                 for (int i = 0; i < ordered_extrusions.size(); ++i) { |  | ||||||
|                     if (ordered_extrusions[i].extrusion->inset_idx == 0) |  | ||||||
|                         extPs.push_back(i); |  | ||||||
|                 } |  | ||||||
|                 for (int i = 0; i < extPs.size(); ++i) { |  | ||||||
|                     if (extPs[i] == 0 || (i > 0 && extPs[i] - 1 == extPs[i - 1])) |  | ||||||
|                         continue; |  | ||||||
|                     std::swap(ordered_extrusions[extPs[i]], ordered_extrusions[extPs[i] - 1]); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|          |  | ||||||
|         if (ExtrusionEntityCollection extrusion_coll = traverse_extrusions(*this, ordered_extrusions); !extrusion_coll.empty()) |         if (ExtrusionEntityCollection extrusion_coll = traverse_extrusions(*this, ordered_extrusions); !extrusion_coll.empty()) | ||||||
|             this->loops->append(extrusion_coll); |             this->loops->append(extrusion_coll); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 SoftFever
						SoftFever