クリエイター手抜きプロジェクト[329]Illustrator CS3〜6編 選択した図形の四隅から引き出し線を描く/古籏一浩

投稿:  著者:  読了時間:6分(本文:約2,700文字)


今回のスクリプトは、設計図などで多く使われる引き出し線を描画します。ここでは四角形を想定していますが、基本的に何でも四隅から引き出し線を描画することができます。これはIllustratorのオブジェクトが描画用に四隅の座標を保持するプロパティを持っているためです。

以下のスクリプトは選択した図形の四隅から引き出し線を描画します。





(function(){
var lineWidth = 40; // 40pt。横の引き出し線の長さ
var lineHeight = 20; // 20pt。縦の引き出し線の長さ
var offset = 5; // 5pt。図形と線との間隔
// 選択された図形の座標を取得して線を描画
var selObj = app.activeDocument.selection;
for(var i=0; i<selObj.length; i++){
var rect = selObj[i].geometricBounds;
var x1 = rect[0];
var y1 = rect[1];
var x2 = rect[2];
var y2 = rect[3];
//$.writeln("("+x1+","+y1+")-("+x2+","+y2+")");
drawLine(x1-lineWidth-offset, y1, x1-offset, y1);
drawLine(x1, y1+offset, x1, y1+lineHeight+offset);
drawLine(x2+offset, y1, x2+lineWidth+offset, y1);
drawLine(x2, y1+offset, x2, y1+lineHeight+offset);
drawLine(x1-lineWidth-offset, y2, x1-offset, y2);
drawLine(x1, y2-offset, x1, y2-lineHeight-offset);
drawLine(x2+offset, y2, x2+lineWidth+offset, y2);
drawLine(x2, y2-offset, x2, y2-lineHeight-offset);
}
})();
function drawLine(ax1, ay1, ax2, ay2){
var lineObj = app.activeDocument.pathItems.add();
lineObj.setEntirePath([[ax1, ay1],[ax2, ay2]]);
lineObj.stroked = true;
lineObj.strokeWidth = 1; // 1ptの線
lineObj.strokeColor = setColor(0, 0, 255, 100,100,0,0); // 青色の線
}
function setColor(r, g, b, c, m, y, k){
var dcs = app.activeDocument.documentColorSpace;
if (dcs == DocumentColorSpace.RGB){
var RGB = new RGBColor();
RGB.red = r;
RGB.green = g;
RGB.blue = b;
return RGB;
}
if (dcs == DocumentColorSpace.CMYK){
var CMYK = new CMYKColor();
CMYK.cyan = c;
CMYK.magenta = m;
CMYK.yellow = y;
CMYK.black = k;
return CMYK;
}
}

引き出し線の長さは、縦と横を別々指定できます。長さは以下の2行にある40、20の値を変更してください。

var lineWidth = 40; // 40pt。横の引き出し線の長さ
var lineHeight = 20; // 20pt。縦の引き出し線の長さ

また、図形と引き出し線の間隔は以下の行の5の数値を変更してください。

var offset = 5; // 5pt。図形と線との間隔

引き出し線の色は、以下の行の数値を変更してください。この数値は7つあり、最初がRGBの値、後の4つがCMYKの値になっています。RGBの3つの値は0〜255まで、CMYKの4つの値は0〜100までになっています。引き出し線描画時には、自動的にドキュメントのカラーモードを判定して対応する色(RGB, CMYK)を設定するようにしています。

lineObj.strokeColor = setColor(0, 0, 255, 100,100,0,0); // 青色の線

なお、Illustrator CS5以降では座標系の上下が逆になっていますが、このスクリプトは座標系の違いに関係なく動作します。


【古籏一浩】openspc@alpha.ocn.ne.jp
< http://www.openspc2.org/ >

Nexus 7が来たので何か書こうと思ったけど、まだ未開封。
Neuxs 7とともに台風もやってきた。でも、長野県中部には来なかったので一安心。台風で何か書こうと思ったけど案外と書くことがない......。一大イベントなのに。

・(道路)景観アーカイブ
< http://www.openspc2.org/travel/ >

・HTML5ガイドブック 増補改訂版【10/19発売予定】
< http://www.amazon.co.jp/dp/4844332937 >

・JavaScript逆引きハンドブック【発売中】
< http://www.amazon.co.jp/dp/4863541082 >

・すべての人に知っておいてほしい スマートフォンサイトデザインの基本原則
< http://www.amazon.co.jp/dp/4844362844 >

・10日で覚えるHTML5入門教室
< http://www.amazon.co.jp/dp/4798124184 >

・改訂5版JavaScriptポケットリファレンス
< http://www.amazon.co.jp/dp/4774148199 >

・ハイビジョン映像素材集【まめに追加してます】
< http://www.openspc2.org/HDTV/ >

・クリエイター手抜きプロジェクト
< http://www.openspc2.org/projectX/ >

・Adobe Illustrator CS3 + JavaScript 自動化サンプル集
< http://www.openspc2.org/book/PDF/Adobe_Illustrator_CS3_JavaScript_Book/ >
吉田印刷所の「印刷の泉」でも購入できるようになりました。