Skip to content

Ops

blenderApi.Ops 负责 Blender operator。

当动作本质上对应 bpy.ops.* 时,使用它;如果是在 RNA 对象上调用方法,则继续使用 blenderApi.Rna

方法

  • PollAsync(operatorName, BlenderOperatorCall? call = null)
  • CallAsync(operatorName, params (string Name, object? Value)[] kwargs)
  • CallAsync(operatorName, BlenderOperatorCall call)

先 Poll 再执行

csharp
var canDelete = await blenderApi.Ops.PollAsync("object.delete", ct);

if (canDelete)
{
    await blenderApi.Ops.CallAsync("object.delete", ct);
}

传递关键字参数

csharp
await blenderApi.Ops.CallAsync(
    "mesh.primitive_cube_add",
    ("size", 2.0));

使用 Context Override

csharp
await blenderApi.Ops.CallAsync(
    "object.duplicate_move",
    new BlenderOperatorCall
    {
        ContextOverride = new BlenderContextOverride
        {
            ActiveObject = "bpy.data.objects[\"Cube\"]",
            SelectedObjects = new[] { "bpy.data.objects[\"Cube\"]" },
        }
    });

BlenderOperatorCallBlenderContextOverride 的说明见 Types