Q100497: データ損失を避けるために Katana で自動保存スクリプトを設定する方法

フォローする


まとめ

Katana内でプロジェクトを設定する場合、データと時間の損失を避けるために、進行中に保存することが不可欠です。 Katanaは自動保存機能が組み込まれており、一定の時間またはアクションの後にバックアップ クラッシュ ファイルが保存されます。

クラッシュ セーブの詳細については、 Katanaユーザー ガイド: 自動セーブを参照してください。

この記事では、自動保存スクリプトを設定する方法を説明します。このスクリプトを使用すると、自動的に生成されたファイル名を持つKatanaの一時ディレクトリ (自動保存機能のデフォルトの動作) ではなく、カスタムの命名規則でカスタムの場所に保存できます。 。

詳しくは

Katana Katana Python API 内のKatana File モジュールを通じてプロジェクト ファイルを保存します。

Katana File.Save ( path/to/location/file.katana ) を呼び出すと、選択したファイル名を使用して、現在のKatanaプロジェクトが選択した場所に保存されます。

Katana File.CrashSave()を呼び出すと、現在のKatanaプロジェクトのクラッシュ ファイルが自動生成された名前で一時ディレクトリに保存され、 Katanaクラッシュ ファイル セレクターを使用して復元できます。

自動保存ファイルの復元の詳細については、次の記事を参照してください: Q100450: クラッシュ後に自動保存ファイルを見つけて回復する方法

上記の関数を使用すると、指定した時間間隔でKatanaプロジェクトを自動的に保存する Python スクリプトを作成できます。

Katanaファイル モジュールの詳細については、 Katana開発者ガイド: プロジェクトの操作を参照してください。

スクリプト例

この記事には Python の例が添付されており、必要に応じてダウンロードして変更できます。

サンプルをダウンロードし、ファイルを.katana\UIPluginsフォルダーに移動します。

例えば:

Windows: C:\Users\USERNAME\.katana\UIPlugins\autosaveProject.py
Linux: /mnt/nethome/users/USERNAME/.katana/UIPlugins/autosaveProject.py

ファイルが UIPlugins フォルダーに追加されると、 Katana起動時にファイルをロードして実行します。

スクリプトの使用

スクリプトには、saveOption 変数を設定することで選択できる 3 つのオプションがあります。さらに、保存間隔のオプションがあり、サンプル スクリプトでは現在 60000 ミリ秒 (60 秒) に設定されています。

以下のオプションを確認してください。

オプション 0: 自動保存クラッシュ保存を強制する

このオプションを使用すると、Python を通じて新しい CrashSave を強制できます。

Katanaにはクラッシュ自動保存機能が組み込まれていますが、この機能は Python で関数を実行する前のセットアップに役立ちます。

オプション 1: 現在のプロジェクト ファイルを上書き保存する

このオプションを使用すると、現在のプロジェクトが新しい保存で上書きされます。

Katanaプロジェクトが変更された場合にのみファイルを保存します。

オプション 2: ファイルを指定した場所に保存する

このオプションはオプション 1 と同じように機能しますが、ディレクトリの場所と名前を選択できます。

スクリプトを変更して、希望の保存場所を追加する必要があります。

さらに、起動時に自動保存ファイルをチェックするツールを作成する必要があります。

from Katana import QtCore, NodegraphAPI, Katana File
import os

# VARIABLES

# Set your save option
saveOption = 2

# Set delay interval for autosaves
# function argument is the interval in milliseconds (60 seconds in this example)
autosaveDelay = 60000

def saveAndSubmit():
''' Autosaves project with option specified by user '''

# Get path variables
projectPath = NodegraphAPI.NodegraphGlobals.GetProjectFile()
projectFile = os.path.basename(projectPath)
projectDir = os.path.dirname(projectPath)

# OPTION 0
# Q100450: Locating a crash autosave file - https://support.foundry.com/hc/en-us/articles/360000024960
# Save a crash file (standard autosave):
if saveOption == 0:
KatanaFile.CrashSave(True)

# Check if file has been saved atleast once.
if projectPath != '':
# Check if file has been modified since last save
if Katana File.IsFileDirty():

# OPTION 1
# to save file at the current location use:
if saveOption == 1:
KatanaFile.Save(projectPath)

print ("File autosaved to: " + projectPath)

# OPTION 2
# to save at a specified location use:
if saveOption == 2:
customNameFile = 1 # If you want to use a different project name change the customNameFile = 0
customprojectFile = projectFile #Overwrites the active save with any changes (only happens if customNameFile is not 0
# Custom folder directory for Option 2
customFolderDirectory = '/home/userName/Downloads/customFolder/'

if customNameFile == 0:
customprojectFile = 'CustomFileName' # If customNameFile is 0 then you can change CustomFileName for whatever name you want the file to be save as

KatanaFile.Save(customFolderDirectory + customprojectFile)
print ("File autosaved to: " + customFolderDirectory + customprojectFile)

timer = QtCore.QTimer()
timer.timeout.connect(saveAndSubmit)
timer.start(autosaveDelay)

スクリプトの説明

スクリプトはQtCore.QTimer()呼び出しを使用してタイマー ループを提供しています。 QTimerを使用すると、バックグラウンド関数がスクリプトの関数を実行する前に一定時間待機できるようになります。

指定された時間が経過するたびに ( autosaveDelay変数によって決定されます)、タイマーはsaveAndSubmit()関数を実行します。

saveAndSubmit()関数定義内にはsaveOption変数で切り替え可能な 3 つのオプションがあります

選択したオプションに応じて、スクリプトは crashSave として保存されるか、現在のKatanaファイルに上書き保存されるか、または新しい場所に保存されます。

オプション 1 と 2 では、最初にKatana File.IsFileDirty()という名前の別の関数の結果をチェックしますこの関数はKatanaをチェックして、前回の保存以降にプロジェクトが変更されているかどうかを確認し、何も変更されていない場合はKatanaの継続的な保存を停止します。

Katanaの自動保存機能の詳細については、 Katana開発者ガイドを参照してください。

添付ファイル

私たちはそれを聞いて申し訳ございません

理由をお聞かせください