diff options
author | zeffii <tetha.z@gmail.com> | 2017-02-17 11:17:07 +0300 |
---|---|---|
committer | zeffii <tetha.z@gmail.com> | 2017-02-17 11:17:07 +0300 |
commit | ff8ef5cb121e590ef1a5f3e5f57b9bf99c46559d (patch) | |
tree | dbf7846b3494c678f54825c9429ddda8b6655f4c /mesh_tiny_cad | |
parent | dd5e311b73b699aed0bae43936e5968c639713f5 (diff) |
fix major xall bug and bump version
Diffstat (limited to 'mesh_tiny_cad')
-rw-r--r-- | mesh_tiny_cad/XALL.py | 43 | ||||
-rw-r--r-- | mesh_tiny_cad/__init__.py | 4 |
2 files changed, 21 insertions, 26 deletions
diff --git a/mesh_tiny_cad/XALL.py b/mesh_tiny_cad/XALL.py index 8cd25a5c..83ecdb52 100644 --- a/mesh_tiny_cad/XALL.py +++ b/mesh_tiny_cad/XALL.py @@ -108,37 +108,30 @@ def get_intersection_dictionary(bm, edge_indices): return d -def update_mesh(obj, d): +def update_mesh(bm, d): ''' Make new geometry (delete old first) ''' - bpy.ops.mesh.delete(type='EDGE') - bpy.ops.object.editmode_toggle() - - oe = obj.data.edges - ov = obj.data.vertices - vert_count = len(ov) - edge_count = len(oe) + oe = bm.edges + ov = bm.verts + new_verts = [] + collect = new_verts.extend for old_edge, point_list in d.items(): - num_points = len(point_list) - num_edges_to_add = num_points - 1 - + num_edges_to_add = len(point_list)-1 for i in range(num_edges_to_add): - oe.add(1) - ov.add(2) + a = ov.new(point_list[i]) + b = ov.new(point_list[i+1]) + oe.new((a, b)) + bm.normal_update() + collect([a, b]) - ov[vert_count].co = point_list[i] - ov[vert_count + 1].co = point_list[i + 1] + bmesh.ops.delete(bm, geom=[edge for edge in bm.edges if edge.select], context=2) # 2 = edges - oe[edge_count].vertices = [vert_count, vert_count + 1] - vert_count = len(ov) - edge_count = len(oe) + #bpy.ops.mesh.remove_doubles( + # threshold=cm.CAD_prefs.VTX_DOUBLES_THRSHLD, + # use_unselected=False) - # set edit mode - bpy.ops.object.editmode_toggle() - bpy.ops.mesh.remove_doubles( - threshold=cm.CAD_prefs.VTX_DOUBLES_THRSHLD, - use_unselected=False) + bmesh.ops.remove_doubles(bm, verts=new_verts, dist=cm.CAD_prefs.VTX_DOUBLES_THRSHLD) def unselect_nonintersecting(bm, d_edges, edge_indices): @@ -174,7 +167,9 @@ class TCIntersectAllEdges(bpy.types.Operator): d = get_intersection_dictionary(bm, edge_indices) unselect_nonintersecting(bm, d.keys(), edge_indices) - update_mesh(obj, d) + update_mesh(bm, d) + + bmesh.update_edit_mesh(obj.data) else: print('must be in edit mode') diff --git a/mesh_tiny_cad/__init__.py b/mesh_tiny_cad/__init__.py index 4c2c2acd..611c67c4 100644 --- a/mesh_tiny_cad/__init__.py +++ b/mesh_tiny_cad/__init__.py @@ -22,13 +22,13 @@ bl_info = { "name": "tinyCAD Mesh tools", "author": "zeffii (aka Dealga McArdle)", - "version": (1, 3, 0), + "version": (1, 3, 1), "blender": (2, 7, 7), "category": "Mesh", "location": "View3D > EditMode > (w) Specials", "wiki_url": "http://zeffii.github.io/mesh_tiny_cad/", "tracker_url": "https://github.com/zeffii/mesh_tiny_cad/issues" - } +} if "bpy" in locals(): |