Advertisement
Guest User

Blender addon Memory Test

a guest
Jan 2nd, 2020
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.57 KB | None | 0 0
  1. bl_info = {
  2.     "name": "Memory zebus",
  3.     "author": "zebus3d",
  4.     "version": (1, 0),
  5.     "blender": (2, 80, 0),
  6.     "location": "",
  7.     "description": "Memory test",
  8.     "warning": "",
  9.     "wiki_url": "",
  10.     "category": "Add Mesh",
  11. }
  12.  
  13. import bpy
  14. from bpy.types import Operator
  15. from bpy.props import IntProperty
  16. from bpy_extras.object_utils import AddObjectHelper, object_data_add
  17.  
  18.  
  19. def duplicate_test_memory(repeat, ob):
  20.     for i in range(repeat):
  21.         bpy.ops.object.duplicate()
  22.     # remove all except ob:
  23.     bpy.ops.object.select_all(action='SELECT')
  24.     ob.select_set(False)
  25.     bpy.ops.object.delete(use_global=False)
  26.     # remove orphan meshes:
  27.     for mesh in bpy.data.meshes:
  28.         if mesh.users < 1:
  29.             print(mesh.name, " Mesh with 0 users, procced to delete")
  30.             bpy.data.meshes.remove(mesh)
  31.  
  32.  
  33. class BUTTON_OT_Memory_test(bpy.types.Operator):
  34.     bl_label = "Memory Test"
  35.     bl_idname = "m.test"
  36.     bl_description = "Memory Test"
  37.    
  38.     def execute(self, context):
  39.         ob = bpy.context.active_object
  40.         repeat = context.scene.Repeat
  41.         if ob:
  42.             for i in range(repeat):
  43.                 duplicate_test_memory(repeat, ob)
  44.         else:
  45.             bpy.ops.mesh.primitive_cube_add(size=2, enter_editmode=False, location=(0, 0, 0))
  46.             ob = bpy.context.active_object
  47.             for i in range(repeat):
  48.                 duplicate_test_memory(repeat, ob)
  49.  
  50.         return {'FINISHED'}
  51.  
  52.  
  53. class OBJECT_PT_duplicate_remove_object(bpy.types.Panel):
  54.     bl_idname = "OBJECT_PT_duplicate_remove_object"
  55.     bl_label = "Duplicate and remove object"
  56.     bl_space_type = 'VIEW_3D'
  57.     bl_region_type = 'UI'
  58.     bl_category = "Memory Test"
  59.  
  60.    
  61.     def draw(self, context):
  62.         scn = bpy.context.scene
  63.         layout = self.layout
  64.         col = layout.column(align=True)
  65.         #
  66.         row = col.row(align=True)
  67.         rs = row.split(factor=0.8, align=True)
  68.         #
  69.         col.prop(context.scene, 'Repeat', text='Repeat')
  70.         col.operator("m.test", text="Memory Test")
  71.        
  72.  
  73.  
  74. classes = (BUTTON_OT_Memory_test, OBJECT_PT_duplicate_remove_object)
  75.  
  76.  
  77. # Registration
  78. def register():
  79.     from bpy.utils import register_class
  80.    
  81.     bpy.types.Scene.Repeat = bpy.props.IntProperty(name="Repeat", default=100, min=1)
  82.  
  83.     for cls in classes:
  84.         register_class(cls)
  85.  
  86.  
  87. def unregister():
  88.     from bpy.utils import unregister_class
  89.  
  90.     del bpy.types.Scene.Repeat
  91.  
  92.     for cls in classes:
  93.         unregister_class(cls)
  94.  
  95.  
  96. if __name__ == "__main__":
  97.     register()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement