効率アップ!ChatGPTでIllustratorのスクリプト作成に挑戦!〜レイヤーパレットで選択中のレイヤーをダイアログに入力した数字の数だけ複製するスクリプト〜

ChatGPTにIllustratorで使えるスクリプトを書いてもらうことができました。

// ダイアログを表示して入力値を取得する
var userInput = prompt("複製するレイヤーの数を半角英数で入力してください:", "");
var layerCount = parseInt(userInput);

// 選択したオブジェクトをコピーする
var doc = app.activeDocument;
var selection = doc.selection;

// 選択したオブジェクトが存在するか確認する
if (selection.length > 0) {
  var copyItem = selection[0].duplicate();
  var currentLayerName = getSelectedLayerName(); 

  // レイヤーを複製し、オブジェクトをペーストする
  for (var i = 0; i < layerCount; i++) {
    // 新しいレイヤーを作成する
    var newLayer = doc.layers.add();
    newLayer.name = currentLayerName + "-" + (i + 1);

    // オブジェクトを新しいレイヤーにペーストする
    doc.selection = null;
    app.activeDocument.activeLayer = newLayer;
    copyItem.duplicate(newLayer, ElementPlacement.PLACEATBEGINNING);
  }

  // 初期の選択状態に戻す
  doc.selection = null;
  selection[0].selected = true;
} else {
  alert("オブジェクトが選択されていません。");
}


// レイヤー名を取得する関数
function getSelectedLayerName() {
  var doc = app.activeDocument; // アクティブなドキュメントを取得
  var selection = doc.selection; // 選択されたオブジェクトを取得
  
  if (selection.length > 0) {
    var selectedLayer = selection[0].layer; // 最初の選択オブジェクトの所属レイヤーを取得
    return selectedLayer.name; // レイヤー名を返す
  } else {
    return "選択されたオブジェクトがありません。";
  }
}

実感としては、いきなり手数の多い処理を書いてもらおうとするとうまく動作しないことが多かったので、機能ごとにスクリプトを書いてもらって、それを自分で組み合わせる。というやり方が良いと思いました。

お時間有りましたら↓の続きを読むをクリックして全文を読んでいただけると嬉しいです。

続きを読む

ChatGPTでIllustratorのスクリプト作成に挑戦!〜選択したレイヤー以外を非表示にするスクリプト〜

↑の中央の矢印を左右にドラッグすると適用前後が表示されます。
// 選択したレイヤー以外を非表示にする関数
function hideOtherLayers() {
    var doc = app.activeDocument; // アクティブなドキュメントを取得
    var selectedLayer = doc.activeLayer; // アクティブなレイヤーを取得
  
    // レイヤーの数だけ繰り返し処理
    for (var i = 0; i < doc.layers.length; i++) {
      var currentLayer = doc.layers[i];
      
      // 選択したレイヤー以外を非表示にする
      if (currentLayer !== selectedLayer) {
        currentLayer.visible = false;
      }
    }
  }
  
  // 関数を実行
  hideOtherLayers();
  

お時間ある方は下記の続きを読むから一部始終を御覧ください。

続きを読む