編集(管理者用) | 編集 | 差分 | 新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴
== o ==
ねこまたや web出張所
INDEX

トップページ
お知らせ
twitter
お道具箱
技術資料と雑談
ライブラリ
雑貨や(ダウンロード)
最近の更新
ねこまたやについて

twitter

ねこまたやのついった

企画モノ

psAxe情報ページ
自主制作アニメ
ぽこあぽこ られんたんど


あやかしあやし
エフェクトネタ帳



りまぴん
AE エクスプレッション
レンダー乙女とか
簡易版XPSリンカ
おまけギャラリ

BBS

ねこまたやBBS
開発室BBS

Language



開発室みたいなものでしたが
spamアクセスがはげしいのでページは凍結中です。
書き換えは管理人のみが可能です。
Nekomataya/2024

replaceThat - [AdobeAfterEffects]


[AdobeAfterEffects] AdobeCS5用エクスプレッション変換スクリプト

http://www.nekomataya.info/tools/lib/replaceThat.zip

実行すると、CS5で変更になった「スライダ」>「スライダー」等の翻訳ポリシーの変更に伴い無効化されたエクスプレッション内の単語を置換して回ります。

現状での対応は

	(スライダ|モジュレータ|アルファ|コンバータ|フレア|テクスチャ|スタビライザ|フィルタ)([^ー])
これだけ

実行すると現在のプロジェクト内のエクスプレッション内の上記の単語に音引きを追加します。

詳しい使い方はソースを読んでください。

分からない方は実行しないほうが良いかもです。

2010.04.12 Nekomataya/kiyo 以下ソース

/*(アレ置換)

	レイヤプロパティ置き替えスクリプト暫定版(2007/11/30)
	困ったねまったく
	危険なので準備しておくテスト
	
	** このスクリプトは、nasライブラリがなくても動作します。
	AE9(CS4)以前の環境で走らせるとアプリケーションエラーにトラップされる可能性が高いので、可能な限りAE10で実行してください。
	いったん読み込んだ際にエラーで無効にされたエクスプレッションは有効にするようにしてあります。
*/
	var setAllItems	=true;	//操作フラグ
	if(!AEVersion){var AEVersion	=app.version.replace("x",".").split(".").splice(0,2).join(".")}

	var undoName	="例のアレ置換";	//undoに使う名前
	var tgtReg	=new RegExp("(スライダ|モジュレータ|アルファ|コンバータ|フレア|テクスチャ|スタビライザ|フィルタ)([^ー])","g");		//置換元エフェクトのアレ

	/*	変換元は 後で確認	*/

// nasがインストールされていない場合を判定

	try{if(nas){;}}catch(err){var nas=new Object();nas.biteClip=false;}

/*
	この下は実際の置換スクリプトです

*/

//=====================================================================以下変更不要っぽい
/*
	指定されたアイテムの中からコンポを抜き出し
	コンポのレイヤに対して指定のスクリプトを実行するスクリプト
	アイテム指定がない場合はapp.project.activeItemが対象

引数:	実行する関数(アイテムの指定はセレクト状態を参照)
戻値:	サブスクリプトのリザルトを配列で
*/

var eachLayer=function(action){

	var myResult	=0;
	var bkupArray	=new Array;//選択状態の保存配列

	for(var idx=0;idx<app.project.numItems;idx++){bkupArray.push(app.project.item(idx+1).selected);};//現在の選択状態を保存

	//アイテムの選択 選択が無い状態ではアクティブアイテムを選択 それもなければ、オプションで 全アイテムを選択/処理しない
	if(app.project.selection.length==0){
		if(app.project.activeItem){
			app.project.activeItem.selected=true;
		}else{
			if(setAllItems){
				for(var idx=0;idx<app.project.numItems;idx++){app.project.item(idx+1).selected=true};//全部選択
			};//フラグなけりゃ何もしない
		}
	}
//		前処理してなおかつ対象アイテムがあれば設定されたアクションを実行
//		この時点で選択アイテムがなければ何もしない
	if(app.project.selection.length){
			app.beginUndoGroup(undoName);
		for(var idx=0;idx<app.project.selection.length;idx++){
			myItem=app.project.selection[idx];
			if(myItem instanceof CompItem){
				for(var id=0;id<myItem.layers.length;id++){myResult+=(action(myItem.layer(id+1)));};
			};//アイテムがコンポだった場合のみ各レイヤを引数にaction()を実行して リザルトを積む
		};
		for(var idx=0;idx<app.project.numItems;idx++)
		{
			app.project.item(idx+1).selected=bkupArray[idx];
		};//選択状態を復帰
		app.endUndoGroup();
	};
	return myResult;//なにも実行していな時は空配列をリザルト
}

/*
	レイヤに特定のエクスプレッションがあったらアレを 置き換える
 */

var replaceExpString=function(myProp){
	var replacedCounts=0;
	
	//全てのプロパティを検査してエクスプレッションの値が存在すればそれを変換
	var myPropCount=(myProp.numProperties)?myProp.numProperties:0;
for (var idx=0;idx<myPropCount;idx++){
	//下位プロパティが存在するので再帰コール
	replacedCounts+=replaceExpString(myProp.property(idx+1));
}
if((myProp.canSetExpression)&&(myProp.expression !="")){
	replacedCounts=myProp.expression.match(tgtReg);
	if(replacedCounts){
//		if(AEVersion<10){myProp.expressionEnabled=false};//この行は実際の役に立たない エラーで止まるから
		myProp.expression=myProp.expression.replace(tgtReg,"$1ー$2");
		if(AEVersion>=10){myProp.expressionEnabled=true};//エクスプレッションを書き換えてから有効にする。
	}
}else{
	return 0;
}

return replacedCounts;
}

if(app.project){
	myReplaced=eachLayer(replaceExpString)//
	alert(myReplaced+"個のアレを置換しました。");
}
;//こんなもの使わないで済めばよいのだけどそれはそれで無理そう?

CS4 以前の環境で実行するとアプリケーションエラーが発生してスクリプト自体が停止する可能性が高いです。 ご注意ください