クリエイター手抜きプロジェクト[505]Adobe Illustrator CS6〜CC 2017編 選択したオブジェクトにガイドを引く/古籏一浩

投稿:  著者:  読了時間:8分(本文:約3,600文字)



今回は、Illustratorで選択したオブジェクトにガイドを引くスクリプトです。





// 選択したオブジェクトにガイドを引く
var margin = null; // 15とか数値にすると固定したマージンのガイドになる
var guideLineWidth = 0.5; // ガイドラインの幅。ptで指定
var guideLineColor = setRGBColor(0, 255, 255); // ガイドラインの色。RGBの順番で指定
var guideLength = 20; // 20pt;これはガイドの線からの長さ。はみ出してる長さ
(function (){
if (margin === null){
margin = prompt("ガイドのマージンをptで入れてください", 0);
if (!margin){ return; } // キャンセルされたら何もしない
margin = parseFloat(margin); // 小数値にも対応させるため。単位はカットし強制的にptにする
}
var selObj = app.activeDocument.selection;
for(var i=0; i<selObj.length; i++){
var rect = selObj[i].geometricBounds;
var left = rect[0];
var top = rect[1];
var right = rect[2];
var bottom = rect[3];
drawLine(left+margin, top+guideLength, left+margin, bottom-guideLength);
drawLine(right-margin, top+guideLength,right-margin, bottom-guideLength);
drawLine(left-guideLength, top-margin, right+guideLength, top-margin);
drawLine(left-guideLength, bottom+margin, right+guideLength, bottom+margin);
}
})();
// 直線を引く関数
function drawLine(x1, y1, x2, y2){
try{
var line = app.activeDocument.pathItems.add();
}catch(e){
alert("レイヤーがロックされているかもしれません。確認してください");
return;
}
line.setEntirePath([[x1, y1], [x2, y2]]);
line.stroke = true;
line.strokeWidth = guideLineWidth;
line.strokeColor = guideLineColor;
}
// 色を指定する関数
function setRGBColor(r, g, b){
var color = new RGBColor();
color.red = r;
color.green = g;
color.blue = b;
return color;
}

マージンをptでなくcmやmmなどでも指定したい場合は、以下のスクリプトになります。また、ガイドの長さは2の16乗なのでページいっぱいになります。


// 選択したオブジェクトにガイドを引く。単位付き
var margin = null; // 15とかの数値にすると固定したマージンのガイドを引くことができます
var guideLineWidth = 0.5; // ガイドラインの幅。ptで指定
var guideLineColor = setRGBColor(0, 255, 255); // ガイドラインの色。RGBの順番で指定
var guideLength = Math.pow(2, 16); // ガイドの長さ
(function (){
if (margin === null){
margin = prompt("ガイドのマージンをptで入れてください", "12.5mm");
if (!margin){ return; } // キャンセルされたら何もしない
margin = UnitValue(margin); // 小数値にも対応させるため。単位はカットし強制的にptにする
margin = margin.as("pt"); // ptに変換
}
var selObj = app.activeDocument.selection;
for(var i=0; i<selObj.length; i++){
var rect = selObj[i].geometricBounds;
var left = rect[0];
var top = rect[1];
var right = rect[2];
var bottom = rect[3];
drawLine(left+margin, top+guideLength, left+margin, bottom-guideLength);
drawLine(right-margin, top+guideLength,right-margin, bottom-guideLength);
drawLine(left-guideLength, top-margin, right+guideLength, top-margin);
drawLine(left-guideLength, bottom+margin, right+guideLength, bottom+margin);
}
})();
// 直線を引く関数
function drawLine(x1, y1, x2, y2){
try{
var line = app.activeDocument.pathItems.add();
}catch(e){
alert("レイヤーがロックされているかもしれません。確認してください");
return;
}
line.setEntirePath([[x1, y1], [x2, y2]]);
line.stroke = true;
line.strokeWidth = guideLineWidth;
line.strokeColor = guideLineColor;
line.guides = true; // ガイドラインにする
}
// 色を指定する関数
function setRGBColor(r, g, b){
var color = new RGBColor();
color.red = r;
color.green = g;
color.blue = b;
return color;
}


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

来週、「フランダースの犬」が最終回。そのひとつ前の回では、ネロがコゼツ(地主)の旦那が落としたお金を届けた後、アロアの家にパトラッシュを残して出て行ってしまう。その後、ルーベンスの絵を見ながら教会で死んでしまう……と。ここまでの一連の流れが最終回だと思っていたのだが違ってた。

最終回のひとつ前の回では、パトラッシュを残して出て行ってしまうだけだった。ということは、最終回の最後の5分ほどの有名なシーン以外は一体どうなってたんだろう。かつて見たはずなのに、まったく記憶にない……。


まだ作成途中ですが、Adobe InDesign CS6のJavaScriptリファレンスです。
何らかの参考にでもなれば。

・InDesign JavaScript Reference
http://www.openspc2.org/reibun/InDesignCS6/ref/

・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936/
[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/

・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591/
https://www.amazon.co.jp/dp/4844397605/

・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP/
http://digiconcart.com/dccartstore/cart/info/2561/218591/

・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/

・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/

・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/

・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/

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