パスオブジェクトから「簡易的な立体のようなもの」を作るスクリプト 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);

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 ")

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( )で四捨五入して
多少精度をあげてみてみた。
もっといい方法あるかもだけど。

Webサイト製作について

基本僕はDTPの仕事しています。
でも、、、
これからはWEBサイトも作れるようにならないといけないなーと
勉強していこうかなーなんて思ってます。

HTMLやCSSは若干かじってはいるんですけど、
所詮かじった程度。

とりあえず基本的なことから
スタートしようと思ってます。
仕事で扱えるレベルになれたらいいな。
いやなろう。