2012年4月18日 星期三

[MAXscript] 將所選擇物件轉為物件陣列形式

可將選擇中的物件名稱以#( $node1, $node2, ... )物件陣列的方式印出來

-- 將所選擇的物件名稱輸出成物件陣列形式 by Janus Huang

-- 紀錄下所有物件的名稱
tmp = for o in selection collect o.name

out = "#( "

--把物件名稱去除掉空白格
for i in 1 to tmp.count where matchpattern tmp[i] pattern:"* *" do (

    strNew = ""
    
    --留下space外的字串成array
    strTmp = filterString tmp[i] " "
    
    --將array結合成string後重新丟回
    for s in strTmp do strNew += s
    tmp[i] = strNew
)

for i in 1 to tmp.count do (
    --把物件名稱去除掉()
    if matchpattern tmp[i] pattern:"*(*)*" then
    (
        strNew = "getNodeByName \""+tmp[i]+"\""
        tmp[i] = strNew
    ) else (
        tmp[i]="$"+tmp[i]
    )

    if i != tmp.count then out += tmp[i]+", " else out += tmp[i]+" )"
)

print out

沒有留言:

張貼留言