スクリプトでミリからポイント、ptポイントからミリの計算

Illustrator(イラストレーター)やInDesign(インデザイン)のjavascriptで
ダイアログボックスなどでオブジェクトサイズなどをミリ指定させたい場合
スクリプト上でミリでなくpt(ポイント)で計算しなければならず
少し面倒ですよね。
しかもネットなど上で調べた数値を入れても誤差が少し出たりします。

気分的に正確な値で計算したいので、わりと?正確な方法を考えてみましたw
単に小数点何位までとか考えたくなかっただけっすけどね。

簡単に説明すると、、

ポイント換算用の係数=1ミリあたりのpt(ポイント)数
なので下記のようになります。

1ポイントは72分の1インチ
1インチは25.4ミリ 国際インチ (International inch)で1インチは正確に25.4ミリと定義されているようです。

式にすると
1ポイント = 1 ÷ 72 × 25.4
= 25.4 ÷ 72
となるので

◎ポイント換算用の係数 = 25.4 × 72 (値は0.35277777777778)

◎ミリ換算用の係数 = 1 ÷ ポイント換算用の係数 (値は2.83464566929134)

となります。

というわけで次の2行のようになりましたw

ptkansan = 25.4 / 72 ;
millikansan = 1 / ptkansan ;

※ptkansan:ミリからpt(ポイント)換算用の係数
※millikansan:pt(ポイント)からミリ換算用の係数

とりあえずは自分用メモ

背のある表紙の折りトンボを作成するスクリプト

ドキュメントサイズから
サイズを読み取ってダイアログから入力した背幅の折りトンボを
作成するスクリプトです。

var dia = new Window("dialog", "折りトンボ作成", [0,0,150,80]);
	dia.pane1 = dia.add("panel",[5,5,145,45],"背幅");

	dia.tex1 = dia.pane1.add("edittext",[10,5,100,25]);
	dia.add("statictext",[110,25,145,120],"mm");
	dia.bot1 = dia.add("button",[10,50,100,70],"実行", { name:"ok"});

	dia.center();
	dia.show();
    
docObj = app.activeDocument
pt=2.8346
sen=12.7*pt
haba=dia.tex1.text*pt

layerObj = app.activeDocument.activeLayer;

base = layerObj.pathItems.rectangle(0,0,docObj.width*2+haba+sen*2,docObj.height+sen*2);
box1 = layerObj.pathItems.rectangle(-sen,sen,docObj.width,docObj.height);

docObj.cropBox = base.visibleBounds;


base.remove()


box1.filled = true; //

box1.fillColor=box1.strokeColor

box1.stroked = false; //

	


docObj.width=box1.width*2+14*pt

box2 = box1.duplicate()
box2.top=box1.top

box1r=box1.left+box1.width

box2.left=box1r+haba



y1=box1.top+12*pt

y2=box1.top-box1.height-3*pt





tonbo(box1r,y1)
tonbo(box2.left,y1)

tonbo(box1r,y2)
tonbo(box2.left,y2)




function tonbo(x,y){
layerObj = app.activeDocument.activeLayer;
pObj = layerObj.pathItems.add();
pObj.setEntirePath([[x,y],[x,y-9*pt]]);
pObj.filled = false; // 塗りなし
pObj.stroked = true; // 線あり
pObj.strokeWidth = .3; // 線幅10ポイント
pObj.strokeColor=activeDocument.swatches["[レジストレーション]"].color 

}

サイズを指定してオブジェクトの大きさを揃えるスクリプト(縦横変倍)Script to align the size of object[Variable]

こちらは少しいじってわざと比率固定しないようにしたもの。
意味ないようにみえて以外と使えたりするw
楕円のパスを正円にしたり、、
長方形を正方形にしたり。。

pt=25.4/72

var dia = new Window("dialog", "オブジェクトの大きさを揃える(変倍)", [0,0,250,180]);
	dia.pane1 = dia.add("panel",[5,25,240,65],"サイズの基準");
	dia.radi1 = dia.pane1.add("radiobutton",[10,5,60,20],"タテ", );
	dia.radi2 = dia.pane1.add("radiobutton",[70,5,120,20],"ヨコ");
	dia.pane2 = dia.add("panel",[5,75,240,125],"サイズは");
	dia.tex1 = dia.pane2.add("edittext",[10,10,100,30]);
	dia.add("statictext",[110,100,240,120],"mm");
	dia.bot1 = dia.add("button",[10,140,100,170],"実行", { name:"ok"});
	dia.radi1.value=true;
	dia.center();
	dia.show();

sel = activeDocument.selection;
for (i=0; i<sel.length; i++)
{
	if(dia.radi1.value){
		kijyun=sel[i].height;
        	bairitu=dia.tex1.text/(kijyun*pt)*100;
	sel[i].resize(100, bairitu,true,true,true,true,false,Transformation.CENTER);
	}else{
		kijyun=sel[i].width;
        	bairitu=dia.tex1.text/(kijyun*pt)*100;
	sel[i].resize(bairitu, 100,true,true,true,true,false,Transformation.CENTER);
	}

}

サイズを指定してオブジェクトの大きさを揃えるスクリプト(縦横固定)Script to align the size of object[Fixed]

Illustrator CS3〜

選択した複数のオブジェクトの大きさを揃えるスクリプト

アイコンの大きさを揃えたりするのに使えるかも?

pt=25.4/72
var dia = new Window("dialog", "オブジェクトの大きさを揃える", [0,0,250,180]);
	dia.pane1 = dia.add("panel",[5,25,240,65],"サイズの基準");
	dia.radi1 = dia.pane1.add("radiobutton",[10,5,60,20],"タテ", );
	dia.radi2 = dia.pane1.add("radiobutton",[70,5,120,20],"ヨコ");
	dia.pane2 = dia.add("panel",[5,75,240,125],"サイズは");
	dia.tex1 = dia.pane2.add("edittext",[10,10,100,30]);
	dia.add("statictext",[110,100,240,120],"mm");
	dia.bot1 = dia.add("button",[10,140,100,170],"実行", { name:"ok"});
	dia.radi1.value=true;
	dia.center();
	dia.show();
	
sel = activeDocument.selection;
for (i=0; i<sel.length; i++)
{
	if(dia.radi1.value){
		kijyun=sel[i].height;
	}else{
		kijyun=sel[i].width;
	}
	bairitu=dia.tex1.text/(kijyun*pt)*100;
	sel[i].resize(bairitu, bairitu,true,true,true,true,bairitu,Transformation.CENTER);
}