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)
|
||
|
|