요약
Katana 내에서 프로젝트를 설정할 때 데이터 및 시간 손실을 방지하려면 진행하는 동안 저장하는 것이 필수적입니다. Katana 일정 시간 또는 작업 후에 백업 충돌 파일을 저장하는 자동 저장 기능이 내장되어 있습니다.
충돌 저장에 대한 자세한 내용은 Katana 사용자 가이드: 자동 저장을 Katana 하세요.
이 문서에서는 자동 저장 기능의 기본 동작인 자동 생성된 파일 이름을 사용하여 Katana 의 임시 디렉터리가 아닌 사용자 지정 명명 규칙을 사용하여 사용자 지정 위치에 저장하는 데 사용할 수 있는 자동 저장 스크립트를 설정하는 방법을 보여줍니다. .
추가 정보
Katana Katana Python API 내의 Katana 파일 모듈을 통해 프로젝트 파일을 저장합니다.
Katana File.Save ( path/to/location/file.katana )를 호출하면 선택한 파일 이름을 사용하여 현재 Katana 프로젝트가 선택한 위치에 저장됩니다.
Katana File.CrashSave()를 호출하면 현재 Katana 프로젝트의 충돌 파일이 자동 생성된 이름으로 Katana 충돌 파일 선택기를 사용하여 복원할 수 있는 임시 디렉터리에 저장됩니다.
자동 저장 파일 복원에 대한 자세한 내용은 다음 문서를 참조하십시오. Q100450: 충돌 후 자동 저장된 파일을 찾고 복구하는 방법
위에서 설명한 기능을 사용하면 지정된 시간 간격으로 Katana 프로젝트를 자동으로 저장하는 Python 스크립트를 만들 수 있습니다.
Katana 파일 모듈에 대한 자세한 내용은 Katana 개발자 가이드: 프로젝트 작업을 Katana Katana .
예제 스크립트
이 기사에 첨부된 Python 예제는 필요에 따라 다운로드하여 수정할 수 있습니다.
예제를 다운로드하고 파일을 .katana\UIPlugins 폴더로 이동합니다.
예를 들어:
Windows: C:\Users\USERNAME\.katana\UIPlugins\autosaveProject.py
리눅스: /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 개발자 가이드를 참조하세요.
첨부 파일
우리는 문제로 불편을 끼쳐 드려 죄송합니다
이유를 알려주세요