:note

ちくちく一筆書き

InDesignで糸でちくちく、一筆書き文字を描くようにするスクリプト。

ちくちく一筆書き /images/2010/09/654-stitch_work_outlinetext.jpg

文字をグラフィック化してそのポイントを利用して一つのパスにします。ベジェ曲線のコンロールハンドルもパスポイントも一切がっさい、一次配列として追加しているので、全て直線になります。一行テキスト専用です。テキストフレーム内の一行の部分か、中身が一行のテキストフレームを選択して実行してください。元のテキストは残りますのでお好みで後始末をしてください。とりあえず、線の種類は「直線ハッシュ」、予約色のシアンで生成しますので適当に変更してください。

/*
ちくちく一筆書き
"draw with a stroke"
使い方:
テキストを一行選択して実行、または1行テキストのテキストフレームを一つ選択して実行。
一筆書きのように文字をアウトライン化します。元テキストは残します。
動作確認:OS10.4.11 InDesign CS3
milligramme
www.milligramme.cc
*/
var doc=app.documents[0];
if(app.selection.length == 1){
var selObj=doc.selection[0];
if (selObj.lines.length == 1){
//$.writeln(selObj.constructor.name)
switch(selObj.constructor.name){
case "Text":
case "Character":
case "Word":
case "TextStyleRange":
case "Line":
case "Paragraph":
case "TextFrame":
var outTex=selObj.createOutlines(false); break;
default: alert("対象外オブジェクトです");
exit();
}
}else{
alert("一行だけテキストを選んでください");
exit();
}
var singleStrokeArray=new Array();
var releaseTex=outTex[0].releaseCompoundPath();//複合パスを解除
convertToSingleStroke(releaseTex);//function-1へ
var stitchObj=arrayToPath(doc, singleStrokeArray, true, false, true);//function-2へ
}
//function-1
//グラフィック化された文字のパスを配列につめこむ
function convertToSingleStroke(obj){
for(var j=0; j < obj.length; j++){
var pathObj=obj[j].paths;
for(var i=0; i < pathObj.length; i++){
pathObj[i].pathType=PathType.OPEN_PATH;
for(var k=0; k < pathObj[i].pathPoints.length; k++){
singleStrokeArray.push(pathObj[i].pathPoints[k].leftDirection);
singleStrokeArray.push(pathObj[i].pathPoints[k].anchor);
singleStrokeArray.push(pathObj[i].pathPoints[k].rightDirection);
}
}
releaseTex[j].remove();
}
}
//function-2
//配列をパスにする
function arrayToPath(document, array,PT, FC, SC){
var obj=document.rectangles.add();
obj.paths[0].entirePath=array;
if(PT == true){
obj.paths[0].pathType=PathType.OPEN_PATH;
}else{
obj.paths[0].pathType=PathType.CLOSED_PATH;
}
if(FC == true){
obj.fillColor="Black";
}else{
obj.fillColor="None";
}
if(SC == true){
obj.strokeWeight=0.1;
obj.strokeColor="Cyan";
}else{
obj.strokeWeight=0;
obj.strokeColor="None";
}
obj.strokeType=document.strokeStyles[11];//直線ハッシュ
}
 
comments powered by Disqus
back to top