[Bf-blender-cvs] [0ee4f5cb0b0] soc-2020-testing-frameworks: Tests: almost finished with the protoype, added support for generating vertex groups from script.
calra123
noreply at git.blender.org
Sun Jun 7 21:16:05 CEST 2020
Commit: 0ee4f5cb0b013d3bffdfd21e5d79b16db8f732d9
Author: calra123
Date: Sat Jun 6 17:38:13 2020 +0530
Branches: soc-2020-testing-frameworks
https://developer.blender.org/rB0ee4f5cb0b013d3bffdfd21e5d79b16db8f732d9
Tests: almost finished with the protoype, added support for
generating vertex groups from script.
Some minor improvements left, work in progress, saving.
===================================================================
M tests/python/modules/test_object_generator.py
===================================================================
diff --git a/tests/python/modules/test_object_generator.py b/tests/python/modules/test_object_generator.py
index d41e2355e09..7a206ef13e1 100644
--- a/tests/python/modules/test_object_generator.py
+++ b/tests/python/modules/test_object_generator.py
@@ -1,64 +1,165 @@
import bpy
+import re
+import os
+import sys
+offset_x = 5
-def createTestObjects(obj_dict):
- # all_obj_names = [name for _,name in obj_dict.items()]
- offset_y = 0
- offset_x = 5
- for obj_type, obj_name in obj_dict.items():
- print("Object type:", obj_type, "Object name:", obj_name)
+def validating_user_input(mesh, vert_set):
+ for i in vert_set:
+ if not isinstance(i, int) or i <= 0:
+ raise Exception("Please enter a valid index(integer).")
- if obj_name not in bpy.data.objects:
+ max_vert = len(mesh.data.vertices)
+
+ for i in vert_set:
+ if i > max_vert-1:
+ raise Exception("Index is greater than maximum number of vertices.")
+
+
+def do_selection(mesh, vert_set: set):
+
+ bpy.ops.object.mode_set(mode='EDIT')
+ bpy.ops.mesh.select_all(action='DESELECT')
+ bpy.ops.object.mode_set(mode='OBJECT')
+
+ for index in vert_set:
+ mesh.data.vertices[index].select = True
+
+ bpy.ops.object.mode_set(mode='EDIT')
+ bpy.ops.object.vertex_group_assign()
+ bpy.ops.object.mode_set(mode='OBJECT')
+
+
+def create_vertex_group(obj_name, vg_name, vg_vert_set):
+
+ mesh = bpy.data.objects[obj_name]
+ mesh.vertex_groups.new(name=vg_name)
+ vert_set = vg_vert_set
+ validating_user_input(mesh, vert_set)
+ do_selection(mesh, vert_set)
+
+
+def get_last_location():
+ farthest = 0
+ all_y_locs = []
+ for obj in bpy.data.objects:
+ all_y_locs.append(obj.location.y)
+
+ for y in all_y_locs:
+ if y > farthest:
+ farthest = y
+
+ return farthest
+
+
+def name_test_object(obj_name):
+ bpy.context.active_object.name = "testObj" + obj_name
+
+
+def name_exp_object(obj_name):
+ bpy.context.active_object.name = "expObj" + obj_name
+
+
+def create_test_objects(obj_dict):
+ offset_y = get_last_location() + 5
+
+ for obj_name, obj_type in obj_dict.items():
+ print("Object type:", obj_type, "\nObject name:", obj_name)
+
+ test_obj_name = "testObj" + obj_name
+ exp_obj_name = "expObj" + obj_name
+
+ if test_obj_name not in bpy.data.objects.keys():
if obj_type == "Circle":
bpy.ops.mesh.primitive_circle_add(location=(0, offset_y, 0))
+ name_test_object(obj_name)
bpy.ops.mesh.primitive_circle_add(location=(offset_x, offset_y, 0))
+ name_exp_object(obj_name)
elif obj_type == "Cube":
bpy.ops.mesh.primitive_cube_add(location=(0, offset_y, 0))
+ name_test_object(obj_name)
bpy.ops.mesh.primitive_cube_add(location=(offset_x, offset_y, 0))
+ name_exp_object(obj_name)
elif obj_type == "Plane":
bpy.ops.mesh.primitive_plane_add(location=(0, offset_y, 0))
+ name_test_object(obj_name)
bpy.ops.mesh.primitive_plane_add(location=(offset_x, offset_y, 0))
+ name_exp_object(obj_name)
elif obj_type == "Sphere":
bpy.ops.mesh.primitive_uv_sphere_add(location=(0, offset_y, 0))
+ name_test_object(obj_name)
bpy.ops.mesh.primitive_uv_sphere_add(location=(offset_x, offset_y, 0))
+ name_exp_object(obj_name)
elif obj_type == "Cone":
bpy.ops.mesh.primitive_cone_add(location=(0, offset_y, 0))
+ name_test_object(obj_name)
bpy.ops.mesh.primitive_cone_add(location=(offset_x, offset_y, 0))
+ name_exp_object(obj_name)
elif obj_type == "Cylinder":
bpy.ops.mesh.primitive_cylinder_add(location=(0, offset_y, 0))
- bpy.ops.mesh.primitive_uv_sphere_add(location=(offset_x, offset_y, 0))
+ name_test_object(obj_name)
+ bpy.ops.mesh.primitive_cylinder_add(location=(offset_x, offset_y, 0))
+ name_exp_object(obj_name)
elif obj_type == "Icosphere":
bpy.ops.mesh.primitive_ico_sphere_add(location=(0, offset_y, 0))
+ name_test_object(obj_name)
bpy.ops.mesh.primitive_ico_sphere_add(location=(offset_x, offset_y, 0))
+ name_exp_object(obj_name)
elif obj_type == "Torus":
bpy.ops.mesh.primitive_torus_add(location=(0, offset_y, 0))
+ name_test_object(obj_name)
bpy.ops.mesh.primitive_torus_add(location=(offset_x, offset_y, 0))
+ name_exp_object(obj_name)
- elif obj_type == "Suzanne":
+ elif obj_type == "Monkey":
bpy.ops.mesh.primitive_monkey_add(location=(0, offset_y, 0))
+ name_test_object(obj_name)
bpy.ops.mesh.primitive_monkey_add(location=(offset_x, offset_y, 0))
+ name_exp_object(obj_name)
elif obj_type == "Grid":
bpy.ops.mesh.primitive_grid_add(location=(0, offset_y, 0))
+ name_test_object(obj_name)
bpy.ops.mesh.primitive_grid_add(location=(offset_x, offset_y, 0))
+ name_exp_object(obj_name)
- bpy.context.active_object.name = "testObj" + obj_name
- bpy.data.objects[obj_type].name = "expObj" + obj_name
+ offset_y += 5
else:
print("Object already present.")
- offset_y += 5
+pattern = re.compile(r"[A-Z]:?[\\\/].*\.blend|[\\\/].*\.blend")
+
+args = list(sys.argv)
+print(args)
+for cmd in args:
+ mo = pattern.search(cmd)
+ if mo is not None:
+ path_to_file = mo.group()
-# Deleting start up Cube
-if bpy.context.active_object.name == 'Cube':
+print(path_to_file)
+if os.path.exists(path_to_file):
+
+ bpy.ops.wm.open_mainfile(filepath=path_to_file)
+
+
+else:
+
+ bpy.ops.wm.save_as_mainfile(filepath=path_to_file)
+ bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete(use_global=False)
-createTestObjects({'Cube': "testmonkey", 'Plane': "testPlane2"})
+
+create_test_objects({'Cube': 'Cube', 'Cy1': "Cylinder"})
+
+create_vertex_group('Cube', "vg_solidify7", {1, 2, 3, 4})
+
+bpy.ops.wm.save_mainfile(filepath=path_to_file)
More information about the Bf-blender-cvs
mailing list