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