訪問していただき、ありがとうございます。
多くの人が、Illustratorを使用してレイアウトを行う際に、
要素や余白をスッキリと見せる為にグリッドラインを活用していると思います。
そこで今回は、グリッドラインを引く作業を簡略化するために、
必要な数値を入力するだけで【グリッドライン】がアートボードに
配置されるスクリプトを作成しましたので、ご紹介いたします。
この記事を書いている僕は、、Illustratorの経験は15年以上になります。
最近ではJavaScriptを使ってスクリプトを自作し、デザインの日常業務で活用しています。
ぜひ、この記事で紹介するスクリプトをグリッドデザインにお役立てください。
それでは、どうぞ
目次
・【グリッドライン】スクリプトの使い方
・【グリッドライン】スクリプトのコード紹介
・免責事項
【グリッドライン】スクリプトの使い方
このスクリプトは、アートボードのサイズを自動で計測し、入力された数値を
元にグリッドラインを作成する便利なスクリプトです。
スクリプトを利用する方法は、以下のいずれかです。
1.下記リンクからスクリプトをダウンロード
DL:gridLien.jsx
2.次の章に掲載されているコードをテキストエディタに貼り付け
ちなみに、スクリプトの実行方法を知りたい方は、【Illustratorの作業効率が上がる!【スクリプト】の使い方と作り方】の記事を参考にしてください。
では、スクリプトは下記の手順で使うことができます。
1.スクリプトを起動
2.項目に数値を入力
3.プレビューを確認
4.【OK】ボタンで実行
この手順を踏むことで、アートボード上にグリッドラインが引かれます。
【グリッドライン】スクリプトのコード紹介
作成したスクリプト「gridLine.jsx」のコードをご紹介します。
このスクリプトは、【プレビュー】機能を導入するために、
かなりの試行錯誤を経て作成しました。
もしもっと簡単なコードがあればご教示いただけると幸いです。
コメントアウトも追加していますので、カスタマイズする際の参考にしてください。
//パネル設定 ここから
var win = new Window('dialog','グリット表示',[200,200,450,480]);
win.titel = win.add('panel',[20,15,235,190],'グリット');
var checkBob01 = win.add('checkbox',[35,40,150,60],'グリッドを作成');
win.add('statictext',[35,67,135,85],'オフセット値:');
var offSet = win.add('edittext',[120,65,150,90],'0');
win.add('statictext',[160,67,190,85],'mm');
win.add('statictext',[35,92,100,120],'横 分割数:');
var split_W = win.add('edittext',[100,95,130,120],'5');
win.add('statictext',[145,92,195,120],'間隔:');
var margin_W = win.add('edittext',[180,95,210,120],'0');
win.add('statictext',[35,121,100,155],'縦 分割数:');
var split_H = win.add('edittext',[100,125,130,150],'5');
win.add('statictext',[145,121,195,155],'間隔:');
var margin_H = win.add('edittext',[180,125,210,150],'0');
win.add('statictext',[35,157,105,180],'レイヤー名:');
var layerName01 = win.add('edittext',[110,157,210,180],'gid');
var btnOK = win.add('button',[20,200,120,250],'OK',{name:'ok'});
var btnCancel = win.add('button',[130,200,230,250],'cancel',{name:'cancel'});
//パネル設定 ここまで
offSet.active = true;
//パネル 初期設定 ここから
checkBob01.value = true
//パネル 初期設定 ここまで
//設定プレビュー ここから
win.onShow = function(){ //.onShow:ウインドウが表示される時に発生するイベント
main();
app.redraw();
app.undo();
};
offSet.onChange = function(){ //.onChange:フォーム内の要素の内容が変更された時に起こるイベント
main();
app.redraw();
app.undo();
}
split_W.onChange = function(){
main();
app.redraw();
app.undo();
}
margin_W.onChange = function(){
main();
app.redraw();
app.undo();
}
split_H.onChange = function(){
main();
app.redraw();
app.undo();
}
margin_H.onChange = function(){
main();
app.redraw();
app.undo();
}
//設定プレビュー ここまで
//キャンセルボタンの処理ここから
btnCancel.onClick = function(){
win.close();
}
//キャンセルボタンの処理ここまで
//OKボタンの処理ここから
btnOK.onClick = function(){
win.close();
main();
};
//OKボタンの処理ここから
//グリッド作成ここから
function main(){
app.coordinateSystem = CoordinateSystem.ARTBOARDCOORDINATESYSTEM; //座標値をアートボード基準
var docObj = app.activeDocument;
//アートボード寸法 ここから
var rect = docObj.artboards[0].artboardRect;
var left = rect[0];
var top = rect[1];
var right = rect[2];
var bottom = rect[3];
//アートボード寸法 ここまで
//数値の変換ここから
var offset = point(offSet); //オフセット値
var splitW = changeText(split_W); //分割数 横
var splitH = changeText(split_H); //分割数 縦
var marginW = changeText(margin_W);//横方向 間隔
var marginH = changeText(margin_H);//縦方向 間隔
//数値の変換ここまで
if(checkBob01.value === true){
var width = (right - left) - (offset * 2); //オブジェクトの横サイズ
var height = (top - bottom) - (offset * 2); //オブジェクトの縦サイズ
var ww = (splitW - 1) * marginW;
var hh = (splitH - 1) * marginH;
var smallWidth = (width - ww) / splitW;
var smallHeight = (height - hh) /splitH;
try{
var newLay = lays.getByName('gid'); //グリッドレイヤーが存在する場合
} catch(e){
var lays = docObj.layers; //新しいレイヤーを作成する
var layObj = lays.add(); //レイヤー名を指定する
layObj.name = 'gid';
for(var y = 0; y < splitH; y++){
for(var x = 0; x < splitW; x++){
var rectObj = docObj.pathItems.rectangle(-offset - (y * (smallHeight + marginH)), offset + (x * (smallWidth + marginW)),smallWidth , smallHeight);
rectObj.guides = true ;//ガイド化
};
};
var slays = lays['gid'];
slays.locked = true; //レイヤーロック
};
};
};
//グリッド作成ここまで
win.show();//ウインドウパネルの表示
//パネルの文字列を変換ここから
function changeText(str){
var cText = eval(str.text);
return cText;
}
//パネルの文字列を変換ここまで
//数値の変換ここから
function point(num){
var setText = eval(num.text);
var mp = 2.8356;
var change = setText * mp;
return Math.round(change * 100) / 100;
};
//数値の変換ここまで
免責事項
・このページで配布しているスクリプトを無断で転送・販売・配布することは禁止です。
・アプリケーションのバージョンアップの内容によって利用できなくなる場合がありますのでご了承ください。
・このスクリプトによって起きるいかなる不具合や損害も、責任を負いません。ご利用の際は自己責任にてお願いいたします。
というわけで、今回は以上です。
<「Illustratorスクリプトで時短!グリッドライン作成」>を
最後まで読んでいただき有難う御座いました。