Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум .:3DCenter.ru:. _ 3ds Max _ Как сделать много скринов

Автор: cad 10/01/2017, 12:23

Добрый день. У меня такая задача: на винте много макс - файлов (неск. тыс), распиханных по разным папкам. Нужно сделать к каждому файлу картинку - скрин с вьюпорта, которая будет иметь такое-же имя файла, как и сама сцена. Сейчас делаю так: открываю файл, выставляю удобную ориентацию сцены, делаю принтскрин, иду в папку, копирую имя файла, перехожу в граф. редактор, создаю картинку и сохраняю с именем из буфера. Как-то много движений получается. Можно ли как-то автоматизировать?

Например,

назначить хоткей или сделать кнопку на Tools - Preview - Grab Viewport - Capture Still Image - но в разделе хоткеев этой ф-ии нет
чтоб по умолчанию там был выбран тип файла JPG. Если бы автоматом вставлялось имя исходной сцены - вообще ништяк

Автор: igorznag2 10/01/2017, 14:22

Цитата(cad @ 10/01/2017, 13:23) *
Например, назначить хоткей или сделать кнопку на Tools - Preview - Grab Viewport - Capture Still Image - но в разделе хоткеев этой ф-ии нет
чтоб по умолчанию там был выбран тип файла JPG. Если бы автоматом вставлялось имя исходной сцены - вообще ништяк

Попробуйте такой вариант. Пример. Запускаем скрипт.
Меню Customize > Customize UI > Keyboard > Category:"_igorznag"
Назначаем клавишу для действия igorznag_grab_and_save.
Скрипт делает скрин с вьюпорта и сохраняет его в папке сцены с названием сцены и в формате jpg.
Код
macroscript igorznag_grab_and_save category:"_igorznag"
(  m=maxFileName; if m!="" do
(    b=gw.getViewportDib(); bn=substring m 1 (m.count-4)
    bfn=maxFilePath+bn+".jpg"; b.filename=bfn; save b; close b ))

Автор: Jahman 10/01/2017, 16:33

http://paulneale.com/scripts/batchItMax/batchItMax.htm

или вот накидал по быстрому



 saveMultipleScenesViewportScreenshot.zip ( 1,14 килобайт ) : 35
 

Автор: IOG 10/01/2017, 17:01

Цитата(igorznag2 @ 10/01/2017, 15:22) *
Код
macroscript igorznag_grab_and_save category:"_igorznag"
(  m=maxFileName; if m!="" do
(    b=gw.getViewportDib(); bn=substring m 1 (m.count-4)
    bfn=maxFilePath+bn+".jpg"; b.filename=bfn; save b; close b ))

а что тут добавить чтобы каждый раз jpeg не перезаписывался, а сохранялся с новым номером? спасибо заранее!

Автор: Jahman 10/01/2017, 17:05

QUOTE
doesFileExist <filename_string>

перех сохранением проверить нет ли такого имени и как-то индексировать имя файла если есть

Автор: igorznag2 10/01/2017, 17:39

Цитата(IOG @ 10/01/2017, 18:01) *
а что тут добавить чтобы каждый раз jpeg не перезаписывался, а сохранялся с новым номером? спасибо заранее!

Код
macroscript igorznag_grab_and_save category:"_igorznag"
(  
    m=maxFileName;
    if m!="" do
    (    
        b=gw.getViewportDib(); bn=substring m 1 (m.count-4)
        bfn=maxFilePath+bn+".jpg";
        i=1; while doesFileExist bfn do (bfn=maxFilePath+bn+(i as string)+".jpg"; i+=1)
        b.filename=bfn; save b; close b
    )
)

Автор: IOG 10/01/2017, 18:41

Сделал немного по-другому, под свои нужды, перезапись не включал :

Код
(  
    global gl_ScreenMePos
    global gl_ScreenMeEt
    global gl_ScreenMeFolder
       if gl_ScreenMePos == undefined do gl_ScreenMePos = [300,300]
       if gl_ScreenMeEt == undefined do gl_ScreenMeEt = ""
       if gl_ScreenMeFolder == undefined do gl_ScreenMeFolder = ""
          
rollout ScreenMe "ScreenMe!" width:250 height:80 (
    button setFolder "set folder" width:240
    editText eT "Name:" text:gl_ScreenMeEt   pos:[5,30] width:240 height:20
    button btn1 "Save" pos:[40,55] width:60
fn fn_FolderText = (
      if gl_ScreenMeFolder != "" do (
            if gl_ScreenMeFolder.count > 40 then (
                setFolder.text = "..." + (substring gl_ScreenMeFolder (gl_ScreenMe.count - 37) gl_ScreenMe.count)
                          )
                 else setFolder.text = gl_ScreenMeFolder
        )
    )
on ScreenMe open do fn_FolderText()
on setFolder pressed do (
        gl_ScreenMeFolder = getSavePath()
        fn_FolderText()
)
on ScreenMe close do ( gl_ScreenMePos = GetDialogPos ScreenMe )
on eT changed A do gl_ScreenMeEt = eT.text
on btn1 pressed do (
    if eT.text != "" and setFolder.text !="" do (
    local b=gw.getViewportDib()
    b.filename=gl_ScreenMeFolder + "\\" + eT.text + ".jpg"
    save b
    close b )
    )
)
createdialog ScreenMe pos:gl_ScreenMePos
)

Автор: cad 11/01/2017, 11:43

Цитата(igorznag2 @ 10/01/2017, 17:39) *
Цитата(IOG @ 10/01/2017, 18:01) *
а что тут добавить чтобы каждый раз jpeg не перезаписывался, а сохранялся с новым номером? спасибо заранее!

Код
macroscript igorznag_grab_and_save category:"_igorznag"
(  
    m=maxFileName;
    if m!="" do
    (    
        b=gw.getViewportDib(); bn=substring m 1 (m.count-4)
        bfn=maxFilePath+bn+".jpg";
        i=1; while doesFileExist bfn do (bfn=maxFilePath+bn+(i as string)+".jpg"; i+=1)
        b.filename=bfn; save b; close b
    )
)



Спасибо огромное!!!!!!!! Супер!

Форум Invision Power Board (http://nulled.cc)
© Invision Power Services (http://nulled.cc)