import bpy import numpy as np # see this for more explanation # https://gist.github.com/iyadahmed/7c7c0fae03c40bd87e75dc7059e35377 # This should be solved with new version of blender class ndarray_pydata(np.ndarray): def __bool__(self) -> bool: return len(self) > 0 def load_numpy_vertices_into_blender(vertices, faces, name, mat): mesh = bpy.data.meshes.new(name) mesh.from_pydata(vertices, [], faces.view(ndarray_pydata)) mesh.validate() obj = bpy.data.objects.new(name, mesh) bpy.context.scene.collection.objects.link(obj) bpy.ops.object.select_all(action='DESELECT') obj.select_set(True) obj.active_material = mat bpy.context.view_layer.objects.active = obj bpy.ops.object.shade_smooth() bpy.ops.object.select_all(action='DESELECT') return True def delete_objs(names): if not isinstance(names, list): names = [names] # bpy.ops.object.mode_set(mode='OBJECT') bpy.ops.object.select_all(action='DESELECT') for obj in bpy.context.scene.objects: for name in names: if obj.name.startswith(name) or obj.name.endswith(name): obj.select_set(True) bpy.ops.object.delete() bpy.ops.object.select_all(action='DESELECT')