次のコードを実行して、円をy=-30とy=30の平面に描いて、x=0, y=0に移動してください。
import bpy
import math
# サークルを作成する
bpy.ops.mesh.primitive_circle_add(radius=30, fill_type='NGON')
obj = bpy.context.active_object
# サークルを紫色に塗る
mat = bpy.data.materials.new(name="CircleMat")
mat.diffuse_color = (0.39, 0.5, 0.7, 0.5)
obj.data.materials.append(mat)
# カット用の正方形を作成する
bpy.ops.mesh.primitive_cube_add(size=30)
cutting_obj = bpy.context.active_object
# カット用の正方形をサークルの中心に移動する
cutting_obj.location = obj.location
# カット用の正方形を選択して、サークルを選択状態にする
bpy.ops.object.select_all(action='DESELECT')
cutting_obj.select_set(True)
obj.select_set(True)
bpy.context.view_layer.objects.active = obj
# カット用の正方形でサークルをカットする
bpy.ops.object.modifier_add(type='BOOLEAN')
bpy.context.object.modifiers["Boolean"].operation = 'DIFFERENCE'
bpy.context.object.modifiers["Boolean"].object = cutting_obj
bpy.ops.object.modifier_apply(modifier="Boolean")
# カット用の正方形を削除する
bpy.ops.object.select_all(action='DESELECT')
cutting_obj.select_set(True)
bpy.ops.object.delete()
# 円をy=-30の平面に移動する
obj.location[1] = -30
# 円をy=30の平面にコピーする
bpy.ops.object.select_all(action='DESELECT')
obj.select_set(True)
bpy.ops.object.duplicate()
obj_2 = bpy.context.active_object
obj_2.location[1] = 30
# 円をx=0, y=0に移動する
bpy.ops.object.select_all(action='DESELECT')
obj.select_set(True)
obj_2.select_set(True)
bpy.ops.object.origin_set(type='ORIGIN_GEOMETRY', center='MEDIAN')
obj.location[0] = 0
obj.location[1] = 0
obj.location[2] = 0
obj_2.location[0] = 0
obj_2.location[1] = 0
obj_2.location[2] = 0
obj.location = (0,-30, 0)
obj2.location = (0,30, 0)
bbb