Example #1
0
 def apply_ob_props(ob: bpy.types.Object, new_name: str = name) -> bpy.types.Object:
     ob.name = new_name
     ob.location = [location[0] * 0.01, location[1] * -0.01, location[2] * 0.01]
     ob.rotation_mode = 'XYZ'
     ob.rotation_euler = [radians(rotation[2]), radians(-rotation[0]), radians(-rotation[1])]
     ob.scale = scale
     return ob
def setting_object_duplicate(arg_object: bpy.types.Object) -> bpy.types.Object:
    """指定オブジェクトを複製して複製元の名称を付けるなどの設定を行う

    Args:
        arg_object (bpy.types.Object): 複製元オブジェクト

    Returns:
        bpy.types.Object: 複製オブジェクトの参照
    """

    # 指定オブジェクトが存在するか確認する
    if arg_object == None:
        # 指定オブジェクトが存在しない場合は処理しない
        return None

    # オブジェクトがメッシュであるか確認する
    if arg_object.type != 'MESH':
        # 指定オブジェクトがメッシュでない場合は処理しない
        return None

    # 対象オブジェクトを複製する
    duplicate_object = singlecopy_object_target(arg_object=arg_object)

    # 複製元オブジェクトの名前を取得する
    base_name = arg_object.name

    # 複製元オブジェクトの名前を変更する
    arg_object.name = base_name + "_base"

    # 複製オブジェクトに複製元オブジェクトの名前を設定する
    duplicate_object.name = base_name

    return duplicate_object
def object_duplicate_helper(obj: bpy.types.Object, name: str) -> bpy.types.Object:
    """
    オブジェクトに任意の名前をつけて複製するヘルパー 複製したオブジェクトを返す
    """
    _mode = bpy.context.mode
    temp_name = random_name(10)
    orig_name = obj.name
    obj.name = temp_name
    bpy.ops.object.duplicate({"selected_objects": [obj]})
    obj.name = orig_name
    new_obj = bpy.data.objects[temp_name + ".001"]
    new_obj.name = name
    new_obj.data.name = name
    bpy.ops.object.mode_set(mode=_mode)
    new_obj.select_set(False)
    return new_obj