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:
Diffstat (limited to 'magic_uv/op/world_scale_uv.py')
-rw-r--r--magic_uv/op/world_scale_uv.py49
1 files changed, 32 insertions, 17 deletions
diff --git a/magic_uv/op/world_scale_uv.py b/magic_uv/op/world_scale_uv.py
index a2806db5..dd42ed3d 100644
--- a/magic_uv/op/world_scale_uv.py
+++ b/magic_uv/op/world_scale_uv.py
@@ -20,8 +20,8 @@
__author__ = "McBuff, Nutti <nutti.metro@gmail.com>"
__status__ = "production"
-__version__ = "6.4"
-__date__ = "23 Oct 2020"
+__version__ = "6.5"
+__date__ = "6 Mar 2021"
from math import sqrt
@@ -97,11 +97,11 @@ def _measure_wsuv_info(obj, calc_method='MESH',
return uv_areas, mesh_areas, densities
-def _measure_wsuv_info_from_faces(obj, faces, uv_layer, tex_layer,
+def _measure_wsuv_info_from_faces(obj, bm, faces, uv_layer, tex_layer,
tex_selection_method='FIRST', tex_size=None):
- mesh_area = common.measure_mesh_area_from_faces(faces)
+ mesh_area = common.measure_mesh_area_from_faces(bm, faces)
uv_area = common.measure_uv_area_from_faces(
- obj, faces, uv_layer, tex_layer, tex_selection_method, tex_size)
+ obj, bm, faces, uv_layer, tex_layer, tex_selection_method, tex_size)
if not uv_area:
return None, mesh_area, None
@@ -376,7 +376,12 @@ class MUV_OT_WorldScaleUV_Measure(bpy.types.Operator):
@staticmethod
def setup_argument(ops, scene):
- ops.tgt_texture = scene.muv_world_scale_uv_measure_tgt_texture
+ try:
+ ops.tgt_texture = scene.muv_world_scale_uv_measure_tgt_texture
+ except TypeError:
+ # Workaround for the error raised when the items of EnumProperty
+ # are deleted.
+ ops.tgt_texture = "[Average]"
ops.only_selected = scene.muv_world_scale_uv_measure_only_selected
def execute(self, context):
@@ -524,7 +529,7 @@ class MUV_OT_WorldScaleUV_ApplyManual(bpy.types.Operator):
factors = []
for faces in faces_list:
uv_area, _, density = _measure_wsuv_info_from_faces(
- obj, faces, uv_layer, tex_layer,
+ obj, bm, faces, uv_layer, tex_layer,
tex_selection_method='USER_SPECIFIED', tex_size=tex_size)
if not uv_area:
@@ -659,7 +664,12 @@ class MUV_OT_WorldScaleUV_ApplyScalingDensity(bpy.types.Operator):
ops.src_density = scene.muv_world_scale_uv_src_density
ops.same_density = False
ops.show_dialog = False
- ops.tgt_texture = scene.muv_world_scale_uv_apply_tgt_texture
+ try:
+ ops.tgt_texture = scene.muv_world_scale_uv_apply_tgt_texture
+ except TypeError:
+ # Workaround for the error raised when the items of EnumProperty
+ # are deleted.
+ ops.tgt_texture = "[Average]"
ops.tgt_area_calc_method = \
scene.muv_world_scale_uv_tgt_area_calc_method
ops.only_selected = scene.muv_world_scale_uv_apply_only_selected
@@ -688,20 +698,20 @@ class MUV_OT_WorldScaleUV_ApplyScalingDensity(bpy.types.Operator):
for faces in faces_list:
if self.tgt_texture == "[Average]":
uv_area, _, density = _measure_wsuv_info_from_faces(
- obj, faces, uv_layer, tex_layer,
+ obj, bm, faces, uv_layer, tex_layer,
tex_selection_method='AVERAGE')
elif self.tgt_texture == "[Max]":
uv_area, _, density = _measure_wsuv_info_from_faces(
- obj, faces, uv_layer, tex_layer,
+ obj, bm, faces, uv_layer, tex_layer,
tex_selection_method='MAX')
elif self.tgt_texture == "[Min]":
uv_area, _, density = _measure_wsuv_info_from_faces(
- obj, faces, uv_layer, tex_layer,
+ obj, bm, faces, uv_layer, tex_layer,
tex_selection_method='MIN')
else:
tgt_texture = bpy.data.images[self.tgt_texture]
uv_area, _, density = _measure_wsuv_info_from_faces(
- obj, faces, uv_layer, tex_layer,
+ obj, bm, faces, uv_layer, tex_layer,
tex_selection_method='USER_SPECIFIED',
tex_size=tgt_texture.size)
@@ -859,7 +869,12 @@ class MUV_OT_WorldScaleUV_ApplyProportionalToMesh(bpy.types.Operator):
ops.src_uv_area = scene.muv_world_scale_uv_src_uv_area
ops.src_mesh_area = scene.muv_world_scale_uv_src_mesh_area
ops.show_dialog = False
- ops.tgt_texture = scene.muv_world_scale_uv_apply_tgt_texture
+ try:
+ ops.tgt_texture = scene.muv_world_scale_uv_apply_tgt_texture
+ except TypeError:
+ # Workaround for the error raised when the items of EnumProperty
+ # are deleted.
+ ops.tgt_texture = "[Average]"
ops.tgt_area_calc_method = \
scene.muv_world_scale_uv_tgt_area_calc_method
ops.only_selected = scene.muv_world_scale_uv_apply_only_selected
@@ -889,23 +904,23 @@ class MUV_OT_WorldScaleUV_ApplyProportionalToMesh(bpy.types.Operator):
if self.tgt_texture == "[Average]":
uv_area, mesh_area, density = \
_measure_wsuv_info_from_faces(
- obj, faces, uv_layer, tex_layer,
+ obj, bm, faces, uv_layer, tex_layer,
tex_selection_method='AVERAGE')
elif self.tgt_texture == "[Max]":
uv_area, mesh_area, density = \
_measure_wsuv_info_from_faces(
- obj, faces, uv_layer, tex_layer,
+ obj, bm, faces, uv_layer, tex_layer,
tex_selection_method='MAX')
elif self.tgt_texture == "[Min]":
uv_area, mesh_area, density = \
_measure_wsuv_info_from_faces(
- obj, faces, uv_layer, tex_layer,
+ obj, bm, faces, uv_layer, tex_layer,
tex_selection_method='MIN')
else:
tgt_texture = bpy.data.images[self.tgt_texture]
uv_area, mesh_area, density = \
_measure_wsuv_info_from_faces(
- obj, faces, uv_layer, tex_layer,
+ obj, bm, faces, uv_layer, tex_layer,
tex_selection_method='USER_SPECIFIED',
tex_size=tgt_texture.size)
if not uv_area: