●メニューへ ●単福へ ●自動車の維持費をシミュレーション ●InDesign JavaScript ノート

Color/14641色のカラーチャート作成


documents.add();

activeDocument.defaultStroked=false;//線はなしにする。

var myH=5;//高さ
var myW=5;//幅

//100色分のカラーチャートブロック
for(YY=0;YY<11;YY++){	var myYY=YY*myH*11;//11コマ分移動させる
	for(XX=0;XX<11;XX++){
		var myXX=XX*myW*11;//11コマ分移動させる
		CreateRect(myXX,myYY,myW,myH,YY*10,XX*10);//100色作る関数を呼ぶ
	}
}

//100色作る関数
function CreateRect(motoX,motoY,myW,myH,myYellow,myBlack){
	for(Y=0;Y<11;Y++){
		var myY=motoY+Y*myH;//1コマ移動
		for(X=0;X<11;X++){
			var myX=motoX+X*myW;//1コマ移動
			var myObj=activeDocument.pathItems.rectangle(myY,myX,myW,myH);//四角
			myObj.fillColor=reColor(Y*10,X*10,myYellow,myBlack);
		}
	}
}

function reColor(C,M,Y,K){
	var myCMYK=new CMYKColor();
	var myColor=new Color();
	
	myCMYK.cyan=C;
	myCMYK.magenta=M;
	myCMYK.yellow=Y;
	myCMYK.black=K;
	
	myColor.cmyk=myCMYK;
	return myColor;
}


TOPへ


Color/作成


function reColor(C,M,Y,K){
	var myCMYK=new CMYKColor();
	var myColor=new Color();
	
	myCMYK.cyan=C;
	myCMYK.magenta=M;
	myCMYK.yellow=Y;
	myCMYK.black=K;
	
	myColor.cmyk=myCMYK;
	return myColor;
}


TOPへ


ellipse丸/作成


var myDoc=activeDocument.pathItems;
var myObj=myDoc.ellipse(Y,X,W,H);//丸
myObj.fillColor=reColor();
//reColor関数で色を返す

myObj.stroked=false;//線なし
myObj.opacity=50;//透明度50


var myObj=activeDocument.pathItems.ellipse(Y,X,W,H);
//こんなふうにまとめて作ることもできる


TOPへ


rectangle/作成


colbuf=new CMYKColor();

colbuf.cyan=0;
colbuf.magenta=100;
colbuf.yellow=100;
colbuf.black=0;
M100Y100=new Color();
M100Y100.cmyk=colbuf;


myDoc=activeDocument;
myDoc.defaultStroked=false;
myDoc.defaultFillColor=M100Y100;
myDoc.pathItems.rectangle(10,20,100,200);


TOPへ


rectangle/作成2


var myDoc=activeDocument.pathItems;
var myObj=myDoc.rectangle(Y,X,W,H);//四角
myObj.fillColor=reColor();
//reColor関数で色を返す

myObj.stroked=false;//線なし
myObj.opacity=50;//透明度50


TOPへ


text/内容を変更する。


var myTextItem = activeDocument.textArtItems[0];
myTextItem.contents = "あいうえお";

この例では最前面のテキストの内容を
"あいうえお"に変更します。


TOPへ


サンプル/BARレイヤーのグループに色を付ける


BARレイヤーに
■■■■■■■■
という8つのオブジェクトを配置しグループ化します。
それを256個複製し下記スクリプトを実行すると
白黒全パターンができます。
子供のプリキュアカード用です。

var docRef = documents[0];
Lay=docRef.layers["BAR"];
for(T=0;T<256;T++){
	gro=Lay.groupItems[T];
	myStr=reStr(T);
	for(N=0;N<8;N++){
		buf=myStr.substr(N,1);
		if(buf=="0"){
			gro.pathItems[N].fillColor=reColor(0,0,0,0);
		}else{
			gro.pathItems[N].fillColor=reColor(0,0,0,100);
		}
	}
}


function reStr(xx){
	myStr=xx.toString(2);
	myStrLen=myStr.length;
	if(myStrLen==1){myStr="0000000"+myStr;}
	else if(myStrLen==2){myStr="000000"+myStr;}
	else if(myStrLen==3){myStr="00000"+myStr;}
	else if(myStrLen==4){myStr="0000"+myStr;}
	else if(myStrLen==5){myStr="000"+myStr;}
	else if(myStrLen==6){myStr="00"+myStr;}
	else if(myStrLen==7){myStr="0"+myStr;}
	return myStr;
}

function reColor(C,M,Y,K){
	var myCMYK=new CMYKColor();
	var myColor=new Color();
	
	myCMYK.cyan=C;
	myCMYK.magenta=M;
	myCMYK.yellow=Y;
	myCMYK.black=K;
	
	myColor.cmyk=myCMYK;
	return myColor;
}


TOPへ


サンプル/トンボ作成


//線の設定がない選択したオブジェクトにトンボをつけます
selAry=activeDocument.selection;
lineW=0.1;
var mypt=2.8;
if(selAry.length>1){
	alert("1つだけ選択して下さい。");
}else{
	var X=selAry[0].left/mypt;
	var Y=selAry[0].top/mypt;
	var W=selAry[0].width/mypt;
	var H=selAry[0].height/mypt;
	//左上
	drowLine(X-13,X-3,Y,Y,lineW,mypt);
	drowLine(X-13,X,Y+3,Y+3,lineW,mypt);
	drowLine(X-3,X-3,Y+13,Y,lineW,mypt);
	drowLine(X,X,Y+13,Y+3,lineW,mypt);
	//上センター
	drowLine(X+W/2,X+W/2,Y+13,Y+3,lineW,mypt);
	drowLine(X+W/2-5,X+W/2+5,Y+7,Y+7,lineW,mypt);
	drowEllipse(X+W/2-2,Y+7+2,4,4,lineW,mypt);
	//右上
	drowLine(X+W+3,X+W+13,Y,Y,lineW,mypt);
	drowLine(X+W,X+W+13,Y+3,Y+3,lineW,mypt);
	drowLine(X+W+3,X+W+3,Y+13,Y,lineW,mypt);
	drowLine(X+W,X+W,Y+13,Y+3,lineW,mypt);
	//左センター
	drowLine(X-13,X-3,Y-H/2,Y-H/2,lineW,mypt);
	drowLine(X-7,X-7,Y-H/2+5,Y-H/2-5,lineW,mypt);
	drowEllipse(X-7-2,Y-H/2+2,4,4,lineW,mypt);
	//右センター
	drowLine(X+W+3,X+W+13,Y-H/2,Y-H/2,lineW,mypt);
	drowLine(X+W+7,X+W+7,Y-H/2+5,Y-H/2-5,lineW,mypt);
	drowEllipse(X+W+7-2,Y-H/2+2,4,4,lineW,mypt);
	//左下
	drowLine(X-13,X-3,Y-H,Y-H,lineW,mypt);
	drowLine(X-13,X,Y-H-3,Y-H-3,lineW,mypt);
	drowLine(X-3,X-3,Y-H-13,Y-H,lineW,mypt);
	drowLine(X,X,Y-H-13,Y-H-3,lineW,mypt);
	//下センター
	drowLine(X+W/2,X+W/2,Y-H-13,Y-H-3,lineW,mypt);
	drowLine(X+W/2-5,X+W/2+5,Y-H-7,Y-H-7,lineW,mypt);
	drowEllipse(X+W/2-2,Y-H-7+2,4,4,lineW,mypt);
	//右上
	drowLine(X+W+3,X+W+13,Y-H,Y-H,lineW,mypt);
	drowLine(X+W,X+W+13,Y-H-3,Y-H-3,lineW,mypt);
	drowLine(X+W+3,X+W+3,Y-H-13,Y-H,lineW,mypt);
	drowLine(X+W,X+W,Y-H-13,Y-H-3,lineW,mypt);
}

function reColor(C,M,Y,K){
	var myCMYK=new CMYKColor();
	var myColor=new Color();
	
	myCMYK.cyan=C;
	myCMYK.magenta=M;
	myCMYK.yellow=Y;
	myCMYK.black=K;
	
	myColor.cmyk=myCMYK;
	return myColor;
}

function drowLine(X1,X2,Y1,Y2,lineW,mypt){
	tomboColor=reColor(100,100,100,100);
	myLine=activeDocument.pathItems.add();
	myLine.setEntirePath([[X1*mypt,Y1*mypt],[X2*mypt,Y2*mypt]])
	myLine.filled=false;
	myLine.stroked=true;
	myLine.strokeWidth=lineW*mypt;
	myLine.strokeColor=tomboColor;
}

function drowEllipse(X,Y,W,H,lineW,mypt){
	tomboColor=reColor(100,100,100,100);
	myObj=activeDocument.pathItems.ellipse(Y*mypt,X*mypt,W*mypt,H*mypt);
	myObj.filled=false;
	myObj.stroked=true;
	myObj.strokeWidth=lineW*mypt;
	myObj.strokeColor=tomboColor;
}


TOPへ


サンプル/ファイルを開いて複製


//現在のドキュメントを調べておく
var docRef = documents[0];
//ファイルオープン
//変数inputFileはフルパス。File()はFileオブジェクトを返す関数
formatFile=open(File(inputFile));

//全アイテム分繰り返す
for(i=0;i<formatFile.pageItems.length;i++) {
//開いたファイルを複製して
 	newItem = formatFile.pageItems[i].duplicate(); 
//最初のドキュメントに複製する
	 newItem.moveToBeginning(docRef); 
 } 

かなり効率悪そうなサンプル。
実際AppleScriptよりも遅いのでここまで書いてやめた。

AppleScriptでもduplicateを使うよりも
すべてのアイテムを選択しコピーペーストするほうが速い


TOPへ


サンプル/全レイヤー内の最前面テキストを調べる


//最前面のドキュメント
var docRef = documents[0];
//レイヤーの数
var Lnum = docRef.layers.length;
var Lay="";
//レイヤーの数分繰り返し
for(N=0;N<Lnum;N++){
//テキストがあるなら
	if(docRef.layers[N].textArtItems.length>0){
//内容を調べる
		con=docRef.layers[N].textArtItems[0].contents
//最初の8文字が"F@I@L@E:"なら
		if("F@I@L@E:"==con.substr(0,8)){
//座標やレイヤー名を調べる
			X=docRef.layers[N].textArtItems[0].left;
			Y=docRef.layers[N].textArtItems[0].top;
			Lay=docRef.layers[N].name;
			con = con.substr(8);
			inputFile=formatFol + con;
			break;
		}
	}
}


TOPへ


ドキュメント/サイズを求める


W=activeDocument.width;
alert(W);

高さはheight


TOPへ


ドキュメント/作成


documents.add(DocumentColorSpace.CMYK,600,400);

CMYKで
W600pt
H400pt

mmやcmでの指定は不可

documents.add();
引数無しでもできる。


TOPへ


角R四角/作成


var myDoc=activeDocument.pathItems;
var myObj=myDoc.roundedRectangle(Y,X,W,H,5,5);//角R四角
myObj.fillColor=reColor();
//reColor関数で色を返す

myObj.stroked=false;//線なし
myObj.opacity=50;//透明度50


TOPへ


基本/デバッグ


スクリプトに
$.bp();
を入れるとデバッグが始まる。

変数は入力フィールドに変数名を
入力しないと見れない。


TOPへ


基本/ファイルパス


ファイルパスの指定方法

起動ディスクのepsフォルダ内の001.epsは
MacWin共通

/eps/001.eps


Macだけでは
Macintosh HD:eps:001.eps

Winだけでは
C:\\eps\\001.eps


TOPへ


基本/実行方法


プリセットフォルダのスクリプトフォルダに
作成したスクリプトを入れる。

下記をtest.jsという名前で
Illustrator/プリセット/スクリプトに入れる。
alert("これは練習です");

これでIllustratorを起動し
ファイルメニューのスクリプトから実行する。


TOPへ


選択された/オブジェクトを調べる


selAry=activeDocument.selection;
for(N=0;N<selAry.length;N++){
	alert(selAry[N].width);
}


TOPへ


選択された/線幅を変更


//↓線幅を設定(単位mm)
var W=0.1;
//↓色を設定(単位%)
var C=0;
var M=0;
var Y=0;
var K=100;

var myCMYK=new CMYKColor();
var myColor=new Color();
myCMYK.cyan=C;
myCMYK.magenta=M;
myCMYK.yellow=Y;
myCMYK.black=K;
	
myColor.cmyk=myCMYK;
selAry=activeDocument.selection;
for(N=0;N<selAry.length;N++){
	if(selAry[N].stroked){
		selAry[N].strokeWidth=W*2.83;
		selAry[N].strokeColor=myColor;
	}
}


TOPへ