mirror of
https://github.com/blender/blender-addons.git
synced 2025-08-20 13:22:58 +00:00

- remove unused imports - remove/comment unused vars - fix for some bugs with unused vars being used
343 lines
9.7 KiB
Python
343 lines
9.7 KiB
Python
# AlingTools.py (c) 2009, 2010 Gabriel Beaudin (gabhead)
|
|
#
|
|
# ***** BEGIN GPL LICENSE BLOCK *****
|
|
#
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License
|
|
# as published by the Free Software Foundation; either version 2
|
|
# of the License, or (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software Foundation,
|
|
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
#
|
|
# ***** END GPL LICENCE BLOCK *****
|
|
|
|
bl_info = {
|
|
"name": "Align Tools",
|
|
"author": "Gabriel Beaudin (gabhead)",
|
|
"version": (0,1),
|
|
"blender": (2, 5, 7),
|
|
"api": 35853,
|
|
"location": "View3D > Tool Shelf > Align Tools Panel",
|
|
"description": "Align Selected Objects to Active Object",
|
|
"warning": "",
|
|
"wiki_url": "http://wiki.blender.org/index.php/Extensions:2.5/Py/"\
|
|
"Scripts/3D interaction/Align_Tools",
|
|
"tracker_url": "https://projects.blender.org/tracker/index.php?"\
|
|
"func=detail&aid==22389",
|
|
"category": "3D View"}
|
|
|
|
"""Align Selected Objects"""
|
|
|
|
import bpy
|
|
|
|
|
|
class AlignUi(bpy.types.Panel):
|
|
bl_space_type = 'VIEW_3D'
|
|
bl_region_type = 'TOOLS'
|
|
|
|
bl_label = "Align Tools"
|
|
bl_context = "objectmode"
|
|
|
|
def draw(self, context):
|
|
layout = self.layout
|
|
obj = context.object
|
|
|
|
if obj != None:
|
|
row = layout.row()
|
|
row.label(text="Active object is: ", icon='OBJECT_DATA')
|
|
row = layout.row()
|
|
row.label(obj.name, icon='EDITMODE_HLT')
|
|
|
|
layout.separator()
|
|
|
|
col = layout.column()
|
|
col.label(text="Align Loc + Rot:", icon='MANIPUL')
|
|
|
|
|
|
col = layout.column(align=False)
|
|
col.operator("object.align",text="XYZ")
|
|
|
|
col = layout.column()
|
|
col.label(text="Align Location:", icon='MAN_TRANS')
|
|
|
|
col = layout.column_flow(columns=5,align=True)
|
|
col.operator("object.align_location_x",text="X")
|
|
col.operator("object.align_location_y",text="Y")
|
|
col.operator("object.align_location_z",text="Z")
|
|
col.operator("object.align_location_all",text="All")
|
|
|
|
col = layout.column()
|
|
col.label(text="Align Rotation:", icon='MAN_ROT')
|
|
|
|
col = layout.column_flow(columns=5,align=True)
|
|
col.operator("object.align_rotation_x",text="X")
|
|
col.operator("object.align_rotation_y",text="Y")
|
|
col.operator("object.align_rotation_z",text="Z")
|
|
col.operator("object.align_rotation_all",text="All")
|
|
|
|
col = layout.column()
|
|
col.label(text="Align Scale:", icon='MAN_SCALE')
|
|
|
|
col = layout.column_flow(columns=5,align=True)
|
|
col.operator("object.align_objects_scale_x",text="X")
|
|
col.operator("object.align_objects_scale_y",text="Y")
|
|
col.operator("object.align_objects_scale_z",text="Z")
|
|
col.operator("object.align_objects_scale_all",text="All")
|
|
|
|
|
|
##Align all
|
|
def main(context):
|
|
for i in bpy.context.selected_objects:
|
|
i.location = bpy.context.active_object.location
|
|
i.rotation_euler = bpy.context.active_object.rotation_euler
|
|
|
|
## Align Location
|
|
|
|
def LocAll(context):
|
|
for i in bpy.context.selected_objects:
|
|
i.location = bpy.context.active_object.location
|
|
|
|
def LocX(context):
|
|
for i in bpy.context.selected_objects:
|
|
i.location.x = bpy.context.active_object.location.x
|
|
|
|
def LocY(context):
|
|
for i in bpy.context.selected_objects:
|
|
i.location.y = bpy.context.active_object.location.y
|
|
|
|
def LocZ(context):
|
|
for i in bpy.context.selected_objects:
|
|
i.location.z = bpy.context.active_object.location.z
|
|
|
|
## Aling Rotation
|
|
def RotAll(context):
|
|
for i in bpy.context.selected_objects:
|
|
i.rotation_euler = bpy.context.active_object.rotation_euler
|
|
|
|
def RotX(context):
|
|
for i in bpy.context.selected_objects:
|
|
i.rotation_euler.x = bpy.context.active_object.rotation_euler.x
|
|
|
|
def RotY(context):
|
|
for i in bpy.context.selected_objects:
|
|
i.rotation_euler.y = bpy.context.active_object.rotation_euler.y
|
|
|
|
def RotZ(context):
|
|
for i in bpy.context.selected_objects:
|
|
i.rotation_euler.z = bpy.context.active_object.rotation_euler.z
|
|
## Aling Scale
|
|
def ScaleAll(context):
|
|
for i in bpy.context.selected_objects:
|
|
i.scale = bpy.context.active_object.scale
|
|
|
|
def ScaleX(context):
|
|
for i in bpy.context.selected_objects:
|
|
i.scale.x = bpy.context.active_object.scale.x
|
|
|
|
def ScaleY(context):
|
|
for i in bpy.context.selected_objects:
|
|
i.scale.y = bpy.context.active_object.scale.y
|
|
|
|
def ScaleZ(context):
|
|
for i in bpy.context.selected_objects:
|
|
i.scale.z = bpy.context.active_object.scale.z
|
|
|
|
## Classes
|
|
|
|
## Align All Rotation And Location
|
|
class AlignOperator(bpy.types.Operator):
|
|
''''''
|
|
bl_idname = "object.align"
|
|
bl_label = "Align Selected To Active"
|
|
|
|
@classmethod
|
|
def poll(cls, context):
|
|
return context.active_object != None
|
|
|
|
def execute(self, context):
|
|
main(context)
|
|
return {'FINISHED'}
|
|
|
|
#######################Align Location########################
|
|
## Align LocationAll
|
|
class AlignLocationOperator(bpy.types.Operator):
|
|
''''''
|
|
bl_idname = "object.align_location_all"
|
|
bl_label = "Align Selected Location To Active"
|
|
|
|
@classmethod
|
|
def poll(cls, context):
|
|
return context.active_object != None
|
|
|
|
def execute(self, context):
|
|
LocAll(context)
|
|
return {'FINISHED'}
|
|
## Align LocationX
|
|
class AlignLocationXOperator(bpy.types.Operator):
|
|
''''''
|
|
bl_idname = "object.align_location_x"
|
|
bl_label = "Align Selected Location X To Active"
|
|
|
|
@classmethod
|
|
def poll(cls, context):
|
|
return context.active_object != None
|
|
|
|
def execute(self, context):
|
|
LocX(context)
|
|
return {'FINISHED'}
|
|
## Align LocationY
|
|
class AlignLocationYOperator(bpy.types.Operator):
|
|
''''''
|
|
bl_idname = "object.align_location_y"
|
|
bl_label = "Align Selected Location Y To Active"
|
|
|
|
@classmethod
|
|
def poll(cls, context):
|
|
return context.active_object != None
|
|
|
|
def execute(self, context):
|
|
LocY(context)
|
|
return {'FINISHED'}
|
|
## Align LocationZ
|
|
class AlignLocationZOperator(bpy.types.Operator):
|
|
''''''
|
|
bl_idname = "object.align_location_z"
|
|
bl_label = "Align Selected Location Z To Active"
|
|
|
|
@classmethod
|
|
def poll(cls, context):
|
|
return context.active_object != None
|
|
|
|
def execute(self, context):
|
|
LocZ(context)
|
|
return {'FINISHED'}
|
|
|
|
#######################Align Rotation########################
|
|
## Align RotationAll
|
|
class AlignRotationOperator(bpy.types.Operator):
|
|
''''''
|
|
bl_idname = "object.align_rotation_all"
|
|
bl_label = "Align Selected Rotation To Active"
|
|
|
|
@classmethod
|
|
def poll(cls, context):
|
|
return context.active_object != None
|
|
|
|
def execute(self, context):
|
|
RotAll(context)
|
|
return {'FINISHED'}
|
|
## Align RotationX
|
|
class AlignRotationXOperator(bpy.types.Operator):
|
|
''''''
|
|
bl_idname = "object.align_rotation_x"
|
|
bl_label = "Align Selected Rotation X To Active"
|
|
|
|
@classmethod
|
|
def poll(cls, context):
|
|
return context.active_object != None
|
|
|
|
def execute(self, context):
|
|
RotX(context)
|
|
return {'FINISHED'}
|
|
## Align RotationY
|
|
class AlignRotationYOperator(bpy.types.Operator):
|
|
''''''
|
|
bl_idname = "object.align_rotation_y"
|
|
bl_label = "Align Selected Rotation Y To Active"
|
|
|
|
@classmethod
|
|
def poll(cls, context):
|
|
return context.active_object != None
|
|
|
|
def execute(self, context):
|
|
RotY(context)
|
|
return {'FINISHED'}
|
|
## Align RotationZ
|
|
class AlignRotationZOperator(bpy.types.Operator):
|
|
''''''
|
|
bl_idname = "object.align_rotation_z"
|
|
bl_label = "Align Selected Rotation Z To Active"
|
|
|
|
@classmethod
|
|
def poll(cls, context):
|
|
return context.active_object != None
|
|
|
|
def execute(self, context):
|
|
RotZ(context)
|
|
return {'FINISHED'}
|
|
#######################Align Scale########################
|
|
## Scale All
|
|
class AlignScaleOperator(bpy.types.Operator):
|
|
''''''
|
|
bl_idname = "object.align_objects_scale_all"
|
|
bl_label = "Align Selected Scale To Active"
|
|
|
|
@classmethod
|
|
def poll(cls, context):
|
|
return context.active_object != None
|
|
|
|
def execute(self, context):
|
|
ScaleAll(context)
|
|
return {'FINISHED'}
|
|
## Align ScaleX
|
|
class AlignScaleXOperator(bpy.types.Operator):
|
|
''''''
|
|
bl_idname = "object.align_objects_scale_x"
|
|
bl_label = "Align Selected Scale X To Active"
|
|
|
|
@classmethod
|
|
def poll(cls, context):
|
|
return context.active_object != None
|
|
|
|
def execute(self, context):
|
|
ScaleX(context)
|
|
return {'FINISHED'}
|
|
## Align ScaleY
|
|
class AlignScaleYOperator(bpy.types.Operator):
|
|
''''''
|
|
bl_idname = "object.align_objects_scale_y"
|
|
bl_label = "Align Selected Scale Y To Active"
|
|
|
|
@classmethod
|
|
def poll(cls, context):
|
|
return context.active_object != None
|
|
|
|
def execute(self, context):
|
|
ScaleY(context)
|
|
return {'FINISHED'}
|
|
## Align ScaleZ
|
|
class AlignScaleZOperator(bpy.types.Operator):
|
|
''''''
|
|
bl_idname = "object.align_objects_scale_z"
|
|
bl_label = "Align Selected Scale Z To Active"
|
|
|
|
@classmethod
|
|
def poll(cls, context):
|
|
return context.active_object != None
|
|
|
|
def execute(self, context):
|
|
ScaleZ(context)
|
|
return {'FINISHED'}
|
|
|
|
## registring
|
|
def register():
|
|
bpy.utils.register_module(__name__)
|
|
|
|
pass
|
|
|
|
def unregister():
|
|
bpy.utils.unregister_module(__name__)
|
|
|
|
pass
|
|
|
|
if __name__ == "__main__":
|
|
register()
|