Python 中带有修改器的 Blender 3.0
Blender 3.0 with Modifiers in Python
来自 https://b3d.interplanety.org/en/how-to-apply-modifier-on-selected-objects/ 的以下脚本不起作用。我在 Python API 中使用 Blender 3.0。我尝试 运行 它创建了多维数据集,但没有创建任何内容。
我做错了什么?
import bpy
for obj in bpy.context.selected_objects:
bpy.context.view_layer.objects.active = obj
for modifier in obj.modifiers:
if modifier.type == 'SUBSURF':
bpy.ops.object.modifier_apply(
modifier=modifier.name
)
谢谢任何帮助将不胜感激。这是图片中的代码。
22 年 4 月 24 日编辑
你需要先select边的两个顶点。
我尝试 select 默认立方体的一个边缘并将其倾斜 python
import bpy
import bmesh
obj = bpy.context.active_object # Get selected object
epsilon = 1e-5 # Threshold to account for floating point precision
if obj:
bpy.ops.object.mode_set(mode='EDIT') # Go into edit mode
bpy.ops.mesh.select_mode(type="EDGE") # Switch to edge select mode
bm = bmesh.from_edit_mesh(obj.data) # Create bmesh object for easy mesh evaluation
obj = bpy.context.active_object
obj.data.polygons[2].select = True
for e in bm.edges: # Check all edges
if e.index == 0:
print ("abc")
first_pos = e.verts[0].co # Get first vert position of this edge
other_pos = e.verts[1].co # Get second vert position of this edge
e.select_set(abs(first_pos.x - other_pos.x) <= epsilon and abs(first_pos.y - other_pos.y) <= epsilon)
bmesh.update_edit_mesh(obj.data) # Update the mesh in edit mode
bpy.ops.object.modifier_set_active(modifier="Bevel")
bpy.ops.object.modifier_add(type='BEVEL')
bpy.context.object.modifiers["Bevel"].segments = 10
bpy.context.object.modifiers["Bevel"].width = 0.37
也许我应该再问一个问题。
Blender bevel selected edge of a default cube with python
您的脚本运行良好...
您确定在启动脚本之前已经 select 所有对象了吗?
也许您希望它适用于场景中的所有对象,因此将 context.selectd_objects
替换为 context.scene.objects
来自 https://b3d.interplanety.org/en/how-to-apply-modifier-on-selected-objects/ 的以下脚本不起作用。我在 Python API 中使用 Blender 3.0。我尝试 运行 它创建了多维数据集,但没有创建任何内容。
我做错了什么?
import bpy
for obj in bpy.context.selected_objects:
bpy.context.view_layer.objects.active = obj
for modifier in obj.modifiers:
if modifier.type == 'SUBSURF':
bpy.ops.object.modifier_apply(
modifier=modifier.name
)
谢谢任何帮助将不胜感激。这是图片中的代码。
22 年 4 月 24 日编辑
你需要先select边的两个顶点。
我尝试 select 默认立方体的一个边缘并将其倾斜 python
import bpy
import bmesh
obj = bpy.context.active_object # Get selected object
epsilon = 1e-5 # Threshold to account for floating point precision
if obj:
bpy.ops.object.mode_set(mode='EDIT') # Go into edit mode
bpy.ops.mesh.select_mode(type="EDGE") # Switch to edge select mode
bm = bmesh.from_edit_mesh(obj.data) # Create bmesh object for easy mesh evaluation
obj = bpy.context.active_object
obj.data.polygons[2].select = True
for e in bm.edges: # Check all edges
if e.index == 0:
print ("abc")
first_pos = e.verts[0].co # Get first vert position of this edge
other_pos = e.verts[1].co # Get second vert position of this edge
e.select_set(abs(first_pos.x - other_pos.x) <= epsilon and abs(first_pos.y - other_pos.y) <= epsilon)
bmesh.update_edit_mesh(obj.data) # Update the mesh in edit mode
bpy.ops.object.modifier_set_active(modifier="Bevel")
bpy.ops.object.modifier_add(type='BEVEL')
bpy.context.object.modifiers["Bevel"].segments = 10
bpy.context.object.modifiers["Bevel"].width = 0.37
也许我应该再问一个问题。
Blender bevel selected edge of a default cube with python
您的脚本运行良好... 您确定在启动脚本之前已经 select 所有对象了吗?
也许您希望它适用于场景中的所有对象,因此将 context.selectd_objects
替换为 context.scene.objects