104 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # -*- 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)
 | |
| 
 |