Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormeta-androcto <meta.androcto1@gmail.com>2017-04-05 11:23:12 +0300
committermeta-androcto <meta.androcto1@gmail.com>2017-04-05 11:23:12 +0300
commit8514093bd5ee85c498b4bbd8ef8c4e4d7434e972 (patch)
tree5468d25cc96bb04a83139abf3a949c95ded64dfe /mesh_extra_tools
parentfa076be65f7de830f5d51bbd1f674ec582175f5a (diff)
mesh edit tools: clean up vert align part1
Diffstat (limited to 'mesh_extra_tools')
-rw-r--r--mesh_extra_tools/__init__.py61
-rw-r--r--mesh_extra_tools/vertex_align.py164
2 files changed, 87 insertions, 138 deletions
diff --git a/mesh_extra_tools/__init__.py b/mesh_extra_tools/__init__.py
index 0aa86b37..096206ea 100644
--- a/mesh_extra_tools/__init__.py
+++ b/mesh_extra_tools/__init__.py
@@ -33,7 +33,7 @@ bl_info = {
"tracker_url": "https://developer.blender.org/maniphest/task/edit/form/2/",
"category": "Mesh"}
-# NOTE: Temporarly disable Vertex align since is broken
+
# Import From Files
if "bpy" in locals():
import importlib
@@ -64,7 +64,7 @@ if "bpy" in locals():
importlib.reload(mesh_info_select)
importlib.reload(mesh_extrude_and_reshape)
importlib.reload(mesh_check)
- # importlib.reload(vertex_align)
+ importlib.reload(vertex_align)
else:
from . import face_inset_fillet
@@ -86,7 +86,7 @@ else:
from . import mesh_help
from . import mesh_extrude_and_reshape
from . import mesh_check
- # from . import vertex_align
+ from . import vertex_align
from .mesh_select_tools import mesh_select_by_direction
from .mesh_select_tools import mesh_select_by_edge_length
@@ -101,6 +101,7 @@ else:
import bpy
import bmesh
+from bpy.props import EnumProperty
from bpy.types import (
Menu,
Panel,
@@ -239,35 +240,22 @@ class EditToolsPanel(Panel):
row.operator("mesh.random_vertices", text="Random Vertices")
row.operator("mesh.extra_tools_help",
icon="LAYER_USED").help_ids = "random_vertices"
-
- # temporarly disable vertex_align since it is borked
- """
- cen0 = context.scene.va_custom_props.en0
+ # Vertex Align Properties And Menu
+ cen0 = context.scene.va_custom_props.en0 # get the properties list
layout = self.layout
-
layout.label(text="Vertex Align:", icon="VERTEXSEL")
- layout.prop(context.scene.va_custom_props, 'en0', expand = False)
-
- if cen0 == 'opt0':
+ layout.prop(context.scene.va_custom_props, 'en0', expand = False) # Draw the menu with 2 options
+ if cen0 == 'vertex':
row = layout.split(0.60)
row.label('Store data:')
- row.operator('va.op0_id', text = 'Vertex')
+ row.operator('va.op0_store_id', text = 'Vertex')
row1 = layout.split(0.8, align=True)
- row1.operator('va.op2_id', text = 'Align')
- row1.operator('va.op7_id', text = '', icon = "LAYER_USED")
- elif cen0 == 'opt1':
- layout.operator('va.op3_id', text = 'Align')
- elif cen0 == 'opt2':
- row = layout.split(0.40)
- row.label('Store data:')
- row.operator('va.op0_id', text = 'Two vertices')
- layout.operator('va.op5_id', text = 'Align')
- elif cen0 == 'opt3':
- row = layout.split(0.60)
- row.label('Store data:')
- row.operator('va.op1_id', text = 'Face')
- layout.operator('va.op6_id', text = 'Align')
- """
+ row1.operator('va.op2_align_id', text = 'Align to Axis')
+ row1.operator('va.op7_help_id', text = '', icon = "LAYER_USED")
+ elif cen0 == 'coordinates':
+ layout.operator('va.op3_coord_list_id', text = 'Align Coordinates')
+
+
# Edge options
box1 = self.layout.box()
col = box1.column(align=True)
@@ -399,26 +387,25 @@ class EditToolsPanel(Panel):
icons = load_icons()
tris = icons.get("triangles")
ngons = icons.get("ngons")
-
+
+
mesh_check = context.window_manager.mesh_check
-
+
layout.prop(mesh_check, "mesh_check_use")
-
+
if mesh_check.mesh_check_use:
layout = self.layout
row = layout.row()
- row.operator("object.face_type_select", text="Tris",
- icon_value=tris.icon_id).face_type = 'tris'
- row.operator("object.face_type_select", text="Ngons",
- icon_value=ngons.icon_id).face_type = 'ngons'
+ row.operator("object.face_type_select", text="Tris", icon_value=tris.icon_id).face_type = 'tris'
+ row.operator("object.face_type_select", text="Ngons",icon_value=ngons.icon_id).face_type = 'ngons'
row = layout.row()
row.prop(mesh_check, "display_faces", text="Display Faces")
if mesh_check.display_faces:
row = layout.row()
row.prop(mesh_check, "edge_width")
row = layout.row()
- row.prop(mesh_check, "custom_tri_color", text="Tris color")
+ row.prop(mesh_check, "custom_tri_color",text="Tris color" )
row = layout.row()
row.prop(mesh_check, "custom_ngons_color")
row = layout.row()
@@ -814,7 +801,7 @@ def register():
vfe_specials.register()
mesh_extrude_and_reshape.register()
mesh_check.register()
- # vertex_align.register()
+ vertex_align.register()
bpy.utils.register_module(__name__)
# Register Scene Properties
@@ -839,7 +826,7 @@ def unregister():
vfe_specials.unregister()
mesh_extrude_and_reshape.unregister()
mesh_check.unregister()
- # vertex_align.unregister()
+ vertex_align.unregister()
del bpy.types.Scene.mesh_extra_tools
del bpy.types.Object.tkkey
diff --git a/mesh_extra_tools/vertex_align.py b/mesh_extra_tools/vertex_align.py
index 04401aef..d0c17e9b 100644
--- a/mesh_extra_tools/vertex_align.py
+++ b/mesh_extra_tools/vertex_align.py
@@ -34,9 +34,21 @@ bl_info = {
# ------ ------
import bpy
-from bpy.props import PointerProperty, EnumProperty, FloatProperty, BoolProperty
+from bpy.props import (
+ BoolProperty,
+ EnumProperty,
+ PointerProperty,
+ FloatProperty,
+ )
+
from mathutils import Vector
-from mathutils.geometry import intersect_point_line, intersect_line_plane
+from mathutils.geometry import (
+ intersect_point_line,
+ intersect_line_plane,
+ )
+from bpy.types import (
+ PropertyGroup,
+ )
# ------ Edit Mode Toggle------
def edit_mode_out():
@@ -49,22 +61,22 @@ def edit_mode_in():
def get_mesh_data_():
edit_mode_out()
ob_act = bpy.context.active_object
- me = ob_act.data
+ me = ob_act.data
edit_mode_in()
- return me
-
+ return me
+
def list_clear_(l):
l[:] = []
return l
# -- -- Prpoerty Group-- --
-class va_p_group0(bpy.types.PropertyGroup):
+class va_property_group(PropertyGroup):
+
+ en0 = EnumProperty( items =( ('vertex', 'Original vertex', ''),
+ ('coordinates', 'Custom coordinates', '')),
- en0 = EnumProperty( items =( ('opt0', 'Original vertex', ''),
- ('opt1', 'Custom coordinates', '')),
- ## REMOVED BROKEN ('opt2', 'Line', ''), ('opt3', 'Plane', '')),
name = 'Align to',
- default = 'opt0' )
+ default = 'vertex' )
en1 = EnumProperty( items =( ('en1_opt0', 'x', ''),
('en1_opt1', 'y', ''),
@@ -78,9 +90,9 @@ class va_buf():
list_f = []
list_0 = []
-# ------ operator 0 ------
-class va_op0(bpy.types.Operator):
- bl_idname = 'va.op0_id'
+# ------ operator 0 Store The Vert------
+class va_op0_store(bpy.types.Operator):
+ bl_idname = 'va.op0_store_id'
bl_label = ''
bl_description = "Store single vert as align point"
@@ -93,8 +105,8 @@ class va_op0(bpy.types.Operator):
bpy.ops.mesh.select_all(action = 'DESELECT')
return {'FINISHED'}
-# ------ operator 1 ------
-class va_op1(bpy.types.Operator):
+# ------ operator 1 Append to list------
+class va_op1_list(bpy.types.Operator):
bl_idname = 'va.op1_id'
bl_label = ''
bl_description = "test2"
@@ -109,8 +121,8 @@ class va_op1(bpy.types.Operator):
return {'FINISHED'}
# ------ operator 2 ------ align to original
-class va_op2(bpy.types.Operator):
- bl_idname = 'va.op2_id'
+class va_op2_align(bpy.types.Operator):
+ bl_idname = 'va.op2_align_id'
bl_label = 'Align to original'
bl_options = {'REGISTER', 'UNDO'}
bl_description = "Align selection to stored single vert"
@@ -154,10 +166,10 @@ class va_op2(bpy.types.Operator):
me.vertices[i].co = Vector(( v[0], v[1], vo[2] ))
edit_mode_in()
return {'FINISHED'}
-
+
# ------ operator 3 ------ align to custom coordinates
-class va_op3(bpy.types.Operator):
- bl_idname = 'va.op3_id'
+class va_op3_coord_list(bpy.types.Operator):
+ bl_idname = 'va.op3_coord_list_id'
bl_label = ''
bl_description = "Align to custom coordinates"
@@ -176,14 +188,19 @@ class va_op3(bpy.types.Operator):
edit_mode_in()
return {'FINISHED'}
-# ------ operator 4 ------ align to custom coordinates
-class va_op4(bpy.types.Operator):
+# ------ operator 4 ------ align to custom coordinates menu
+class va_op4_coord_menu(bpy.types.Operator):
bl_idname = 'va.op4_id'
bl_label = 'Align to custom coordinates'
bl_options = {'REGISTER', 'UNDO'}
bl_description = "Align to custom coordinates2"
-
- x = y = z = FloatProperty( name = '', default = 0.0, min = -100.0, max = 100.0, step = 1, precision = 3 )
+
+ x = y = z = FloatProperty( name = '',
+ default = 0.0,
+ min = -100.0,
+ max = 100.0,
+ step = 1,
+ precision = 3 )
b_x = b_y = b_z = BoolProperty()
def draw(self, context):
@@ -197,7 +214,7 @@ class va_op4(bpy.types.Operator):
row = layout.split(0.25)
row.prop(self, 'b_z', text = 'z')
row.prop(self, 'z')
-
+
def invoke(self, context, event):
return context.window_manager.invoke_props_dialog(self, width = 200)
@@ -205,7 +222,7 @@ class va_op4(bpy.types.Operator):
edit_mode_out()
ob_act = context.active_object
me = ob_act.data
-
+
for i in va_buf.list_0:
v = (me.vertices[i].co).copy()
tmp = Vector((v[0], v[1], v[2]))
@@ -219,74 +236,10 @@ class va_op4(bpy.types.Operator):
edit_mode_in()
return {'FINISHED'}
-# ------ operator 5 ------ align to line
-class va_op5(bpy.types.Operator):
- bl_idname = 'va.op5_id'
- bl_label = 'Align to line'
- bl_options = {'REGISTER', 'UNDO'}
- bl_description = "Align to line"
-
- def execute(self, context):
- edit_mode_out()
- ob_act = context.active_object
- me = ob_act.data
- list_0 = [v.index for v in me.vertices if v.select]
-
- if len(va_buf.list_v) != 2:
- self.report({'INFO'}, 'Two guide vertices must be stored in memory.')
- edit_mode_in()
- return {'CANCELLED'}
- elif len(va_buf.list_v) > 1:
- if len(list_0) == 0:
- self.report({'INFO'}, 'No vertices selected')
- edit_mode_in()
- return {'CANCELLED'}
- elif len(list_0) != 0:
- p1 = (me.vertices[va_buf.list_v[0]].co).copy()
- p2 = (me.vertices[va_buf.list_v[1]].co).copy()
- for i in list_0:
- v = (me.vertices[i].co).copy()
- me.vertices[i].co = intersect_point_line( v, p1, p2)[0]
- edit_mode_in()
- return {'FINISHED'}
-
-# ------ operator 6 ------ align to plane
-class va_op6(bpy.types.Operator):
- bl_idname = 'va.op6_id'
- bl_label = 'Align to plane'
- bl_options = {'REGISTER', 'UNDO'}
- bl_description = "Align to Plane"
-
- def execute(self, context):
- edit_mode_out()
- ob_act = context.active_object
- me = ob_act.data
- list_0 = [v.index for v in me.vertices if v.select]
-
- if len(va_buf.list_f) == 0:
- self.report({'INFO'}, 'No face stored in memory')
- edit_mode_in()
- return {'CANCELLED'}
- elif len(va_buf.list_f) != 0:
- if len(list_0) == 0:
- self.report({'INFO'}, 'No vertices selected')
- edit_mode_in()
- return {'CANCELLED'}
- elif len(list_0) != 0:
- f = me.faces[va_buf.list_f[0]]
- for i in list_0:
- v = (me.vertices[i].co).copy()
- p = v + ((f.normal).copy() * 0.1)
- pp = (me.vertices[f.vertices[0]].co).copy()
- pn = (f.normal).copy()
- me.vertices[i].co = intersect_line_plane(v, p, pp, pn)
- edit_mode_in()
- return {'FINISHED'}
-
# ------ operator 7 Help------
-class va_op7(bpy.types.Operator):
+class va_op7_help(bpy.types.Operator):
- bl_idname = 'va.op7_id'
+ bl_idname = 'va.op7_help_id'
bl_label = ''
bl_description = "Info"
@@ -296,7 +249,7 @@ class va_op7(bpy.types.Operator):
layout.label('To use select whatever you want vertices to be aligned to ')
layout.label('and click button next to store data label. ')
layout.label('Select vertices that you want to align and click Align button. ')
-
+
def execute(self, context):
return {'FINISHED'}
@@ -304,7 +257,7 @@ class va_op7(bpy.types.Operator):
return context.window_manager.invoke_popup(self, width = 400)
# ------ operator 8 ------
-class va_op8(bpy.types.Operator):
+class va_op8_execute(bpy.types.Operator):
bl_idname = 'va.op8_id'
bl_label = ''
bl_description = "Executs"
@@ -312,19 +265,28 @@ class va_op8(bpy.types.Operator):
bpy.ops.va.op7_id('INVOKE_DEFAULT')
return {'FINISHED'}
-# ------ ------
-class_list = [ va_op0, va_op1, va_op2, va_op3, va_op4, va_op5, va_op6, va_op7, va_op8, va_p_group0 ]
-
-# ------ ------
+# ------ Classes ------
+
+classes = (
+ va_property_group,
+ va_op0_store,
+ va_op1_list,
+ va_op2_align,
+ va_op3_coord_list,
+ va_op4_coord_menu,
+ va_op7_help,
+ va_op8_execute,
+ )
+# ------ Register ------
def register():
- for c in class_list:
+ for c in classes:
bpy.utils.register_class(c)
- bpy.types.Scene.va_custom_props = PointerProperty(type = va_p_group0)
+ bpy.types.Scene.va_custom_props = PointerProperty(type = va_property_group)
# ------ ------
def unregister():
- for c in class_list:
+ for c in classes:
bpy.utils.unregister_class(c)
del bpy.context.scene['va_custom_props']