在字符后声明所有内容

2024-09-30 03:25:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为Blender编写一个Python脚本,该脚本将删除所有在开头有KK的形状键

我有许多shapekeysKK开头,但在KK之后有不同的内容,例如KK_EyebrowsKK_Nose

我设法使用了这个:

import bpy

def deleteShapekeyByName(oObject, sShapekeyName):
    
    # setting the active shapekey
    iIndex = oObject.data.shape_keys.key_blocks.keys().index(sShapekeyName)
    oObject.active_shape_key_index = iIndex
    
    # delete it
    bpy.ops.object.shape_key_remove()

oActiveObject = bpy.context.active_object
deleteShapekeyByName(oActiveObject, "KK_Shapekey")

但是我必须手动输入我想要删除的每个shapekey名称,而不是删除所有包含KK的名称

提前谢谢


Tags: key脚本indexobjectkeysactivebpyshape
1条回答
网友
1楼 · 发布于 2024-09-30 03:25:51

如果你能得到一个shapekey名字的列表,你可以做这样的事情

import bpy

def deleteShapekeyByName(oObject, sShapekeyName):
    
    # setting the active shapekey
    iIndex = oObject.data.shape_keys.key_blocks.keys().index(sShapekeyName)
    oObject.active_shape_key_index = iIndex
    
    # delete it
    bpy.ops.object.shape_key_remove()
    
# Not sure if this returns the right keys for you. you may have to change .object to .active_object
s_key_names = list(bpy.context.object.data.shape_keys.key_blocks.keys())
oActiveObject = bpy.context.active_object

for s_k_n in s_key_names:

    if s_k_n.startswith('KK'):

        deleteShapekeyByName(oActiveObject, s_k_n)

相关问题 更多 >

    热门问题