クリエイター手抜きプロジェクト[302]Adobe Illustrator CS3/CS4編 カラー見本を作成する(2)/古籏一浩

投稿:  著者:  読了時間:9分(本文:約4,200文字)


今回も前回と同じネタです。ただし、今回のスクリプトはIllustrator CS3/CS4で、なおかつCMYKカラーモード用になっています。Illustrator CS3/CS4とCS5では原点の位置が異なるため、そのまま実行すると用紙サイズからはみだしてしまうことがあります。ここらへんは、基準となる座標を調整することで対処しています。

実際のスクリプトは以下の通りです。使い方は同じですが、用意するタブ区切りデータは以下のようにCMYK、4つの値で構成されています。0〜100%範囲であれば整数値でも小数値でも構いません。

●タブ区切りデータ
0 50 100 0
0 90 70 0
0 0 100 0
0 70 20 0
70 10 0 0



●スクリプト
// カラーサンプルブロックを描画する(CS3/CS4, CMYK用)
var myFont = app.textFonts["Arial-Black"];
var defFont = app.textFonts["Helvetica"];
(function(){
  if (app.documents.length == 0){
    alert("ベースとなるドキュメントを新規に作成してください");
    return;
  }
  var saveFolder = Folder.selectDialog("保存先のフォルダを指定してください");
  if (!saveFolder){ return; }
  var tabFile = File.openDialog("タブ区切りファイルを指定してください");
  if (!tabFile){ return; }  // キャンセルされたら何もしない
  var flag = tabFile.open("r");
  if (!flag){
    alert("タブ区切りファイルが開けません");
    return;
  }
  var baseX = 20;
  var baseY = app.activeDocument.height - 50; // CS3/CS4
  var boxW = 120; // 四角形の横幅
  var boxH = 100; // 四角形の縦幅
  var dx = 200;  // 横の間隔(boxW + オフセット)
  var dy = 200;  // 縦の間隔(boxH + オフセット)
  var count = 1; // ファイル名を示すカウンタ変数
  // ファイルの終わりまで繰り返す
  while(true){  // 最初に全てのパスなどを削除
    for(var i=app.activeDocument.pageItems.length-1; i >=0; i--){
      try { app.activeDocument.pageItems[i].remove(); }catch(e){}
    }
    for(var yy=0; yy< 4; yy++){
      for(var xx=0; xx< 3; xx++){
        var data = tabFile.readln().split(String.fromCharCode(9));
        if (data.length == 0){ return; }  // 空行の場合も終了
        $.writeln(data[0]+","+data[1]+","+data[2]);
        drawRect(baseX+xx*dx, baseY+yy*-dy, boxW, boxH, setColor(data[0], data[1], data[2], data[3]));
        if (tabFile.eof == true){
          saveFile(saveFolder.fullName+"/"+count+".ai");
          return;
        } // ファイルの終わり
      }
    }
    saveFile(saveFolder.fullName+"/"+count+".ai");
    count = count + 1; // 1つずつ増やす。ページ数に合わせて数値を変えてもOK
  }
  
})();
// ファイルを保存する
function saveFile(filename){
  var savefile = new File(filename);
  activeDocument.saveAs(savefile);
}  
// 指定した色で四角形と文字を描く
function drawRect(x, y, w, h, tempColor){
  var layerObj = app.activeDocument.activeLayer;
  // 上の大きい四角形を描く
  var rect = layerObj.pathItems.rectangle(y, x, w, h/2);
  rect.filled = true; // 塗りあり
  rect.stroked = false; // 線なし
  rect.fillColor = tempColor; // 塗りの色を指定
  // 中央の四角形を描く
  rect = layerObj.pathItems.rectangle(y-h/2-2, x, w, h/4);
  rect.filled = true; // 塗りあり
  rect.stroked = false; // 線なし
  rect.fillColor = tempColor; // 塗りの色を指定
  // 下の四角形を描く
  rect = layerObj.pathItems.rectangle(y-h/2-h/4-4, x, w, h/4);
  rect.filled = true; // 塗りあり
  rect.stroked = false; // 線なし
  rect.fillColor = tempColor; // 塗りの色を指定
  // BLACKとWHITEの文字を描く
  drawText(x+8, y-h/2-h/4+2, "BLACK", 20, myFont, setColor(0, 0, 0, 100));
  drawText(x+8, y-h, "WHITE", 20, myFont, setColor(0, 0, 0, 0));
  // RGBの文字と値を描画
  drawText(x+w+4, y-12, "C "+tempColor.cyan, 9, defFont, setColor(0, 0, 0, 100));
  drawText(x+w+4, y-22, "M "+tempColor.magenta, 9, defFont, setColor(0, 0, 0, 100));
  drawText(x+w+4, y-32, "Y "+tempColor.yellow, 9, defFont, setColor(0, 0, 0, 100));
  drawText(x+w+4, y-42, "K "+tempColor.black, 9, defFont, setColor(0, 0, 0, 100));
}
function setColor(c, m, y, k){
  var tempColor = new CMYKColor();
  tempColor.cyan = c;
  tempColor.magenta = m;
  tempColor.yellow = y;
  tempColor.black = k;
  return tempColor;
}
function drawText(x, y, str, fsize, font, color){
  var textObj = activeDocument.textFrames.add();
  textObj.contents = str;
  textObj.paragraphs[0].fillColor = color;
  textObj.paragraphs[0].size = fsize;
  textObj.paragraphs[0].textFont = font;
  textObj.translate(x, y);
}


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

iBooks Author。iPad+iBooksで閲覧できる本(教科書)が簡単に作れるようですが、HTML5のコードも埋め込めるみたい。実際にはDashcodeで作成したDashboard Widgetをインタラクティブ要素として埋め込まないといけません。

が、Widgetであってもファイルにアクセスするものや、ネットワークを使用するものは動きません。RSSを利用したものはもちろん駄目。株価や為替情報なども駄目。ゲームなどでもスコアや設定をファイルに保存するものも駄目です。

制限はあるものの、本の中にインタラクティブな要素を簡単に埋め込めるのは面白いでしょう。こういうiBooksで使えるWidgetを販売するというところも出て来るかもしれません。

< http://www.openspc2.org/reibun/iBooks_Author/ >

・クリエイター手抜きプロジェクト【2011年12月分まで掲載しました】
< http://www.openspc2.org/projectX/ >

・毎度おなじみASCII.jpの連載
「iOS 5の新機能で作る「パノラマビュー」アプリ」
< http://ascii.jp/elem/000/000/662/662804/ >

・新JavaScript例文辞典
< http://www.openspc2.org/reibun/javascript2/ >

・Google API Expertが解説する Google Maps APIプログラミングガイド
< http://www.amazon.co.jp/dp/4844331167/ >

・jQuery Mobile 1.0例文辞典
< http://www.openspc2.org/reibun/jQuery_Mobile/1.0/ >

・CSS3(スタイルシート Level 3)例文辞典
< http://www.openspc2.org/reibun/CSS3/ >

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

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

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

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