mirror of https://CODE.RHODECODE.COM/u/O/O/O
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 0 additions and 219 deletions
Split View
Diff Options
@ -1,219 +0,0 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# ---------------------------- Operators ------------------------ |
|||
import bpy |
|||
import math |
|||
|
|||
from mathutils import Vector |
|||
|
|||
from . import cfg |
|||
from . import at_interface |
|||
from . at_calc_func import at_random_fill, fill_rotation |
|||
|
|||
|
|||
class OBJECT_OT_at_start(bpy.types.Operator): |
|||
"""Start and init the addon""" |
|||
bl_idname = 'scene.at_op' |
|||
bl_label = "Start array" |
|||
|
|||
@classmethod |
|||
def poll(cls, context): |
|||
return not context.scene.arraytools_prop.already_start |
|||
|
|||
def execute(self, context): |
|||
cfg.init_array_tool(context) |
|||
return {'FINISHED'} |
|||
|
|||
|
|||
class OBJECT_OT_at_done(bpy.types.Operator): |
|||
"""Apply the settings""" |
|||
bl_idname = 'scene.at_done' |
|||
bl_label = "Done !" |
|||
|
|||
def execute(self, context): |
|||
cfg.atools_objs.clear() |
|||
#cfg.at_mtx_list.clear() |
|||
array_col = bpy.data.collections.get(cfg.col_name) |
|||
cfg.col_name = "Array_collection" |
|||
context.scene.arraytools_prop.up_ui_reset() |
|||
context.scene.arraytools_prop.already_start = False |
|||
return {'FINISHED'} |
|||
|
|||
|
|||
class OBJECT_OT_at_cancel(bpy.types.Operator): |
|||
"""Cancel the settings""" |
|||
bl_idname = 'scene.at_cancel' |
|||
bl_label = "Cancel" |
|||
|
|||
def execute(self, context): |
|||
scn = context.scene |
|||
scn.arraytools_prop.at_del_all(True) |
|||
scn.arraytools_prop.up_ui_reset() |
|||
scn.arraytools_prop.already_start = False |
|||
cfg.col_name = "Array_collection" |
|||
return {'FINISHED'} |
|||
|
|||
|
|||
class OBJECT_OT_fill_tr(bpy.types.Operator): |
|||
"""Fill the random translation fields""" |
|||
bl_idname = 'scene.fill_tr' |
|||
bl_label = "Fill" |
|||
|
|||
def execute(self, context): |
|||
prop = context.scene.arraytools_prop |
|||
offset = prop.tr_offset |
|||
|
|||
for i in range(3): |
|||
if offset[i] == 0.0: |
|||
prop.tr_min[i], prop.tr_max[i] = at_random_fill(-3.0, 3.0) |
|||
else: |
|||
prop.tr_min[i], prop.tr_max[i] = at_random_fill(-offset[i]/2, offset[i]/2) |
|||
return{'FINISHED'} |
|||
|
|||
|
|||
class OBJECT_OT_fill_sc(bpy.types.Operator): |
|||
"""Fill the random scale fields""" |
|||
bl_idname = 'scene.fill_sc' |
|||
bl_label = "Fill" |
|||
|
|||
def execute(self, context): |
|||
prop = context.scene.arraytools_prop |
|||
offset = prop.sc_offset |
|||
|
|||
if 100 in [offset[0], offset[1], offset[2]]: |
|||
prop.sc_min_x, prop.sc_max_x = at_random_fill(40.0, 120.0) |
|||
prop.sc_min_y, prop.sc_max_y = at_random_fill(40.0, 120.0) |
|||
prop.sc_min_z, prop.sc_max_z = at_random_fill(40.0, 120.0) |
|||
else: |
|||
rand = [(100 - offset[i]) / 2 for i in range(3)] |
|||
print(rand) |
|||
prop.sc_min_x, prop.sc_max_x = at_random_fill(offset[0]-rand[0], offset[0]+rand[0]) |
|||
prop.sc_min_y, prop.sc_max_y = at_random_fill(offset[1]-rand[1], offset[1]+rand[1]) |
|||
prop.sc_min_z, prop.sc_max_z = at_random_fill(offset[2]-rand[2], offset[2]+rand[2]) |
|||
if prop.sc_all: |
|||
prop.sc_min_x = prop.sc_min_y = prop.sc_min_z |
|||
prop.sc_max_x = prop.sc_max_y = prop.sc_max_z |
|||
return {'FINISHED'} |
|||
|
|||
|
|||
class OBJECT_OT_fill_rot(bpy.types.Operator): |
|||
"""Fill the random rotation fields""" |
|||
bl_idname = 'scene.fill_rot' |
|||
bl_label = "Fill" |
|||
|
|||
def execute(self, context): |
|||
fill_rotation(context) |
|||
return {'FINISHED'} |
|||
|
|||
|
|||
class OBJECT_OT_x360(bpy.types.Operator): |
|||
"""Quick 360 degrees on X axis""" |
|||
bl_idname = 'scene.x360' |
|||
bl_label = "360" |
|||
|
|||
def execute(self, context): |
|||
prop = context.scene.arraytools_prop |
|||
prop.tr_offset = Vector((0.0, 0.0, 0.0)) |
|||
prop.rot_global = Vector((math.pi/180*360, 0.0, 0.0)) |
|||
return{'FINISHED'} |
|||
|
|||
|
|||
class OBJECT_OT_y360(bpy.types.Operator): |
|||
"""Quick 360 degrees on Y axis""" |
|||
bl_idname = 'scene.y360' |
|||
bl_label = "360" |
|||
|
|||
def execute(self, context): |
|||
prop = context.scene.arraytools_prop |
|||
prop.tr_offset = Vector((0.0, 0.0, 0.0)) |
|||
prop.rot_global = Vector((0.0, math.pi/180*360, 0.0)) |
|||
return{'FINISHED'} |
|||
|
|||
|
|||
class OBJECT_OT_z360(bpy.types.Operator): |
|||
"""Quick 360 degrees on Z axis""" |
|||
bl_idname = 'scene.z360' |
|||
bl_label = "360" |
|||
|
|||
def execute(self, context): |
|||
prop = context.scene.arraytools_prop |
|||
prop.tr_offset = Vector((0.0, 0.0, 0.0)) |
|||
prop.rot_global = Vector((0.0, 0.0, math.pi/180*360)) |
|||
return{'FINISHED'} |
|||
|
|||
|
|||
class OBJECT_OT_reset_tr(bpy.types.Operator): |
|||
"""Reset the settings of random translation""" |
|||
bl_idname = 'scene.at_reset_tr' |
|||
bl_label = 'Reset' |
|||
|
|||
def execute(self, context): |
|||
prop = context.scene.arraytools_prop |
|||
prop.tr_min[0], prop.tr_min[1], prop.tr_min[2] = 0.0, 0.0, 0.0 |
|||
prop.tr_max[0], prop.tr_max[1], prop.tr_max[2] = 0.0, 0.0, 0.0 |
|||
|
|||
# if operator is used many times |
|||
# get weird result != 0 with vector |
|||
# prop.tr_max = Vector((0.0, 0.0, 0.0)) |
|||
return {'FINISHED'} |
|||
|
|||
|
|||
class OBJECT_OT_reset_sc(bpy.types.Operator): |
|||
"""Reset the settings of random scale""" |
|||
bl_idname = 'scene.at_reset_sc' |
|||
bl_label = 'Reset' |
|||
|
|||
def execute(self, context): |
|||
prop = context.scene.arraytools_prop |
|||
prop.sc_min_x, prop.sc_min_y, prop.sc_min_z = 100, 100, 100 |
|||
prop.sc_max_x, prop.sc_max_y, prop.sc_max_z = 100, 100, 100 |
|||
return{'FINISHED'} |
|||
|
|||
|
|||
class OBJECT_OT_reset_rot(bpy.types.Operator): |
|||
"""Reset the settings of random rotation""" |
|||
bl_idname = 'scene.at_reset_rot' |
|||
bl_label = 'Reset' |
|||
|
|||
def execute(self, context): |
|||
prop = context.scene.arraytools_prop |
|||
prop.rot_min[0], prop.rot_min[1], prop.rot_min[2] = 0.0, 0.0, 0.0 |
|||
prop.rot_max[0], prop.rot_max[1], prop.rot_max[2] = 0.0, 0.0, 0.0 |
|||
return{'FINISHED'} |
|||
|
|||
|
|||
class OBJECT_OT_reset_second(bpy.types.Operator): |
|||
"""Reset the settings of row options""" |
|||
bl_idname = 'scene.at_reset_second' |
|||
bl_label = 'Reset' |
|||
|
|||
def execute(self, context): |
|||
prop = context.scene.arraytools_prop |
|||
prop.tr_second = (0,0,0) |
|||
prop.sc_second = (100,100,100) |
|||
prop.rot_second = (0,0,0) |
|||
return {'FINISHED'} |
|||
|
|||
|
|||
class OBJECT_OT_error(bpy.types.Operator): |
|||
"""Draw a message box to display error""" |
|||
bl_idname = "info.at_error" |
|||
bl_label = "Message info" |
|||
|
|||
info: bpy.props.StringProperty( |
|||
name = "Message", |
|||
description = "Display a message", |
|||
default = '' |
|||
) |
|||
|
|||
def execute(self, context): |
|||
self.report({'INFO'}, self.info) |
|||
print(self.info) |
|||
return {'FINISHED'} |
|||
|
|||
def invoke(self, context, event): |
|||
return context.window_manager.invoke_props_dialog(self) |
|||
|
|||
def draw(self, context): |
|||
layout = self.layout |
|||
layout.label(text=self.info) |
|||
layout.label(text="") |