mirror of
				https://dev.azure.com/OOOOO0OOOOO/O/_git/0-0-8-088-00-080-00-880-8-0-0
				synced 2025-10-26 06:20:52 +00:00 
			
		
		
		
	
		
			
	
	
		
			104 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			104 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | # -*- coding: utf-8 -*- | ||
|  | import bpy | ||
|  | 
 | ||
|  | # count values, contains only 2 values : old count and current | ||
|  | at_count_values = [] | ||
|  | # row value, contains old row and current | ||
|  | at_row_values = [] | ||
|  | # alter values, contains old and current | ||
|  | at_alter = [] | ||
|  | # maximun row according to column and alter  | ||
|  | maxrow = 1 | ||
|  | # list of the copies / list of lists | ||
|  | atools_objs = [] | ||
|  | ref_mtx = [] # reference matrix | ||
|  | # collection name | ||
|  | col_name = "Array_collection" | ||
|  | 
 | ||
|  | 
 | ||
|  | def init_array_tool(context): | ||
|  |     """Initialisation of the array tools""" | ||
|  |     global at_count_values | ||
|  |     global at_row_values | ||
|  |     global at_alter | ||
|  |     global atools_objs | ||
|  |     global ref_mtx | ||
|  |     global col_name | ||
|  | 
 | ||
|  |     prop = context.scene.arraytools_prop | ||
|  |     name = col_name | ||
|  |     i = 1 | ||
|  |     collect = bpy.data.collections.get(col_name) | ||
|  |     # create and link the new collection | ||
|  |     if collect is None: | ||
|  |         array_col = bpy.data.collections.new(col_name) | ||
|  |         bpy.context.scene.collection.children.link(array_col) | ||
|  |     else: | ||
|  |         # if a collection already exist, create a new one | ||
|  |         while bpy.data.collections.get(name) is not None: | ||
|  |             name = col_name + str(i) | ||
|  |             i += 1 | ||
|  |         array_col = bpy.data.collections.new(name) | ||
|  |         bpy.context.scene.collection.children.link(array_col) | ||
|  |         col_name = name | ||
|  | 
 | ||
|  |     if not prop.already_start: | ||
|  |         at_count_values = [1, 2] | ||
|  |         at_row_values = [0, 1] | ||
|  |         at_alter = [0, 0] | ||
|  |         active = context.active_object | ||
|  |         prop.already_start = True | ||
|  |         prop.is_tr_off_last = True | ||
|  |         if active is not None: | ||
|  |             atools_objs.append([active.name]) | ||
|  |             ref_mtx = active.matrix_world.copy() | ||
|  |             del active | ||
|  |             prop.add_in_column(prop.row) | ||
|  |         # no need anymore | ||
|  |         else: | ||
|  |             print("No object selected") | ||
|  |     else: | ||
|  |         print("Already started!") | ||
|  | 
 | ||
|  | 
 | ||
|  | def add_count(value): | ||
|  |     """Save the current count""" | ||
|  |     global at_count_values | ||
|  |     at_count_values.append(value) | ||
|  | 
 | ||
|  | 
 | ||
|  | def del_count(): | ||
|  |     """Del the previous count""" | ||
|  |     global at_count_values | ||
|  |     del at_count_values[0] | ||
|  | 
 | ||
|  | 
 | ||
|  | def add_row(value): | ||
|  |     """Save the current row""" | ||
|  |     global at_row_values | ||
|  |     at_row_values.append(value) | ||
|  | 
 | ||
|  | 
 | ||
|  | def del_row(): | ||
|  |     """ Del the previous row value""" | ||
|  |     global at_row_values | ||
|  |     del at_row_values[0] | ||
|  | 
 | ||
|  | 
 | ||
|  | def add_alter(value): | ||
|  |     """save the current variation""" | ||
|  |     global at_alter | ||
|  |     at_alter.append(value) | ||
|  | 
 | ||
|  | 
 | ||
|  | def del_alter(): | ||
|  |     """Remove previous variation""" | ||
|  |     global at_alter | ||
|  |     del at_alter[0] | ||
|  | 
 | ||
|  | 
 | ||
|  | def display_error(msg): | ||
|  |     """Call the operator to display an error message""" | ||
|  |     bpy.ops.info.at_error('INVOKE_DEFAULT', info = msg) | ||
|  | 
 |