Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bl_info = {
- "name": "Auto Align View",
- "author": "Eero Mutka",
- "version": (1, 0),
- "blender": (2, 75, 0),
- "location": "View3D",
- "description": "Aligns the view to the closest axis",
- "warning": "",
- "wiki_url": "",
- "category": "3D View",
- }
- import bpy
- from mathutils import Vector
- def main(context):
- v3d = context.space_data
- rv3d = v3d.region_3d
- ForwardVector = rv3d.view_rotation * Vector((0.0, 0.0, -1.0))
- ViewDir = "FRONT"
- ClosestDot = ForwardVector.dot(Vector((0.0, 1.0, 0.0)))
- Dot = ForwardVector.dot(Vector((0.0, -1.0, 0.0)))
- if Dot > ClosestDot:
- ViewDir = "BACK"
- ClosestDot = Dot
- Dot = ForwardVector.dot(Vector((-1.0, 0.0, 0.0)))
- if Dot > ClosestDot:
- ViewDir = "RIGHT"
- ClosestDot = Dot
- Dot = ForwardVector.dot(Vector((1.0, 0.0, 0.0)))
- if Dot > ClosestDot:
- ViewDir = "LEFT"
- ClosestDot = Dot
- Dot = ForwardVector.dot(Vector((0.0, 0.0, -1.0)))
- if Dot > ClosestDot:
- ViewDir = "TOP"
- ClosestDot = Dot
- Dot = ForwardVector.dot(Vector((0.0, 0.0, 1.0)))
- if Dot > ClosestDot:
- ViewDir = "BOTTOM"
- ClosestDot = Dot
- bpy.ops.view3d.viewnumpad(type = ViewDir)
- class AutoAlignView(bpy.types.Operator):
- """Tooltip"""
- bl_idname = "view3d.auto_align_view"
- bl_label = "Auto Align View"
- def execute(self, context):
- main(context)
- return {'FINISHED'}
- def register():
- bpy.utils.register_class(AutoAlignView)
- def unregister():
- bpy.utils.unregister_class(AutoAlignView)
- if __name__ == "__main__":
- register()
Advertisement
Add Comment
Please, Sign In to add comment