:note

含羞む蜂の巣

InDesignで蜂の巣のようなものをつくります。

含羞む蜂の巣 /images/2010/09/628-honey_comb.jpg

パラメータで大きさ調節できます。ハニー。

/*
蜂の巣のようなものを作る
"make honeycomb"
使い方:
最前面のドキュメントのサイズほぼいっぱいに、蜂の巣状に正六角形を並べていきます。
開いているドキュメントがなければ新規ドキュメントを勝手に作って実行します。
動作確認:OS10.4.11 InDesign CS3
milligramme
www.milligramme.cc
*/
if(app.documents.length == 0){
  var doc=app.documents.add();
}
var doc=app.documents[0];
var dWidth=doc.documentPreferences.pageWidth;
var dHeight=doc.documentPreferences.pageHeight;
//正六角形をつくる
var dg=60/360*Math.PI;
var L=5;//六角形の辺の長さ
var hexaPath=new Array();
hexaPath.push([0,0]);
hexaPath.push([L*Math.sin(dg),-L*Math.cos(dg)]);
hexaPath.push([L*Math.sin(dg)+L,-L*Math.cos(dg)]);
hexaPath.push([2*L,0]);
hexaPath.push([L*Math.sin(dg)+L,L*Math.cos(dg)]);
hexaPath.push([L*Math.sin(dg),L*Math.cos(dg)]);
var hexaGon=doc.polygons.add();
hexaGon.paths[0].entirePath=hexaPath;
hexaGon.strokeColor="Black";
//パターンをグループ化していくために、配列に最初の六角形を追加
var combArray=new Array();
combArray.push(hexaGon);
//横に複製していく偶数個目なら
for(var w=0; w < dWidth/(L*Math.sin(dg)+L); w+=2){
  var evenGon=hexaGon.duplicate (undefined, [(w+1)*(L*Math.sin(dg)+L),(L)*Math.cos(dg)]);
  combArray.push(evenGon);//グループ配列に追加
}
//横に複製していく奇数個目なら
for(var w=1; w < dWidth/(L*Math.sin(dg)+L); w+=2){
  var oddGon=hexaGon.duplicate (undefined,[(w+1)/2*(2*L+L),0]);
  combArray.push(oddGon);//グループ配列に追加
}
var combGroup=doc.groups.add(combArray);//グループ化する

//グループを複製していく
for(var h=0; h < dHeight/(L*Math.cos(dg)+L); h++){
  combGroup.duplicate(undefined,[0,(h+1)*(2*L*Math.cos(dg))]);
}
 
comments powered by Disqus
back to top