Skip to main content
Inspiring
April 17, 2023
Answered

オブジェクトのレイヤーを簡単に「最前面」「最背面」に移動する方法を教えてください。

  • April 17, 2023
  • 1 reply
  • 8736 views

重なり合ったオブジェクトを簡単に「最前面」や「最背面」に移動する方法はありませんか?
やり方わからず、レイヤーパネルで何十とあるレイヤーの中をドラッグして移動させて、階層をかえています。

    This topic has been closed for replies.
    Correct answer ajabon grinsmith

    レイヤー間の移動はショートカットやメニュー項目がないんですよね。

    最前面なら

    最上位レイヤーに新規オブジェクト作成、目的のオブジェクトとグループ作成、

    レイヤーパネルメニュー「元のレイヤーに戻してグループ解除」にチェックが入っていないのを確認してグループ解除、

    で可能ですが、最背面には応用ききません。

    で、スクリプト書いてみました。

    //最上位レイヤーの最前面へ
    function frontFunc(){
        var doc = app.activeDocument;
        var sel = doc.selection[0];
        sel.move(doc.layers[0]);
        sel.bringToFront(doc.layers[0].pageItems[0]);
    }
    
    app.doScript("frontFunc()", ScriptLanguage.JAVASCRIPT, [], UndoModes.FAST_ENTIRE_SCRIPT); 
    //最下位レイヤーの最背面へ
    function backFunc(){
        var doc = app.activeDocument;
        var sel = doc.selection[0];
        sel.move(doc.layers[-1]);
        sel.sendToBack(doc.layers[-1].pageItems[-1]);
    }
    
    app.doScript("backFunc()", ScriptLanguage.JAVASCRIPT, [], UndoModes.FAST_ENTIRE_SCRIPT); 

     

    選択された1個のオブジェクトを送ります。

    エラー回避処理はしてません。

    ターゲットが元から最上位/最下位レイヤーにあるとエラー出ます。

    それぞれショートカットを割り当てると良きです。

    1 reply

    ajabon grinsmith
    Community Expert
    ajabon grinsmithCommunity ExpertCorrect answer
    Community Expert
    April 17, 2023

    レイヤー間の移動はショートカットやメニュー項目がないんですよね。

    最前面なら

    最上位レイヤーに新規オブジェクト作成、目的のオブジェクトとグループ作成、

    レイヤーパネルメニュー「元のレイヤーに戻してグループ解除」にチェックが入っていないのを確認してグループ解除、

    で可能ですが、最背面には応用ききません。

    で、スクリプト書いてみました。

    //最上位レイヤーの最前面へ
    function frontFunc(){
        var doc = app.activeDocument;
        var sel = doc.selection[0];
        sel.move(doc.layers[0]);
        sel.bringToFront(doc.layers[0].pageItems[0]);
    }
    
    app.doScript("frontFunc()", ScriptLanguage.JAVASCRIPT, [], UndoModes.FAST_ENTIRE_SCRIPT); 
    //最下位レイヤーの最背面へ
    function backFunc(){
        var doc = app.activeDocument;
        var sel = doc.selection[0];
        sel.move(doc.layers[-1]);
        sel.sendToBack(doc.layers[-1].pageItems[-1]);
    }
    
    app.doScript("backFunc()", ScriptLanguage.JAVASCRIPT, [], UndoModes.FAST_ENTIRE_SCRIPT); 

     

    選択された1個のオブジェクトを送ります。

    エラー回避処理はしてません。

    ターゲットが元から最上位/最下位レイヤーにあるとエラー出ます。

    それぞれショートカットを割り当てると良きです。

    Inspiring
    April 17, 2023

    細かく対応してくださりありがとうございます。
    イラレのように簡単にはできないんですね。
    私はまだ初心者なので、今後活用するにあたって参考にさせていただきます。

    katayanagi51
    Community Expert
    Community Expert
    April 18, 2023

    ふと疑問に思ったのですけど,「イラレのように簡単に」ということは,「何十とあるレイヤー」はサブレイヤーのことでしょうか?

     

    付記:

    誤クリックでajabonさんのコメントの「正解」部分を押して解除してしまいました。押し直しました。すみませんすみません(汗)