Script for å behandle bildesekvenser

Max scripts

Moderatorer: Super Moderatorer, Admins


Trådstarter
hardrock_ram
Innlegg: 1502
Registrert: ons 07 feb, 2007
Sted: Kristiansand

Script for å behandle bildesekvenser

Legg innav hardrock_ram » tor 29 aug, 2013

Skrev dette til bruk på jobb, men tenkte det er sikkert kjekt for andre også :)

Scriptet kan brukes til å behandle typiske bildesekvenser, for eks. dette: "Camera001_0001.exr"
*Det kan forandre prefix-navn ("Camera001_").
*Det kan forandre hele eller deler av sekvensnummereringen. Dette er kjekt for å forandre på sekvenser som starter på en minusverdi. Man kan også sette sekvensen til gå bakvendt.

Bruksanvisning:
*current file directory følger denne malen: C:\\lagring\\bildesekvens1
*new file directory følger samme mal. Hvis denne settes til samme sted som current file directory, så vil bildene erstattes. Ellers vil de kopieres
*current prefix name eks: "Camera001_" må fylles ut HELT nøyaktig, inkludert understreker, bindestreker osv.
*new prefix name: Her kan man sette nytt prefix. Dette feltet MÅ fylles ut. Skal ikke prefix forandres, så skriver man bare det samme som i "current prefix name".
*Current Sequence start at number: Operasjonen på bildene skal starte på dette nummeret
*Current Sequence end at number: Operasjonen på bildene skal stoppe på dette nummeret
*Number of digits: antall sifre, inkludert evt. minus. Merk at når 3dsmax rendrer, så vil et minus ta plassen til et siffer. Det betyr at om en sekvens går fra -100 til 100, så vil det være fire siffer på alle bildene.
*New sequence starts at number: Den nye sekvensen skal starte på dette nummeret. Minus er ikke mulig, og det setter selv det riktige antall sifre.
*Current file extension: riktig filtype settes. Husk punktum først.

Kode: Velg alt

(--Top level START
   rollout rollout_modifyFileSequenceName "Modify file sequence name"
   (--START rollout_modifyFileNames
      group "Directory settings"
      (
         editText txt_currentFileDir "Current file directory: (Double backslashes)"
         editText txt_newFileDir "New file directory: (Double backslashes)"
      )
      group "Prefix settings"
      (
         label lbl_1  "Common file name only. No directory, sequence numbers or file extensions. Upper\lower cases must match with image file names"
         Edittext txt_currentPreFix "Current prefix name:" text:"Camera001_"
         Edittext txt_newPreFix "New prefix name:" text:"Flyaround_2_"
      )
      group "Old sequence number scheme"
      (
         spinner spn_currentNumberStart "Current sequence start at number:" type:#integer range: [-99999,99999,-100]
         spinner spn_currentNumberEnd "Current sequence end at number:" type:#integer range: [-99999,99999,100]
         spinner spn_currentNumberOfDigits "Number of digits (including minus):" type:#integer range: [0,99999,4]
      )
      group "New sequence numbering"
      (
         spinner spn_newFrameNumberStart "New sequence starts at number:" type:#integer range: [0,99999,1]
      )
      group "File type"
      (
         editText txt_fileExtension "Current file extension (.exr, .psd etc.):" text: ".exr"
      )
      group "Execute"
      (
         label lbl_info_1 "BACKUP FIRST"
         button btn_execute "Execute"
      )
      Group "Info"
      (
         label lbl_info "Cameron Sense AS" --Please keep this :)
         label lbl_info_2 "2013"
      )
      
      on btn_execute pressed do
      (--execute button START
         --Variables:
         directoryOnly = txt_currentFileDir.text + "\\"
         newDirectoryOnly = txt_newFileDir.text + "\\"
         numberOfLettersInFileType = txt_fileExtension.text.count
         originalFilesArray = getFiles (directoryOnly + "*")
         numberOfLettersName = originalFilesArray[1].count - spn_currentNumberOfDigits.value - numberOfLettersInFileType--Number of letters in path and name
         numberOfLettersExtra = spn_currentNumberOfDigits.value + numberOfLettersInFileType --Number of letters in number and extension
         numberOfLettersTotal = originalFilesArray[1].count--Total amount of letters
         
         --Variables needed for new file name and numbering only:
         newFrameNumber = spn_newFrameNumberStart.value
         NumberOfFramesTotal = spn_currentNumberEnd.value - spn_currentNumberStart.value --Total number of frames
         NumberOfFrameDigits = ((NumberOfFramesTotal + newFrameNumber ) as string).count --Total amount of digits
         
         --Going through each frame for the specified range:
         for i = spn_currentNumberStart.value to spn_currentNumberEnd.value do
         (
            --Operations to get current file name correct. This is the frame that will be operated on:
            
            --currentExtraDigits will get the number of extra zeros and a possible minus sign correct
            currentExtraDigits = ""
            if i <0 do currentExtraDigits += "-"
            for j = 1 to (spn_currentNumberOfDigits.value - (i as string).count) do currentExtraDigits += "0"
            
            indexNumber = i as string
            if i<0 do (indexNumber = (-i) as string)
            
            --The current file name:
            currentFile = directoryOnly + txt_currentPreFix.text + currentExtraDigits + indexNumber + txt_fileExtension.text
            
            ------------------------------------------------------------------------------------------------------------------------------------------------
            
            
            --Getting correct number of zeros correct for the new file name. Minus is not an option for the new range
            newExtraDigits = ""
            for j = 1 to (NumberOfFrameDigits - (newFrameNumber as string).count) do newExtraDigits += "0"
            
            --The new filename, with a new sequence numbering and possible relocation to another directory:
            newFileName = newDirectoryOnly + txt_newPreFix.text + newExtraDigits + newFrameNumber as string + txt_fileExtension.text
            
            --Renaming and copying the file:
            copyFile currentFile newFileName
            
            --Adding a new number to newFrameNumber to be used for the next frame in the sequence:
            newFrameNumber += 1
         )
      )--execute button END
   )--SLUTT rollout_modifyFileNames
   createDialog rollout_modifyFileSequenceName 800 475
)--Top level END
Sist redigert av hardrock_ram den lør 25 jan, 2014, redigert 3 ganger totalt.
if your not living on a killing ground, you better make your own


Trådstarter
hardrock_ram
Innlegg: 1502
Registrert: ons 07 feb, 2007
Sted: Kristiansand

Legg innav hardrock_ram » fre 30 aug, 2013

Fint om dere som evt. prøver det sier ifra om bugs. Script skrives som regel for å løse et konkret problem som har dukket opp. Jeg prøver alltid å gjøre de litt generelle, men har ikke tid til å teste de noe særlig :)
Forberinger i koden taes også selvfølgelig imot med takk :)
if your not living on a killing ground, you better make your own


Gå tilbake til «Max scripts»

Hvem er online

Brukere i dette forumet: Ingen registrerte brukere og 1 gjest

cron