読者です 読者をやめる 読者になる 読者になる

ですぽんたにっき

基本的には 3dsMax や Unity 関係の記事で。その他色々マイブームなネタを書いていきます。

【MaxScript】所謂バッチ処理ってやつ

連番ファイル名がつけられたMaxシーンに対して同じような処理をするにはどうすればいいでしょうか(^ω^)

処理内容を変えるだけで色々応用が効くプログラムです。

今回は、Maxシーン内にあるText()オブジェクトの削除を大量のファイルに対して一括処理します。
f:id:ponta565:20161119195013p:plain

上記の全てのファイルには、テキストオブジェクトが入っています。
f:id:ponta565:20161119195100p:plain

すべてのファイルからテキストオブジェクトを削除するスクリプトは以下です(゜∀。)

【MaxScript】バッチ処理

このスクリプトにより、1つ1つファイルを開いて削除して保存し直すという作業がものの7秒で終わりました!
普通に作業したら2分はかかるし、精神衛生的にも若干よろしくないですね!
単調作業は脳を麻痺させます。

コアな内容はひとまず終わりです。

001 - 999 ファイルまでに対応する

あとは、001 - 999 ファイルまで対応するやりかたを書いてきます。
本業がPGでは無いので、あんまり良い書き方ではないかもしれません・・・
ダサい書き方だったら、コメントにてどしどしご指摘していただけるとメチャ嬉しいです :D

とりあえず、999ファイルまで動く予定です。ファイルがたくさん作られるのが嫌だったので150ファイルまでしかテストしていません。

【MaxScript】バッチ処理999迄対応

ちなみに、コード内に書いてある

Delete (for o in objects where classOf o == Text collect o)

の意味は・・・

シーン内のすべてのオブジェクトを配列で取得(objects)し、すべての要素1つ1つ(o)を Textオブジェクトかどうか比較します。

そしてTextオブジェクトと判断されたものだけを削除しています。

"classOf o" は o のクラスを返してくれる関数です。

以上です!

非エンジニアのためのプログラミング講座

非エンジニアのためのプログラミング講座