77 lines
1.9 KiB
Python
77 lines
1.9 KiB
Python
import bpy
|
|
from .list import list_canvas_cutters
|
|
|
|
|
|
#### ------------------------------ FUNCTIONS ------------------------------ ####
|
|
|
|
def basic_poll(context, check_linked=False):
|
|
if context.mode == 'OBJECT':
|
|
if context.active_object is not None:
|
|
if context.active_object.type == 'MESH':
|
|
if check_linked and is_linked(context) == True:
|
|
return False
|
|
|
|
return True
|
|
|
|
|
|
def is_linked(context, obj=None):
|
|
if not obj:
|
|
obj = context.active_object
|
|
|
|
if obj not in context.editable_objects:
|
|
if obj.library:
|
|
return True
|
|
else:
|
|
return False
|
|
else:
|
|
if obj.override_library:
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
|
|
def is_canvas(obj):
|
|
if obj.booleans.canvas == False:
|
|
return False
|
|
else:
|
|
cutters, __ = list_canvas_cutters([obj])
|
|
if len(cutters) != 0:
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
|
|
def is_instanced_data(obj):
|
|
"""Checks if obj.data has more than one users, i.e. is instanced"""
|
|
"""Function only considers object types as users, and excludes pointers"""
|
|
|
|
data = bpy.data.meshes.get(obj.data.name)
|
|
users = 0
|
|
|
|
for key, values in bpy.data.user_map(subset=[data]).items():
|
|
for value in values:
|
|
if value.id_type == 'OBJECT':
|
|
users += 1
|
|
|
|
if users > 1:
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
|
|
def active_modifier_poll(context):
|
|
"""Checks whether the active modifier for active object is a boolean"""
|
|
|
|
if context.object:
|
|
if len(context.object.modifiers) == 0:
|
|
return False
|
|
|
|
modifier = context.object.modifiers.active
|
|
if modifier and modifier.type == "BOOLEAN":
|
|
if modifier.object == None:
|
|
return False
|
|
else:
|
|
return True
|
|
else:
|
|
return False
|