Fix #104441: Bsurfaces: get modifiers with their type instead of name #104443

Merged
Damien Picard merged 1 commits from pioverfour/blender-addons:dp_fix_104441 into blender-v3.5-release 2023-02-27 22:58:53 +01:00

View File

@ -76,8 +76,12 @@ class VIEW3D_PT_tools_SURFSK_mesh(Panel):
except: pass except: pass
try: col.prop(mesh_object.data.materials[0], "diffuse_color") try: col.prop(mesh_object.data.materials[0], "diffuse_color")
except: pass except: pass
try: col.prop(mesh_object.modifiers['Shrinkwrap'], "offset") try:
except: pass shrinkwrap = next(mod for mod in mesh_object.modifiers
if mod.type == 'SHRINKWRAP')
col.prop(shrinkwrap, "offset")
except:
pass
try: col.prop(mesh_object, "show_in_front") try: col.prop(mesh_object, "show_in_front")
except: pass except: pass
try: col.prop(bs, "SURFSK_shade_smooth") try: col.prop(bs, "SURFSK_shade_smooth")
@ -1652,8 +1656,7 @@ class MESH_OT_SURFSK_add_surface(Operator):
final_ob_duplicate = bpy.context.view_layer.objects.active final_ob_duplicate = bpy.context.view_layer.objects.active
bpy.ops.object.modifier_add('INVOKE_REGION_WIN', type='SHRINKWRAP') shrinkwrap_modifier = context.object.modifiers.new("", 'SHRINKWRAP')
shrinkwrap_modifier = final_ob_duplicate.modifiers[-1]
shrinkwrap_modifier.wrap_method = "NEAREST_VERTEX" shrinkwrap_modifier.wrap_method = "NEAREST_VERTEX"
shrinkwrap_modifier.target = self.main_object shrinkwrap_modifier.target = self.main_object
@ -3514,8 +3517,7 @@ class MESH_OT_SURFSK_init(Operator):
color_red = [1.0, 0.0, 0.0, 0.3] color_red = [1.0, 0.0, 0.0, 0.3]
material = makeMaterial("BSurfaceMesh", color_red) material = makeMaterial("BSurfaceMesh", color_red)
mesh_object.data.materials.append(material) mesh_object.data.materials.append(material)
bpy.ops.object.modifier_add(type='SHRINKWRAP') modifier = mesh_object.modifiers.new("", 'SHRINKWRAP')
modifier = mesh_object.modifiers["Shrinkwrap"]
if self.active_object is not None: if self.active_object is not None:
modifier.target = self.active_object modifier.target = self.active_object
modifier.wrap_method = 'TARGET_PROJECT' modifier.wrap_method = 'TARGET_PROJECT'
@ -3593,16 +3595,10 @@ class MESH_OT_SURFSK_add_modifiers(Operator):
bpy.context.view_layer.objects.active = mesh_object bpy.context.view_layer.objects.active = mesh_object
try: try:
shrinkwrap = mesh_object.modifiers["Shrinkwrap"] shrinkwrap = next(mod for mod in mesh_object.modifiers
if self.active_object is not None and self.active_object != mesh_object: if mod.type == 'SHRINKWRAP')
shrinkwrap.target = self.active_object
shrinkwrap.wrap_method = 'TARGET_PROJECT'
shrinkwrap.wrap_mode = 'OUTSIDE_SURFACE'
shrinkwrap.show_on_cage = True
shrinkwrap.offset = bpy.context.scene.bsurfaces.SURFSK_Shrinkwrap_offset
except: except:
bpy.ops.object.modifier_add(type='SHRINKWRAP') shrinkwrap = mesh_object.modifiers.new("", 'SHRINKWRAP')
shrinkwrap = mesh_object.modifiers["Shrinkwrap"]
if self.active_object is not None and self.active_object != mesh_object: if self.active_object is not None and self.active_object != mesh_object:
shrinkwrap.target = self.active_object shrinkwrap.target = self.active_object
shrinkwrap.wrap_method = 'TARGET_PROJECT' shrinkwrap.wrap_method = 'TARGET_PROJECT'
@ -3611,25 +3607,23 @@ class MESH_OT_SURFSK_add_modifiers(Operator):
shrinkwrap.offset = bpy.context.scene.bsurfaces.SURFSK_Shrinkwrap_offset shrinkwrap.offset = bpy.context.scene.bsurfaces.SURFSK_Shrinkwrap_offset
try: try:
mirror = mesh_object.modifiers["Mirror"] mirror = next(mod for mod in mesh_object.modifiers
mirror.use_clip = True if mod.type == 'MIRROR')
except: except:
bpy.ops.object.modifier_add(type='MIRROR') mirror = mesh_object.modifiers.new("", 'MIRROR')
mirror = mesh_object.modifiers["Mirror"]
mirror.use_clip = True mirror.use_clip = True
try: try:
_subsurf = mesh_object.modifiers["Subdivision"] _subsurf = next(mod for mod in mesh_object.modifiers
if mod.type == 'SUBSURF')
except: except:
bpy.ops.object.modifier_add(type='SUBSURF') _subsurf = mesh_object.modifiers.new("", 'SUBSURF')
_subsurf = mesh_object.modifiers["Subdivision"]
try: try:
solidify = mesh_object.modifiers["Solidify"] solidify = next(mod for mod in mesh_object.modifiers
solidify.thickness = 0.01 if mod.type == 'SOLIDIFY')
except: except:
bpy.ops.object.modifier_add(type='SOLIDIFY') solidify = mesh_object.modifiers.new("", 'SOLIDIFY')
solidify = mesh_object.modifiers["Solidify"]
solidify.thickness = 0.01 solidify.thickness = 0.01
return {"FINISHED"} return {"FINISHED"}
@ -3960,10 +3954,10 @@ class CURVE_OT_SURFSK_reorder_splines(Operator):
curves_duplicate_2.select_set(True) curves_duplicate_2.select_set(True)
bpy.context.view_layer.objects.active = curves_duplicate_2 bpy.context.view_layer.objects.active = curves_duplicate_2
bpy.ops.object.modifier_add('INVOKE_REGION_WIN', type='SHRINKWRAP') shrinkwrap = curves_duplicate_2.modifiers.new("", 'SHRINKWRAP')
curves_duplicate_2.modifiers["Shrinkwrap"].wrap_method = "NEAREST_VERTEX" shrinkwrap.wrap_method = "NEAREST_VERTEX"
curves_duplicate_2.modifiers["Shrinkwrap"].target = GP_strokes_mesh shrinkwrap.target = GP_strokes_mesh
bpy.ops.object.modifier_apply('INVOKE_REGION_WIN', modifier='Shrinkwrap') bpy.ops.object.modifier_apply('INVOKE_REGION_WIN', modifier=shrinkwrap.name)
# Get the distance of each vert from its original position to its position with Shrinkwrap # Get the distance of each vert from its original position to its position with Shrinkwrap
nearest_points_coords = {} nearest_points_coords = {}