:note

予約色以外で塗りたいとき+変形マトリックス復習

InDesignのスクリプトでランダム生成系の処理をした後で、オブジェクトの色を、[なし][紙色][黒][レジストレーション]などの予約色以外のスウォッチで塗りたいとき。

これらのスウォッチはパネル上を自由に移動できるので、必ずしもindexが0〜3とは限りません。となると不変なのはnameかidなので、それではじく。一度はじいてしまった方が変に条件式増えなくていい気がするのですが、もっと簡単な方法があるかも。

ついでに忘れがちな変形マトリックスをつかってみます。

↓元のオブジェクトをシェイプの変形しながら3回実行。不透明度を50%にしてみる。

予約色以外で塗りたいとき+変形マトリックス復習 /images/2010/09/696-use_unreserved_swatch.jpg
/*選択オブジェクトに変形をかけながら複製して色をランダムにつける。
"replicate the object, and colored and transformed"
使い方:
ドキュメントの真ん中へんにオブジェクトを置き、選択した状態で実行。
ランダムに変形移動複製しながら、スウォッチパネル上の色をランダムにぬります。
選択オブジェクトが1つ以外だったり、[なし][紙色][黒][レジストレーション]以外のスウォッチがない場合はなにもしません。
動作確認:OS10.4.11 InDesign CS3
milligramme
www.milligramme.cc
*/
var docObj=app.documents[0];
//ドキュメントの大きさ
var dWidth=docObj.documentPreferences.pageWidth;
var dHeight=docObj.documentPreferences.pageHeight;
//カスタムスウォッチリストを作成。ないと終了。
var un=unReservedSwatch(docObj);
if(un == undefined){
  exit();
}
//なんかオブジェクトがないと終了。
if(app.selection.length!=1){
  exit();
}

for(var count=0; count < 500; count++){
  //変形マトリクスオブジェクトをつくる
  var tranMatrix=app.transformationMatrices.add({
    clockwiseShearAngle: 45-90*Math.random(), //-45°〜45°の間でシアー
    counterclockwiseRotationAngle: 180-360*Math.random(), //-180°〜180°の間で回転
    horizontalScaleFactor: 0.2+1.8*Math.random(), //20〜200%で拡大縮小
    verticalScaleFactor: 0.2+1.8*Math.random(), //20〜200%で拡大縮小
    horizontalTranslation: dWidth*0.9-dWidth*1.8*Math.random(), //ドキュメントサイズの90%の範囲内で移動
    verticalTranslation: dHeight*0.9-dHeight*1.8*Math.random() //ドキュメントサイズの90%の範囲内で移動
    });
  var dup=app.selection[0].duplicate();
  dup.transform(
    CoordinateSpaces.PASTEBOARD_COORDINATES, //座標スペースはドキュメント全体
    AnchorPoint.CENTER_ANCHOR,//アンカーポイントはセンター
    tranMatrix,//変形マトリクス
    );
  //予約色以外の色でぬる。
  dup.fillColor=un[Math.floor(Math.random()*un.length)];
}

//[なし][紙色][黒][レジストレーション]以外のスウォッチがあれば、スウォッチ名の配列を返すFn。
function unReservedSwatch(doc){
  var swObj=doc.swatches;
  var otherSwList=new Array()
  if(swObj.length-4 > 0){
    for(var i=0; i < swObj.length; i++){
      switch(swObj[i].name){
        case "None":
        case "Paper":
        case "Black":
        case "Registration": break;
        default : otherSwList.push(swObj[i].name);
      }
    }
  }
  return otherSwList;
}
 
comments powered by Disqus
back to top