Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bl_info = {
- "name": "Memory zebus",
- "author": "zebus3d",
- "version": (1, 0),
- "blender": (2, 80, 0),
- "location": "",
- "description": "Memory test",
- "warning": "",
- "wiki_url": "",
- "category": "Add Mesh",
- }
- import bpy
- from bpy.types import Operator
- from bpy.props import IntProperty
- from bpy_extras.object_utils import AddObjectHelper, object_data_add
- def duplicate_test_memory(repeat, ob):
- for i in range(repeat):
- bpy.ops.object.duplicate()
- # remove all except ob:
- bpy.ops.object.select_all(action='SELECT')
- ob.select_set(False)
- bpy.ops.object.delete(use_global=False)
- # remove orphan meshes:
- for mesh in bpy.data.meshes:
- if mesh.users < 1:
- print(mesh.name, " Mesh with 0 users, procced to delete")
- bpy.data.meshes.remove(mesh)
- class BUTTON_OT_Memory_test(bpy.types.Operator):
- bl_label = "Memory Test"
- bl_idname = "m.test"
- bl_description = "Memory Test"
- def execute(self, context):
- ob = bpy.context.active_object
- repeat = context.scene.Repeat
- if ob:
- for i in range(repeat):
- duplicate_test_memory(repeat, ob)
- else:
- bpy.ops.mesh.primitive_cube_add(size=2, enter_editmode=False, location=(0, 0, 0))
- ob = bpy.context.active_object
- for i in range(repeat):
- duplicate_test_memory(repeat, ob)
- return {'FINISHED'}
- class OBJECT_PT_duplicate_remove_object(bpy.types.Panel):
- bl_idname = "OBJECT_PT_duplicate_remove_object"
- bl_label = "Duplicate and remove object"
- bl_space_type = 'VIEW_3D'
- bl_region_type = 'UI'
- bl_category = "Memory Test"
- def draw(self, context):
- scn = bpy.context.scene
- layout = self.layout
- col = layout.column(align=True)
- #
- row = col.row(align=True)
- rs = row.split(factor=0.8, align=True)
- #
- col.prop(context.scene, 'Repeat', text='Repeat')
- col.operator("m.test", text="Memory Test")
- classes = (BUTTON_OT_Memory_test, OBJECT_PT_duplicate_remove_object)
- # Registration
- def register():
- from bpy.utils import register_class
- bpy.types.Scene.Repeat = bpy.props.IntProperty(name="Repeat", default=100, min=1)
- for cls in classes:
- register_class(cls)
- def unregister():
- from bpy.utils import unregister_class
- del bpy.types.Scene.Repeat
- for cls in classes:
- unregister_class(cls)
- if __name__ == "__main__":
- register()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement