Skip to main content
Participant
6月 21, 2024 1:25 午前 UTC
解決済み

レイヤーパネルで現在選択している(複数)レイヤー等を一発でリネームするスクリプトを作りたい。

レイヤーパネルで現在選択しているレイヤーやオブジェクトの名前を一括でリネームするするクリプトを作りたいと思っています。

 

activeLayerは一つのレイヤーしか取れず、複数選択していた場合に使えませんでした。
選択Itemのparentだとレイヤーは取れるものの、Itemを選択していた場合にそれが取得できませんでした。

画像のように選択したものをひとまず取得する方法はございませんでしょうか?
このトピックへの返信は締め切られました。
sttk3解決!
Legend
6月 21, 2024 10:44 午前 UTC

パネルで選んだ複数のレイヤーの中身を選択するIllustrator用JavaScriptを書いたことがあります。

 

このスクリプトでは、アクションにて [新規サブレイヤーに集める] を実行し、できたサブレイヤーの中身を調べることで選択していたレイヤーを特定しています

返信数 3

sttk3解決!
Legend
6月 21, 2024 10:44 午前 UTC

パネルで選んだ複数のレイヤーの中身を選択するIllustrator用JavaScriptを書いたことがあります。

 

このスクリプトでは、アクションにて [新規サブレイヤーに集める] を実行し、できたサブレイヤーの中身を調べることで選択していたレイヤーを特定しています

翻訳
ajabon grinsmith
Community Expert
Community Expert
6月 21, 2024 12:11 午後 UTC

完全に一本とられた感…!

翻訳
ajabon grinsmith
Community Expert
Community Expert
6月 21, 2024 2:19 午前 UTC

ExtendScriptでは不可能ですね…

アートボード上で選択したオブジェクトから辿るしかなさそうです。

 

>Itemを選択していた場合にそれが取得できませんでした

ここがよくわからなかったのですが、「レイヤーパネル上でオブジェクトを選択(アートボード上では選択状態にならない、ハイライトさせただけ)」という意味だったでしょうか?

 

名前のある広いところの代わりに、右端の◯のさらに右の空きをクリックすれば、パネル上だけでなく実際に選択されたオブジェクトとなります。マウス操作がほんの少しこまかくなるだけで、手数(てかず)は変わりません。

それで運用してはどうでしょう?

 

以下余談ですが、activeLayerはあてにしないほうがよいです。

例として、alert(app.activeDocument.activeLayer.name); を実行した結果のスクショ2つです。

違いがわかるでしょうか。

オブジェクトが何も選択されていない状況で、レイヤーパネル上で複数のレイヤーをshiftキー併用でハイライトさせた場合の、最後にハイライトされたレイヤーがactiveLayerとなるです。

 

もう1つ出します。

これは、①レイヤー2をハイライト ②レイヤー4をshiftクリック(挟まれたレイヤー3も含めてハイライトされる)③レイヤー4を⌘+クリック(Windowsならctrl+クリック)してハイライト解除

してactiveLayerを取得したものです。これでもレイヤー4が返ります。

 

最後にもう1つ。

オブジェクト選択後に、上記①-③と同じ手順を踏んだものです。

そんなかんじです。

翻訳