FsDD スクリプトでドラッグ&ドロップを実現するアプリ
どうもbry-fulです。After Effectsのスクリプトではファイルの獲得UIはダイアログしかないので何とかならんのかなぁと思って作ったものです。ドラッグ&ドロップ入力を行うアプリとそれを呼び出すAEスクリプトライブラリになります。
ダウンロードはここからできます。
http://bry-ful.ddo.jp/BRY/software/ScriptDiary/FsDD_v110.zip
Windows版とMac版がありますが、アプリのインストールが終われば使い方は同じです。
アプリのインストール(Windows)
WindowsではXPならば簡単ですが、Windows7/Vistaではちと面倒です。
Windows版はアーカイブの中の「FsDD for Windows」フォルダ内にある”FsDD.exe“と”pbpaste.exe“の二つをインストールします。
“pbpaste.exe“はクリップボードにあるテキストデータを標準出力するDOSコマンドで、環境変数PATHで指定されたフォルダにコピーしてください(いきなりよく分からない^^;)
通常ならばC:\Windows\System32あたりにコピーするのが一番らくだと思います。
ただし、Windows7では管理者権限でコピーしてセキュリティをクリアにする必要があります。
どうしてもSystem32で実行が駄目な場合は新しいフォルダを作成して環境変数PATHに追加したほうが楽です。
“FsDD.exe“はどこにあってもかまいません。
最初の起動で設定を行うので場所を決めたらダブルクリックで起動させてください。
「拡張子を登録しました」と「After Effectsが起動していません」とダイアログ表示されたらインストール完了です。
ただし、設定時にUACの関係でエラーが起きる場合があります。その時はshiftキーを押しながらFsDD.exeを右クリックして管理者として実行してください。再設定をやり直します。
設定といっても拡張子の関連付けを行っているだけなので、拡張子”.fsdj“に手作業でFsDD.exeを登録してもかまいません。
アプリのインストール(Mac)
Macは簡単です。FsDD.appをアプリケーションフォルダへ移動させてください。pbpasteは標準でインストールされています。
FsDD.appはMacCreator/MacTypeをFinderに認識させる為で単純にダブルクリックして起動させてください。特にアプリでの設定はしていません。
うまく動かない時は手動で拡張子”.fsdj”をFsDD.appに関連付けてください。
FsDD.jsxincの使い方
FsDD.jsxinはFsDDアプリを簡単に呼び出すためのライブラリです。ちょっと使い方に癖がありますが、比較的簡単に使えるように作ってあります。
まず読み込みを行ってください。
#include “FsDD.jsxinc”
で読み込めます。拡張子を”.jsx“変えてStartupフォルダにいれてスタートアップ時に読み込ませてしまってもかまいません。
内部で”json2.js“ライブラリを呼び出しています。FsDD.jsxinと同じ場所に”json2.js“を置くかincludepathでフォルダを指定してください(これもStartupフォルダに入れたほうが楽かも?)
後はスクリプト内で
FsDD.show();
でダイアログが表示されるようになります。
何も指定しないとドラッグ&ドロップされたフォルダ・ファイルをalertダイアログに表示します。
ドラッグ&ドロップされたフォルダ・ファイルに何か処理を加えたい時(というかそれが目的)は、以下のようにします。
function exec(ary)
{
var s = “”;
for ( var i=0; is += ary[i].fsName +"\n";
alert(s);
}
関数の引数がFile/Folderオブジェクトの配列とした関数を作成し、FsDD.callFuncに上書きしてください。
FsDD.callFunc = exec;
ドラッグ&ドロップした後にexec関数が実行されます。
FsDD.show(exec);
として実行してもかまいません。
exec関数が呼ばれたときは必ずFile/Folderオブジェクトの配列(要素は1以上)が渡されます。
フォルダのみを受け取りたい場合は
FsDD.targetFile(); //ターゲットをファイルだけに
FsDD.notMultiFiles(); //受け取るファイルは1個のみ
FsDD.show(exec);
とすればファイルを1個だけ受け取ることができます。
FsDDオブジェクトは以下のメンバー関数を持っています。
- FsDD.center(); //ダイアログを表示する時にセンター表示にする。
- FsDD.targetALL(); //D&Dをフォルダ・ファイルにする(デフォルト)
- FsDD.targetFile(); //D&Dをファイルのみにする
- FsDD.targetFolder(); //D&Dをフォルダのみにする
- FsDD.notMultiFiles(); //D&Dを1個のみにする
FsDD.show()の引数は
FsDD.show( [Caption,] [title,] [func]);
- 「Caption:表示される文字列」
- 「title:タイトルバーの文字列」
- 「func:実行される関数」
[title,]は省略可能ですが、[title,]を指定するときは は省略できません。
サンプルスクリプト
サンプルをアーカイブに入れてあるので参照してください。特にFsDDSample03.jsxは、一番使うパターンと思います。
ボタンを押すとFsDDダイアログが表示され、ファイルかフォルダをドラッグ&ドロップするとテキストエディットにそのパスが入力されます。
FsDD_util.jsx
FsDDを使った使用例です。プラグイン的に機能を追加できるファイルインポートスクリプトになります。FsDD_utilsフォルダ内のスクリプトとフォルダをScriptUI Panelsへコピーして使います。
おまけ「XMPメタデータへファイルを保存.jsx」
最近のAdobe製品のセーブデータにはすべてXMPメタデータが含まれています。After Effectsのプロジェクトファイルにも含まれています。「ウインドウ」メニューの「メタデータ」で表示されるデータがそれにあたります。
詳しいことは省きますがxmlっぽい感じのデータなのでスクリプトから読み書きが可能です。
この「XMPメタデータへファイルを保存.jsx」は、そこへ小さなファイルを収納してしまうスクリプトです。
After Effectsでファイルを収集すると作業時に作ったテキストのメモとかアニメ撮影だとタイムシート(リマップ)ファイルが含まれないので、このスクリプトを使って保存してしまおうって物です。
使い方は簡単ですが、レンダーキューの出力モジュール設定で「ソースのXMPメタデータを含める」をONにすると出力されるムービーにもXMPメタデータが含まれてしまうので注意してください。
ダウンロードはここからできます
http://bry-ful.ddo.jp/BRY/software/ScriptDiary/PackedFilesInXMP.zip
最後に
FsDD.jsxincはjson2.jsが無ければ実現不可能でした。感謝です!json2.jsの詳細はhttp://www.json.org/js.htmlを参照してください。
FsDDのもっと詳しいことはFsDD.jsxincを見てください。
実はもっと細かな動作の指定が可能ですが面倒だったのでまだ未実装です。
FsDD.exe/pbpaste.exeはVisual Studio 2010 expressでFsDD.appはreal studioで作成しました。
ソースはまとめたらアップする予定です。
それでは!
F’s Pluginsの続きはしばらくお待ちください。すみません
この投稿への反応はまだありません。
気軽にあなたのコメントやトラックバック、Twitterでのつぶやきを投稿してみてください。
コメントをどうぞ!