понедельник, 23 мая 2016 г.

Работа со строковыми переменными.


Есть текстуры с, примерно, такими именами:

"vm_v3_019_wood_chestnut.jpg"
....................................................
"vm_v3_###_wood_chestnut.jpg"

Все текстуры одинаковые, но с разными именами, что перегружает сцену. 
Надо убрать значения "###_" во всех похожих текстурах:

"vm_v3_wood_chestnut.jpg"


Вот скрипт, который это делает с небольшой инструкцией:

--------------------------------------------------------------
(
 --disableSceneRedraw()

albm = getclassinstances bitmapTexture
  
progressstart "Changing fileNames..."
local num = 1, numAll = albm.count
  
with redraw off (
        for n in albm do (
                 progressupdate (num*100.0/numAll)
                 if n.filename != undefined do(
                  a = filenameFromPath n.filename -- get "vm_v3_019_wood_chestnut.jpg"
                  b = filterString  a "_" -- get #("vm", "v3", "019", "wood", "chestnut.jpg")
                      
                  nb = b.count
        
                    try(if b[1] == "vm" and (classOf (execute b[3])) == integer do(
                            ns = b[1]
                            for i = 2 to nb do if i != 3 do ns = ns + "_" + b[i]
                            np = (getFilenamePath n.filename) + ns
                            n.filename = np
                        ))catch()
                  )
                 num+=1
                 )
    )  

progressend () 
--enableSceneRedraw()
)--------------------------------------------------------------

Полезные ссылки:
File Name Parsing
String Values


Комментариев нет:

Отправить комментарий