//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;
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;
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);
//こんなふうにまとめて作ることもできる
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);
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
text/内容を変更する。
var myTextItem = activeDocument.textArtItems[0];
myTextItem.contents = "あいうえお";
この例では最前面のテキストの内容を
"あいうえお"に変更します。
サンプル/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;
サンプル/トンボ作成
//線の設定がない選択したオブジェクトにトンボをつけます
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;
サンプル/ファイルを開いて複製
//現在のドキュメントを調べておく
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を使うよりも
すべてのアイテムを選択しコピーペーストするほうが速い
サンプル/全レイヤー内の最前面テキストを調べる
//最前面のドキュメント
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;
ドキュメント/サイズを求める
W=activeDocument.width;
alert(W);
高さはheight
ドキュメント/作成
documents.add(DocumentColorSpace.CMYK,600,400);
CMYKで
W600pt
H400pt
mmやcmでの指定は不可
documents.add();
引数無しでもできる。
角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
基本/デバッグ
スクリプトに
$.bp();
を入れるとデバッグが始まる。
変数は入力フィールドに変数名を
入力しないと見れない。
基本/ファイルパス
ファイルパスの指定方法
起動ディスクのepsフォルダ内の001.epsは
MacWin共通
/eps/001.eps
Macだけでは
Macintosh HD:eps:001.eps
Winだけでは
C:\\eps\\001.eps
基本/実行方法
プリセットフォルダのスクリプトフォルダに
作成したスクリプトを入れる。
下記をtest.jsという名前で
Illustrator/プリセット/スクリプトに入れる。
alert("これは練習です");
これでIllustratorを起動し
ファイルメニューのスクリプトから実行する。
選択された/オブジェクトを調べる
selAry=activeDocument.selection;
for(N=0;N<selAry.length;N++){
alert(selAry[N].width);
選択された/線幅を変更
//↓線幅を設定(単位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;