Illustrator CS3〜6編 選択した図形の四隅から引き出し線を描く

今回のスクリプトは、設計図などで多く使われる引き出し線を描画します。ここでは四角形を想定していますが、基本的に何でも四隅から引き出し線を描画することができます。これは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以降では座標系の上下が逆になっていますが、このスクリプトは座標系の違いに関係なく動作します。

[サンプルをダウンロード]