オブジェクトの大きさを揃えるスクリプト(最小オブジェクトに揃える)

こんにちは!
だいーぶ前にリクエストがあった件について
1年近く放置してしまいすみません。。

以前作った
オブジェクトの大きさを揃えるスクリプト(最大オブジェクトに揃える)
をちょろっといじって

オブジェクトの大きさを揃えるスクリプト(最小オブジェクトに揃える)

を作りました。

var dia = new Window("dialog", "最小オブジェクトに揃える", [0,0,250,140]);
    dia.pane1 = dia.add("panel",[5,25,240,90],"サイズの基準");
    dia.radi1 = dia.pane1.add("radiobutton",[10,10,170,25],"最小タテ幅に揃える");
    dia.radi2 = dia.pane1.add("radiobutton",[10,35,170,50],"最小ヨコ幅に揃える");
    dia.bot1 = dia.add("button",[10,100,100,130],"実行", { name:"ok"});
    dia.radi1.value=true;
    dia.center();
    dia.show();
     
sel = activeDocument.selection;
var Tmax=10000;
var Ymax=10000;
var selSize=[];

for (i=0; i<sel.length; i++)
{
    if (sel[i].clipped) {
		selSize[i] = sel[i].pageItems[0];
	} else {
		selSize[i] = sel[i];
	}
    if(Tmax>selSize[i].height){Tmax=selSize[i].height}
    if(Ymax>selSize[i].width){Ymax=selSize[i].width}
}
 
 
 
for (i=0; i<sel.length; i++)
{
    if(dia.radi1.value){
        bairitu=Tmax/selSize[i].height*100;
    }else{
        bairitu=Ymax/selSize[i].width*100;
    }
     
    sel[i].resize(bairitu, bairitu,true,true,true,true,bairitu,Transformation.CENTER);
}

Illustratorで作成したトンボを自動で選択して裁ち落としサイズを調べるするスクリプト

とりあえずこちらもソースだけ。。
前々回のスクリプトと前回のスクリプトをただ合体させただけなり

activeDocument.selection = null;
 var PathObj = activeDocument.pathItems;
 for (var i=0,Len = PathObj.length; i < Len; i++){
 var TPath = PathObj[i];
 if(TPath.strokeColor.spot=="[Spot [レジストレーション]]" & Math.round(TPath.strokeWidth*1000) ==300){
 TPath.selected=true;
 }
 }
 var SelObj=activeDocument.selection;
 var MinX=SelObj[0].visibleBounds[0]
 var MaxX=SelObj[0].visibleBounds[2]
 var MinY=SelObj[0].visibleBounds[1]*-1
 var MaxY=SelObj[0].visibleBounds[3]*-1
 for (var i=1,Len = SelObj.length; i < Len; i++){ var SelB = SelObj[i].visibleBounds; if(MinX>SelB[0])MinX=SelB[0];
 if(MaxX<SelB[2])MaxX=SelB[2]; if(MinY>SelB[1]*-1)MinY=SelB[1]*-1;
 if(MaxY<SelB[3]*-1)MaxY=SelB[3]*-1;
 }
X=Math.round((MaxX-MinX-72)*(25.4 /72)*1000)/1000
 Y=Math.round((MaxY-MinY-72)*(25.4 /72)*1000)/1000
 alert ("裁ち落としサイズ:W"+X+"mm×H"+Y+"mm ")

選択したトンボから裁ち落としサイズを調べるするスクリプト

とりあえずソースだけ

var SelObj=activeDocument.selection;
 var MinX=SelObj[0].visibleBounds[0]
 var MaxX=SelObj[0].visibleBounds[2]
 var MinY=SelObj[0].visibleBounds[1]*-1
 var MaxY=SelObj[0].visibleBounds[3]*-1
 for (var i=1,Len = SelObj.length; i < Len; i++){
 var SelB = SelObj[i].visibleBounds;
 if(MinX>SelB[0])MinX=SelB[0];
 if(MaxX<SelB[2])MaxX=SelB[2];
 if(MinY>SelB[1]*-1)MinY=SelB[1]*-1;
 if(MaxY<SelB[3]*-1)MaxY=SelB[3]*-1;
 }
X=Math.round((MaxX-MinX-72)*(25.4 /72)*1000)/1000
 Y=Math.round((MaxY-MinY-72)*(25.4 /72)*1000)/1000
 alert ("裁ち落としサイズ:W"+X+"mm×H"+Y+"mm ")

Illustratorで作成したトンボを自動で選択するスクリプト

自分メモ的なあれだけど、
Illustratorで作成したトンボを選択するスクリプト
次はこれから実サイズを逆算しよかななんて思ってます。

activeDocument.selection = null;
var PathObj = activeDocument.pathItems;
for (var i=0,Len = PathObj.length; i < Len; i++){
	var TPath = PathObj[i];
	if(TPath.strokeColor.spot=="[Spot [レジストレーション]]" & Math.round(TPath.strokeWidth*1000) ==300){
		TPath.selected=true;
 	}
 }

 

【ポイント1】

activeDocument.selection = null;

洗濯介助、、、、、じゃなくて これで現在の選択を解除してます。

 

【ポイント2】

TPath.strokeColor.spot=="[Spot [レジストレーション]]"

これはまあ、、みたとおりパスアイテムの線色がレジストレーションかどうかってやつね。(雑

 

【ポイント3】

Math.round(TPath.strokeWidth*1000) ==300

こちらは線幅が0.3ptかどうかの判断なんだけど
正確なトンボの線幅は0.30000001192093ptになってて

TPath.strokeWidth==0.3

では真(true)にならないので

1000倍してこれをMath.round( )で四捨五入して
多少精度をあげてみてみた。
もっといい方法あるかもだけど。

オブジェクトの大きさを揃えるスクリプト(最大オブジェクトに揃える)

おひさしぶりです。

今回ある方よりアドバイスをいただいたので
以前に作ったオブジェクトのサイズを揃えるスクリプトを改良して
選択したオブジェクトを縦横比は固定したまま一番大きいオブジェクトに揃えるというスクリプトを作ってみました。
ダイアログボックスでタテ規準かヨコ規準かを選べます。

とりあえずはコードのみ、、、

var dia = new Window("dialog", "最大オブジェクトに揃える", [0,0,250,140]);
	dia.pane1 = dia.add("panel",[5,25,240,90],"サイズの基準");
	dia.radi1 = dia.pane1.add("radiobutton",[10,10,170,25],"最大タテ幅に揃える");
	dia.radi2 = dia.pane1.add("radiobutton",[10,35,170,50],"最大ヨコ幅に揃える");
	dia.bot1 = dia.add("button",[10,100,100,130],"実行", { name:"ok"});
	dia.radi1.value=true;
	dia.center();
	dia.show();
	
sel = activeDocument.selection;
var Tmax=0;
var Ymax=0;
for (i=0; i<sel.length; i++)
{
	if(Tmax<sel[i].height){Tmax=sel[i].height}
	if(Ymax<sel[i].width){Ymax=sel[i].width}
}



for (i=0; i<sel.length; i++)
{
	if(dia.radi1.value){
		bairitu=Tmax/sel[i].height*100;
	}else{
		bairitu=Ymax/sel[i].width*100;
	}
	
	sel[i].resize(bairitu, bairitu,true,true,true,true,bairitu,Transformation.CENTER);
}

遅くなりましたがマスク対応しました!!!
比較しやすいように元のコードも残しておきます
下のコードがマスク対応したものです。

var dia = new Window("dialog", "最大オブジェクトに揃える", [0,0,250,140]);
    dia.pane1 = dia.add("panel",[5,25,240,90],"サイズの基準");
    dia.radi1 = dia.pane1.add("radiobutton",[10,10,170,25],"最大タテ幅に揃える");
    dia.radi2 = dia.pane1.add("radiobutton",[10,35,170,50],"最大ヨコ幅に揃える");
    dia.bot1 = dia.add("button",[10,100,100,130],"実行", { name:"ok"});
    dia.radi1.value=true;
    dia.center();
    dia.show();
     
sel = activeDocument.selection;
var Tmax=0;
var Ymax=0;
var selSize=[];

for (i=0; i<sel.length; i++)
{
    if (sel[i].clipped) {
		selSize[i] = sel[i].pageItems[0];
	} else {
		selSize[i] = sel[i];
	}
    if(Tmax<selSize[i].height){Tmax=selSize[i].height}
    if(Ymax<selSize[i].width){Ymax=selSize[i].width}
}
 
 
 
for (i=0; i<sel.length; i++)
{
    if(dia.radi1.value){
        bairitu=Tmax/selSize[i].height*100;
    }else{
        bairitu=Ymax/selSize[i].width*100;
    }
     
    sel[i].resize(bairitu, bairitu,true,true,true,true,bairitu,Transformation.CENTER);
}