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:
authorVladimir Spivak(cwolf3d) <cwolf3d@gmail.com>2020-03-29 13:35:40 +0300
committerVladimir Spivak(cwolf3d) <cwolf3d@gmail.com>2020-03-29 13:35:40 +0300
commitaf6e605a120ba58b0e5822b060bedffe590fcd2b (patch)
tree8c097e22fe4eaa6c3e3581041d22191cc96e7651 /mesh_looptools.py
parent1bd7fdc6ac0cbb8ff5dbd716c8f29881a4a47acf (diff)
Fix T74834:LoopTools Circle operator does not work with the mirror modifier
Diffstat (limited to 'mesh_looptools.py')
-rw-r--r--mesh_looptools.py31
1 files changed, 16 insertions, 15 deletions
diff --git a/mesh_looptools.py b/mesh_looptools.py
index e2e78960..af84f61f 100644
--- a/mesh_looptools.py
+++ b/mesh_looptools.py
@@ -23,7 +23,7 @@
bl_info = {
"name": "LoopTools",
"author": "Bart Crouch, Vladimir Spivak (cwolf3d)",
- "version": (4, 7, 2),
+ "version": (4, 7, 3),
"blender": (2, 80, 0),
"location": "View3D > Sidebar > Edit Tab / Edit Mode Context Menu",
"warning": "",
@@ -443,9 +443,9 @@ def face_edgekeys(face):
# calculate input loops
-def get_connected_input(object, bm, input):
+def get_connected_input(object, bm, not_use_mirror, input):
# get mesh with modifiers applied
- derived, bm_mod = get_derived_bmesh(object, bm)
+ derived, bm_mod = get_derived_bmesh(object, bm, not_use_mirror)
# calculate selected loops
edge_keys = [edgekey(edge) for edge in bm_mod.edges if edge.select and not edge.hide]
@@ -532,7 +532,7 @@ def get_connected_selections(edge_keys):
# get the derived mesh data, if there is a mirror modifier
-def get_derived_bmesh(object, bm):
+def get_derived_bmesh(object, bm, not_use_mirror):
# check for mirror modifiers
if 'MIRROR' in [mod.type for mod in object.modifiers if mod.show_viewport]:
derived = True
@@ -545,7 +545,8 @@ def get_derived_bmesh(object, bm):
#leave the merge points untouched
if mod.type == 'MIRROR':
merge.append(mod.use_mirror_merge)
- mod.use_mirror_merge = False
+ if not_use_mirror:
+ mod.use_mirror_merge = False
# get derived mesh
bm_mod = bmesh.new()
depsgraph = bpy.context.evaluated_depsgraph_get()
@@ -2007,7 +2008,7 @@ def circle_flatten_singles(bm_mod, com, p, q, normal, single_loop):
# calculate input loops
def circle_get_input(object, bm):
# get mesh with modifiers applied
- derived, bm_mod = get_derived_bmesh(object, bm)
+ derived, bm_mod = get_derived_bmesh(object, bm, False)
# create list of edge-keys based on selection state
faces = False
@@ -2352,7 +2353,7 @@ def curve_cut_boundaries(bm_mod, loops):
# calculate input loops
def curve_get_input(object, bm, boundaries):
# get mesh with modifiers applied
- derived, bm_mod = get_derived_bmesh(object, bm)
+ derived, bm_mod = get_derived_bmesh(object, bm, False)
# vertices that still need a loop to run through it
verts_unsorted = [
@@ -3524,7 +3525,7 @@ class Circle(Operator):
cached, single_loops, loops, derived, mapping = cache_read("Circle",
object, bm, False, False)
if cached:
- derived, bm_mod = get_derived_bmesh(object, bm)
+ derived, bm_mod = get_derived_bmesh(object, bm, False)
else:
# find loops
derived, bm_mod, single_vertices, single_loops, loops = \
@@ -3688,7 +3689,7 @@ class Curve(Operator):
cached, single_loops, loops, derived, mapping = cache_read("Curve",
object, bm, False, self.boundaries)
if cached:
- derived, bm_mod = get_derived_bmesh(object, bm)
+ derived, bm_mod = get_derived_bmesh(object, bm, False)
else:
# find loops
derived, bm_mod, loops = curve_get_input(object, bm, self.boundaries)
@@ -4069,12 +4070,12 @@ class GStretch(Operator):
bm_mod.faces.ensure_lookup_table()
strokes = gstretch_get_fake_strokes(object, bm_mod, loops)
if not straightening:
- derived, bm_mod = get_derived_bmesh(object, bm)
+ derived, bm_mod = get_derived_bmesh(object, bm, False)
else:
# get loops and strokes
if get_strokes(self, context):
# find loops
- derived, bm_mod, loops = get_connected_input(object, bm, input='selected')
+ derived, bm_mod, loops = get_connected_input(object, bm, False, input='selected')
mapping = get_mapping(derived, bm, bm_mod, False, False, loops)
loops = check_loops(loops, mapping, bm_mod)
# get strokes
@@ -4220,10 +4221,10 @@ class Relax(Operator):
cached, single_loops, loops, derived, mapping = cache_read("Relax",
object, bm, self.input, False)
if cached:
- derived, bm_mod = get_derived_bmesh(object, bm)
+ derived, bm_mod = get_derived_bmesh(object, bm, False)
else:
# find loops
- derived, bm_mod, loops = get_connected_input(object, bm, self.input)
+ derived, bm_mod, loops = get_connected_input(object, bm, False, self.input)
mapping = get_mapping(derived, bm, bm_mod, False, False, loops)
loops = check_loops(loops, mapping, bm_mod)
knots, points = relax_calculate_knots(loops)
@@ -4342,10 +4343,10 @@ class Space(Operator):
cached, single_loops, loops, derived, mapping = cache_read("Space",
object, bm, self.input, False)
if cached:
- derived, bm_mod = get_derived_bmesh(object, bm)
+ derived, bm_mod = get_derived_bmesh(object, bm, True)
else:
# find loops
- derived, bm_mod, loops = get_connected_input(object, bm, self.input)
+ derived, bm_mod, loops = get_connected_input(object, bm, True, self.input)
mapping = get_mapping(derived, bm, bm_mod, False, False, loops)
loops = check_loops(loops, mapping, bm_mod)