パスオブジェクトから「簡易的な立体のようなもの」を作るスクリプト Illustrator

こんちくわ。
またへんてこなイラレスクリプト作ってみました。
一応効果の3D機能でも同じような事できるんだけど

ダイアログからぺんっぺんっと移動距離を入力すると
立体の面が作られて、(立体のようなもの)ができるというスクリプト

パスポイントの前後の関係でおかしな罫線がでてるところは面を前面にだしたりするとそれらしくなります。
ものすごーーい中途半端なスクリプトですので

注意)曲線あると大変な事になります!
注意)ハンドルでてるとおかしくなっちゃう!
注意)複合パスはやめてねえええええ!

という限られた条件でしか動きませんのでご了承ください。

あくまで「立体のようなもの」なので遠近感とかつけたければアンカーをきゅっきゅしてみてね

var sel=app.activeDocument.selection;
lay = app.activeDocument.activeLayer;
var dia = new Window("dialog", "簡易立体作成", [0,0,150,180]);
dia.pane1 = dia.add("panel",[5,10,140,60],"横方向");
dia.tex1 = dia.pane1.add("edittext",[10,10,100,30]);
dia.add("statictext",[110,30,240,50],"pt");    
dia.pane2 = dia.add("panel",[5,70,140,120],"縦方向");
dia.tex2 = dia.pane2.add("edittext",[10,10,100,30]);
dia.add("statictext",[110,90,240,110],"pt");
dia.bot2 = dia.add("button",[10,140,100,170],"実行", { name:"ok"});
dia.tex1.text=5;
dia.tex2.text=5;
dia.center();
dia.show();
var X=Number (dia.tex1.text);
var Y=Number (dia.tex2.text);
var Path=[];
Path[0]=sel[0];
Path[1]=sel[0].duplicate();
Path[1].left=Path[1].left+X;
Path[1].top=Path[1].top+Y;
for (var i=0; i<Path[0].pathPoints.length; i++){  
    Path[i+2] = lay.pathItems.add();
    var anc1 =Path[0].pathPoints[i].anchor;
    var anc2 =Path[1].pathPoints[i].anchor;
    if(i!=Path[0].pathPoints.length-1){
        var anc3 =Path[1].pathPoints[i+1].anchor;
        var anc4 =Path[0].pathPoints[i+1].anchor;
    }else{
        var anc3 =Path[1].pathPoints[0].anchor;
        var anc4 =Path[0].pathPoints[0].anchor;
    }
    Path[i+2].setEntirePath([anc1,anc2,anc3,anc4]);
    Path[i+2].closed=true;
}
Path[0].zOrder (ZOrderMethod.BRINGTOFRONT);

2色以上のカラーオブジェクトから配色セットを自動で作成するスクリプト Illustrator

おはようございます。
またイラレスクリプトの復習がてらこんなのを作ってみました。

ちょっと前のDTPの勉強会でヒントをえたので
2色以上のカラーオブジェクト(塗り)を選択して実行すると。
中間色の四角いオブジェクトがアートボードの左上のほうにずらーっと出来る感じ。
これをスウォッチグループに登録してもいいしスポイトでちゅっちょしてもよし。

計算であれこれしちゃったからわかりにくくなっちゃったかなあ。
またこうしたほうがってのがありましたらコメントまってます。

var lay = app.activeDocument.activeLayer
var sel =app.selection
var Tile_Count=0
if(sel.length>1){
    var dia = new Window("dialog", "配色セット作成", [0,0,250,110]);
    dia.pane1 = dia.add("panel",[5,10,240,60],"タイルの数");
    dia.tex1 = dia.pane1.add("edittext",[10,10,100,30]);
    dia.add("statictext",[110,30,240,50],"個");
    dia.bot1 = dia.add("button",[10,70,100,100],"実行", { name:"ok"});
    dia.tex1.text=5;
    dia.center();
    dia.show();
    for (i=0; i<(sel.length-1); i++){
        for (j=i+1; j<sel.length;j++){
            ColorTile(sel[i],sel[j],(25*Tile_Count),dia.tex1.text);
            Tile_Count++;
        }
    }
}else{
    alert ("カラーオブジェクトは2つ以上選択してください");
}
function ColorTile(Obj1,Obj2,y,Tx){
    var C_Keisuu=(Obj2.fillColor.cyan-Obj1.fillColor.cyan)/(Tx-1);
    var M_Keisuu=(Obj2.fillColor.magenta-Obj1.fillColor.magenta)/(Tx-1);
    var Y_Keisuu=(Obj2.fillColor.yellow-Obj1.fillColor.yellow)/(Tx-1);
    var K_Keisuu=(Obj2.fillColor.black-Obj1.fillColor.black)/(Tx-1);
    for (var i=0; i<Tx; i++){  
        var Tile =lay.pathItems.rectangle(-10-y,10+(i*25),20,20);
        Tile.stroked =false
        Tile.fillColor.cyan=Obj1.fillColor.cyan+(C_Keisuu*i);
        Tile.fillColor.magenta=Obj1.fillColor.magenta+(M_Keisuu*i);
        Tile.fillColor.yellow=Obj1.fillColor.yellow+(Y_Keisuu*i);
        Tile.fillColor.black=Obj1.fillColor.black+(K_Keisuu*i);
    }
}

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

こんにちは!
だいーぶ前にリクエストがあった件について
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 ")