mirror of
				https://code.rhodecode.com/u/OOOOOOOOOOOOOOOO/OOOOOOOOOOOOOOOO/0080-0-8-088-00-080-00-880-8-0-0800
				synced 2025-10-26 07:21:35 +00:00 
			
		
		
		
	
		
			
	
	
		
			211 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			211 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | # -*- coding: utf-8 -*- | ||
|  | from bpy.types import Panel | ||
|  | 
 | ||
|  | from . import cfg | ||
|  | 
 | ||
|  | # ---------------------------- Panel -------------------------------- | ||
|  | class UIPANEL_PT_def(Panel): | ||
|  |     bl_space_type = "VIEW_3D" | ||
|  |     bl_region_type = "UI" | ||
|  |     bl_category = "Array Tools" | ||
|  | 
 | ||
|  | 
 | ||
|  | class UIPANEL_PT_trans(UIPANEL_PT_def): | ||
|  |     """Panel containing the settings for translation, scale and rotation array""" | ||
|  |     bl_label = "Array Tools" | ||
|  | 
 | ||
|  |     @classmethod | ||
|  |     def poll(cls, context): | ||
|  |         return (len(context.selected_objects) > 0 and (context.object.mode == 'OBJECT')) | ||
|  | 
 | ||
|  |     def draw(self, context): | ||
|  |         layout = self.layout | ||
|  |         scn = context.scene | ||
|  |         my_prop = scn.arraytools_prop | ||
|  | 
 | ||
|  |         row = layout.row() | ||
|  |         row.operator('scene.at_op') | ||
|  |         row = layout.row() | ||
|  |         if not my_prop.already_start: | ||
|  |             row.alignment = 'CENTER' | ||
|  |             row.label(text="~ Click to begin ~") | ||
|  |         else: | ||
|  |             row.prop(my_prop, 'is_copy') | ||
|  |             row.prop(my_prop, 'count') | ||
|  |             box = layout.box() | ||
|  |             box.label(text="Translation") | ||
|  |             col = box.column() | ||
|  |             split = col.split() | ||
|  |             split.prop(my_prop, 'tr_offset') | ||
|  |             split.prop(my_prop, 'tr_global') | ||
|  | 
 | ||
|  |             row = layout.row() | ||
|  |             row.prop(my_prop, 'at_pivot') | ||
|  | 
 | ||
|  |             box = layout.box() | ||
|  |             box.label(text="Scaling (%)") | ||
|  |             col = box.column() | ||
|  |             split = col.split() | ||
|  |             split.prop(my_prop, 'sc_offset') | ||
|  |             split.prop(my_prop, 'sc_global') | ||
|  | 
 | ||
|  |             box = layout.box() | ||
|  |             if scn.unit_settings.system_rotation == 'DEGREES': | ||
|  |                 box.label(text="Rotation (degrees)") | ||
|  |             else: | ||
|  |                 box.label(text="Rotation (radians)") | ||
|  |             split = box.split(factor=0.08) | ||
|  | 
 | ||
|  |             col = split.column(align=True) | ||
|  |             col.label(text='') | ||
|  |             col.operator('scene.x360', text='X') | ||
|  |             col.operator('scene.y360', text='Y') | ||
|  |             col.operator('scene.z360', text='Z') | ||
|  | 
 | ||
|  |             col = split.column() | ||
|  |             col.prop(my_prop, 'rot_offset') | ||
|  |             col = split.column() | ||
|  |             col.prop(my_prop, 'rot_global') | ||
|  | 
 | ||
|  |             box = layout.box() | ||
|  |             row = box.row() | ||
|  |             row.scale_y = 1.5 | ||
|  |             row.operator('scene.at_done') | ||
|  |             row.operator('scene.at_cancel') | ||
|  | 
 | ||
|  |             row = box.row() | ||
|  |             row.scale_y = 0.3 | ||
|  |             row.alignment = 'CENTER' | ||
|  |             row.label(text="~ Tansforms are NOT applied ~") | ||
|  | 
 | ||
|  | 
 | ||
|  | class UIPANEL_PT_rows(UIPANEL_PT_def): | ||
|  |     """Panel containing the row options""" | ||
|  |     bl_parent_id = 'UIPANEL_PT_trans' | ||
|  |     bl_label = 'Rows options' | ||
|  |     bl_options = {'DEFAULT_CLOSED'} | ||
|  | 
 | ||
|  |     def draw(self, context): | ||
|  |         layout = self.layout | ||
|  |         my_prop = context.scene.arraytools_prop | ||
|  | 
 | ||
|  |         if my_prop.already_start: | ||
|  |             row = layout.row() | ||
|  |             row.prop(my_prop, 'count') | ||
|  |             row.prop(my_prop, 'row') | ||
|  |             row = layout.row() | ||
|  | 
 | ||
|  |             row.scale_y = 0.8 | ||
|  |             row.prop(my_prop, 'align', icon_only=True, expand=True) | ||
|  |             row.prop(my_prop, 'alter') | ||
|  |             row = layout.row() | ||
|  | 
 | ||
|  |             row.alignment = 'CENTER' | ||
|  |             row.scale_x = 1.5 | ||
|  |             row.scale_y = 0.6 | ||
|  |             row.label(text=" - Offset settings -") | ||
|  |             row.scale_x = 0.8 | ||
|  |             row.operator('scene.at_reset_second') | ||
|  | 
 | ||
|  |             layout.use_property_split = True | ||
|  | 
 | ||
|  |             col = layout.column() | ||
|  |             row = col.row(align=True) | ||
|  |             row.prop(my_prop, 'tr_second') | ||
|  |             col = layout.column() | ||
|  |             row = col.row(align=True) | ||
|  |             row.prop(my_prop, 'sc_second') | ||
|  |             col = layout.column() | ||
|  |             row = col.row(align=True) | ||
|  |             row.prop(my_prop, 'rot_second') | ||
|  | 
 | ||
|  |             row = layout.row() | ||
|  |             row.scale_y = 0.5 | ||
|  |             row.label(text="Total : " + my_prop.total + "    |    current row : " + my_prop.erow) | ||
|  |             """ | ||
|  |             box = layout.box() | ||
|  |             box.prop(my_prop, 'tr_second') | ||
|  |             #row = layout.row() | ||
|  |             box.prop(my_prop, 'sc_second') | ||
|  |             #row = layout.row() | ||
|  |             box.prop(my_prop, 'rot_second') | ||
|  |             """ | ||
|  | 
 | ||
|  | 
 | ||
|  | class UIPANEL_PT_options(UIPANEL_PT_def): | ||
|  |     """Panel containing the random options""" | ||
|  |     bl_parent_id = 'UIPANEL_PT_trans' | ||
|  |     bl_label = 'Random options' | ||
|  |     bl_options = {'DEFAULT_CLOSED'} | ||
|  | 
 | ||
|  |     def draw(self, context): | ||
|  |         layout = self.layout | ||
|  |         my_prop = context.scene.arraytools_prop | ||
|  | 
 | ||
|  |         layout.enabled = my_prop.already_start | ||
|  |         row = layout.row() | ||
|  |         row.alignment = 'CENTER' | ||
|  |         row.prop(my_prop, 'at_seed') | ||
|  |         row = layout.row() | ||
|  |         row.prop(my_prop, 'at_mode', expand=True) | ||
|  |         row = layout.row() | ||
|  |         if my_prop.at_mode == 'SIM': | ||
|  |             row.prop(my_prop, 'at_is_tr') | ||
|  |             row = layout.row() | ||
|  |             row.prop(my_prop, 'tr_rand') | ||
|  |             row = layout.row() | ||
|  |             row.prop(my_prop, 'at_is_sc') | ||
|  |             row = layout.row() | ||
|  |             row.prop(my_prop, 'sc_rand') | ||
|  |             row = layout.row() | ||
|  |             row.prop(my_prop, 'at_is_rot') | ||
|  |             row = layout.row() | ||
|  |             row.prop(my_prop, 'rot_rand') | ||
|  |         else: | ||
|  |             row.label(text='  ') | ||
|  |             row.label(text='X') | ||
|  |             row.label(text='Y') | ||
|  |             row.label(text='Z') | ||
|  |             row = layout.row() | ||
|  |             row.prop(my_prop, 'at_is_tr') | ||
|  |             row.scale_x = 0.5 | ||
|  |             row.scale_y = 0.7 | ||
|  |             row.operator('scene.at_reset_tr') | ||
|  |             row.operator('scene.fill_tr') | ||
|  |             row = layout.row() | ||
|  |             row.prop(my_prop, 'tr_min') | ||
|  |             row = layout.row() | ||
|  |             row.prop(my_prop, 'tr_max') | ||
|  |             row = layout.row() | ||
|  | 
 | ||
|  |             row.prop(my_prop, 'at_is_sc') | ||
|  |             row.scale_x = 0.5 | ||
|  |             row.scale_y = 0.7 | ||
|  |             row.operator('scene.at_reset_sc') | ||
|  |             row.operator('scene.fill_sc') | ||
|  |             row = layout.row() | ||
|  |             row.alignment = "CENTER" | ||
|  |             row.scale_y = 0.7 | ||
|  |             row.prop(my_prop, 'sc_all') | ||
|  |             row = layout.row(align=True) | ||
|  |             row.label(text='min:') | ||
|  |             row.prop(my_prop, 'sc_min_x', text='') | ||
|  |             row.prop(my_prop, 'sc_min_y', text='') | ||
|  |             row.prop(my_prop, 'sc_min_z', text='') | ||
|  |             row = layout.row(align=True) | ||
|  |             row.label(text='max:') | ||
|  |             row.prop(my_prop, 'sc_max_x', text='') | ||
|  |             row.prop(my_prop, 'sc_max_y', text='') | ||
|  |             row.prop(my_prop, 'sc_max_z', text='') | ||
|  | 
 | ||
|  |             row = layout.row() | ||
|  |             row.prop(my_prop, "at_is_rot") | ||
|  |             row.scale_x = 0.5 | ||
|  |             row.scale_y = 0.7 | ||
|  |             row.operator('scene.at_reset_rot') | ||
|  |             row.operator('scene.fill_rot') | ||
|  |             row = layout.row() | ||
|  |             row.prop(my_prop, 'rot_min') | ||
|  |             row = layout.row() | ||
|  |             row.prop(my_prop, 'rot_max') |