import bpy
import copy
import math
import bmesh
import sys
from mathutils import Vector
def main():
remove_all_obj()
new_obj = add_sphere()
set_mirror_modifier( new_obj.name )
def set_mirror_modifier( obj_name ):
for ob in bpy.context.scene.objects:
ob.select_set(False)
ob = bpy.data.objects.get( obj_name )
if not ob:
return
ob.select_set(True)
bpy.context.view_layer.objects.active = ob
bpy.ops.object.mode_set(mode='EDIT', toggle=False)
meshdata = bmesh.from_edit_mesh(ob.data)
meshdata.select_mode = {'VERT'}
for vert in meshdata.verts:
if vert.co.x < -0.001:
vert.select_set(True)
else:
vert.select_set(False)
bpy.ops.mesh.delete(type='VERT')
bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
bpy.ops.object.modifier_add(type='MIRROR')
modifier = ob.modifiers['Mirror']
modifier.use_axis[0] = True
modifier.use_axis[1] = False
modifier.use_axis[2] = False
modifier.use_mirror_merge = True
modifier.use_clip = True
modifier.use_mirror_vertex_groups = True
modifier.merge_threshold = 0.001
def add_sphere():
bpy.ops.mesh.primitive_uv_sphere_add(
segments=32,
ring_count=16,
radius=1.0,
location=(0.0, 0.0, 0.0),
rotation=(0.0, 0.0, 0.0) )
obj = bpy.context.view_layer.objects.active
obj.name = 'NewSphere'
return obj
def remove_all_obj():
for col in bpy.data.collections:
for item in col.objects:
col.objects.unlink(item)
bpy.data.objects.remove(item)
for item in bpy.context.scene.collection.objects:
bpy.context.scene.collection.objects.unlink(item)
bpy.data.objects.remove(item)
for item in bpy.data.meshes:
bpy.data.meshes.remove(item)
for item in bpy.data.materials:
bpy.data.materials.remove(item)
if __name__ == '__main__':
main()