如何在Blender 4.0中使用knife_project与Python脚本?提示knife project.poll()预期view3d区域和编辑网格
它提示我,knife project.poll() 需要一个视图3D区域和编辑网格。
我想用Python脚本导入两个Blender文件,然后切换到顶部视角,使用编辑模式下的网格投影切割来实现效果。但是在运行时我收到提示“know project.poll() 需要一个视图3D区域和编辑网格”,我该如何处理这个问题?以下是我运行的脚本。
import bpy
from bpy import context
scene = bpy.context.scene
bpy.ops.object.mode_set(mode='OBJECT')
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete()
file_path1 = 'C:/Users/aaa/Desktop/CD171/test/CD4.blend'
file_path2 = 'C:/Users/aaa/Desktop/CD171/test/CD2.blend'
target_name = 'button'
cutter_name = 'piece'
def import_blender_object(file_path, object_name):
directory = file_path + "/Object/"
bpy.ops.wm.append(filename=object_name, directory=directory)
import_blender_object(file_path1, target_name)
import_blender_object(file_path2, cutter_name)
button_obj = bpy.data.objects.get(target_name)
piece_obj = bpy.data.objects.get(cutter_name)
# assure button_obj and piece_obj exits
if not button_obj or not piece_obj:
raise ValueError("can't find button obj。")
# select button as active object
bpy.ops.object.select_all(action='DESELECT') # cancel choose all object
piece_obj.select_set(True)
bpy.context.view_layer.objects.active = piece_obj
button_obj.select_set(True)
bpy.context.view_layer.objects.active = button_obj
bpy.ops.object.mode_set(mode='EDIT')
# Maximize 3d view in all windows.
for window in context.window_manager.windows:
screen = window.screen
for area in screen.areas:
if area.type == 'VIEW_3D':
# get active space
space = area.spaces.active
# set top view
space.region_3d.view_perspective = 'ORTHO'
space.region_3d.view_rotation = (1.0, 0.0, 0.0, 0.0)
with context.temp_override(window=window, area=area):
#bpy.ops.screen.screen_full_area()
bpy.ops.mesh.knife_project()
break
bpy.ops.object.mode_set(mode='OBJECT')
提前谢谢你!
0 个回答
暂无回答