終了

select path item with script

エクスプローラー ,
Apr 14, 2024 Apr 14, 2024

How would you write to select path item "a" through a script in a situation like the one shown in the attached image?

 

shusaku_tr_0-1713120298817.pngexpand image

 

キーワード
SDK , スクリプティング , ツール
895
翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines

correct answers 1 件の正解

Community Expert , Apr 14, 2024 Apr 14, 2024

layersはlengthプロパティを持ちます。レイヤー上でlengthを参照することで当該レイヤーがサブレイヤーを持つかどうかを判断可能です。また、サブレイヤーが存在しない状態であれば当該レイヤーを展開した状態で見えているのはpageItemsです。
で、示されたレイヤーパネルの状態ではa,b,c,dはpageObjectsとして存在し、サブレイヤーではありません。

各要素へのアクセスは、a,c,dでは

app.activeDocument.activeLayer.pageItems[0].selected = true;


bはサブレイヤー上の要素ですから

app.activeDocument.activeLayer.layers[0].pageItems[0].selected = true;


となります。

翻訳
Community Expert ,
Apr 14, 2024 Apr 14, 2024

Try below:

 

app.activeDocument.activeLayer.pageItems.getByName("a").selected = true
翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Apr 14, 2024 Apr 14, 2024

Thank you!

I'm sorry, my question wasn't very clear. Instead of using getByName, is it possible to select by layer index?

By the way, if there are sub-layers involved, it would be great to consider those too.

In such a case, how would one go about selecting C?

shusaku_tr_0-1713143245057.pngexpand image

 

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Apr 14, 2024 Apr 14, 2024

In the attached image, all pageItems are in the selected state, so if you are sure that your question means "I want only pathItem "a" to be selected", try the following code.

 

var doc = app.activeDocument;
doc.selection = doc.activeLayer.pageItems.getByName("a");

 

なお、こちら日本のフォーラムなので、差し支えなければ日本語で投稿いただいて問題ありません。私を含む読み手側も、大半は翻訳を通す羽目になっていると思われます。

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Apr 14, 2024 Apr 14, 2024

ありがとうございます! 

すみません、私の質問の仕方が良くありませんでした。

getByNameではなく、レイヤーのインデックスで選択を可能でしょうか? 

ちなみに、サブレイヤーが間に入っている場合も考慮できれば幸いです。 

このような場合で、添付画像のCを選択するにはどうすればよいでしょうか..?

 

また、フォーラムの仕組みについてありがとうございます。

日本で投稿した場合は日本のフォーラムに投稿されつつ、海外にお住まいの方は自動で英語翻訳されて閲覧できているという事なのでしょうか?

shusaku_tr_0-1713143749689.pngexpand image

 

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Apr 14, 2024 Apr 14, 2024

ジャパンフォーラム

https://community.adobe.com/t5/jp/ct-p/jp?profile.language=ja

グローバルフォーラム(English)

https://community.adobe.com/?profile.language=en

と、いくつかの言語圏ごとにフォーラムが用意されておりまして、

仮に、日本よりも海外の方がわかりそうな内容の場合は日本のユーザーがあちらのフォーラムを利用することもまったく問題ありません。逆も然りです。

また、私らモデレーターの判断でスレッドを移動する場合もあります。

日本語でEnglishフォーラムに投稿した場合、向こうのモデレーターが(質問をよく読まずに、を含む)ジャパンフォーラムに移動してくれてしまうことが多いです。

自動翻訳はされません。各ユーザーが任意で投稿下部の「翻訳(Translate)」を押して言語を選択して、はじめて翻訳されるかんじです。

 

あらためてご質問の件、

alert(app.activeDocument.activeLayer.pageItems.length);

 これで 3 が返ります。つまりサブレイヤー b が含められていないということになります。

この上で、

alert(app.activeDocument.activeLayer.pageItems[1].name);

 とすると「c」が返りました。

ごく明快な挙動だと思いますが、

そういうことではなくて、ということであれば、何かもう少し説明が必要なのだと思います。

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Apr 14, 2024 Apr 14, 2024

あ、なんだか同じような内容で並行しちゃってるので、あとはTen Aさんに任せますw

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Apr 14, 2024 Apr 14, 2024

layersはlengthプロパティを持ちます。レイヤー上でlengthを参照することで当該レイヤーがサブレイヤーを持つかどうかを判断可能です。また、サブレイヤーが存在しない状態であれば当該レイヤーを展開した状態で見えているのはpageItemsです。
で、示されたレイヤーパネルの状態ではa,b,c,dはpageObjectsとして存在し、サブレイヤーではありません。

各要素へのアクセスは、a,c,dでは

app.activeDocument.activeLayer.pageItems[0].selected = true;


bはサブレイヤー上の要素ですから

app.activeDocument.activeLayer.layers[0].pageItems[0].selected = true;


となります。

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Apr 14, 2024 Apr 14, 2024

ありがとうございます! 動作の確認できました。

ちなみに、selected = true の場合、レイヤーの右側のOが選択選択されているようです。

ただ、アクションを通じた操作をスクリプトで行いたいので、青いラベルがつくほう(添付画像赤線)の選択状態を行うことは可能でしょうか?

shusaku_tr_0-1713150158709.pngexpand image

 

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Apr 14, 2024 Apr 14, 2024
最新
スクリプトからはパネルの状態を更新できません。
翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines