2017-12-11 5 views
0

私は、ExtendScript ToolkitのJavaScriptコードを使用して、Illustratorで必要なものすべてを選択することができました:いくつかのレイヤーでたくさんのもの(テキスト、パス、シンボルなど)今度は同じ方法でサイズを変更してから移動します。スクリプトを使用してIllustratorで選択範囲にトランスフォームを適用する方法

私はコードで1つのオブジェクトに変換を適用する方法を知っていますが、非常に長くなり、各要素のアンカーポイントから変換が適用されるため、各要素をループしないようにしたいので、結束しないでください。

私はIllustrator UIのようにする方法を探しています:右クリック>変形>スケール。私はコード(javascript)からアクセスできるこのようなUIコマンドはありますか?

答えて

0

私はあなたが何らかの形でループしていなくても逃げることができるかどうかわかりません。グループにあなたの選択を入れてもらえない場合は、ループするよりも速いかもしれないグループにあなたの選択をループする方が早いかもしれません。グループオブジェクトを使用すると、グループオブジェクト .scale()と.translate()を実行できます。 ここに私のスクリプトから抜粋したスニペットがあります。

#target "illustrator" 
var aiApp = app.activeDocument; 
var aSelection = aiApp.selection; 
var aGroup = app.activeDocument.groupItems.add(); 

for (i=0; i < aSelection.length; i++){ 
aSelection[i].move(aGroup, ElementPlacement.INSIDE); 
aSelection[i].move(aGroup, ElementPlacement.PLACEATEND); 
} 
//moves up 700 points and scales by 200 
aGroup.translate(0,700) 
aGroup.resize(200, 200, true , true, true, true, 200) 
+0

非常に良いアイデアですしながら、実施するのが最も簡単です。すべてがグループ化されると、変換はより簡単になります。しかし、層の名前が重要なので、私は層の中に物事を保つ必要があります。 – superrache

1

はこれを行うには、少なくとも3つの方法があります。

    スクリプトからの変換を必要として、( DoScriptによる)これらのアクションをプレイ実行
  1. 録音AIアクション
  2. グループ選択したオブジェクト@Daneが提案するように必要な変換をグループに適用します。

    For i = Index_Lo To Index_Hi 
        Call Layers_Backup.Add(Item:=SelectedItems(i).Layer, Key:=Format(i)) 
        Call SelectedItems(i).Move(Temp_Group, AiElementPlacement.aiPlaceAtEnd) 
    Next i 
    
    Call Temp_Group.Resize(scaleX:=120, scaleY:=120, changeLineWidths:=120) 
    
    For i = Index_Lo To Index_Hi 
        Call SelectedItems(i).Move(Layers_Backup(Format(i)), AiElementPlacement.aiPlaceAtEnd) 
    Next i 
    
  3. PostMessage (..., WM_COMMAND, ..., ...)のような、SendDlgItemMessageFindWindowExなど)

    呼び出しWindows API関数を埋める表示する:下のVBAの例に示すように、オブジェクトは、元のレイヤーに復元できるようにバックアップするLayerオブジェクトのプロパティを必要とします実行に必要なAIは、ダイアログボックスを変換し、

IMHO、項目#1は、項目#2がグループ私の選択に最も信頼性の高い

関連する問題