mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	Fixed regression causing fatal errors with many objects. #394
This commit is contained in:
		
							parent
							
								
									acf4f032be
								
							
						
					
					
						commit
						d8d2f73aff
					
				
					 2 changed files with 16 additions and 12 deletions
				
			
		|  | @ -136,16 +136,20 @@ sub check_manifoldness { | |||
|     } | ||||
| } | ||||
| 
 | ||||
| sub unpack_line { | ||||
|     my ($packed) = @_; | ||||
|      | ||||
|     my @data = unpack I_FMT, $packed; | ||||
|     splice @data, 0, 2, [ @data[0,1] ]; | ||||
|     $data[$_] ||= undef for I_A_ID, I_B_ID, I_PREV_FACET_INDEX, I_NEXT_FACET_INDEX; | ||||
|     $data[I_FACET_EDGE] = undef if $data[I_FACET_EDGE] == -1; | ||||
|     return [@data]; | ||||
| } | ||||
| 
 | ||||
| sub make_loops { | ||||
|     my ($layer) = @_; | ||||
|      | ||||
|     my @lines = map { | ||||
|         my @data = unpack I_FMT, $_; | ||||
|         splice @data, 0, 2, [ @data[0,1] ]; | ||||
|         $data[$_] ||= undef for I_A_ID, I_B_ID; | ||||
|         $data[I_FACET_EDGE] = undef if $data[I_FACET_EDGE] == -1; | ||||
|         [@data] | ||||
|     } @{$layer->lines}; | ||||
|     my @lines = map unpack_line($_), @{$layer->lines}; | ||||
|      | ||||
|     # remove tangent edges | ||||
|     { | ||||
|  | @ -428,8 +432,8 @@ sub intersect_facet { | |||
|                 $a_id,                  # I_A_ID | ||||
|                 $b_id,                  # I_B_ID | ||||
|                 $facet_id,              # I_FACET_INDEX | ||||
|                 undef,                  # I_PREV_FACET_INDEX | ||||
|                 undef,                  # I_NEXT_FACET_INDEX | ||||
|                 0,                      # I_PREV_FACET_INDEX | ||||
|                 0,                      # I_NEXT_FACET_INDEX | ||||
|                 $edge_type,             # I_FACET_EDGE | ||||
|                  | ||||
|                 # Unused data: | ||||
|  | @ -488,8 +492,8 @@ sub intersect_facet { | |||
|             $points[B][2] || 0,             # I_A_ID | ||||
|             $points[A][2] || 0,             # I_B_ID | ||||
|             $facet_id,                      # I_FACET_INDEX | ||||
|             $prev_facet_index,              # I_PREV_FACET_INDEX | ||||
|             $next_facet_index,              # I_NEXT_FACET_INDEX | ||||
|             $prev_facet_index || 0,         # I_PREV_FACET_INDEX | ||||
|             $next_facet_index || 0,         # I_NEXT_FACET_INDEX | ||||
|             -1,                             # I_FACET_EDGE | ||||
|         ); | ||||
|         #printf "  intersection points at z = %f: %f,%f - %f,%f\n", $z, map @$_, @intersection_points; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Alessandro Ranellucci
						Alessandro Ranellucci