リンクをクリップボードにコピー
コピー完了
How would you write to select path item "a" through a script in a situation like the one shown in the attached image?
1 件の正解
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;
となります。
リンクをクリップボードにコピー
コピー完了
Try below:
app.activeDocument.activeLayer.pageItems.getByName("a").selected = true
リンクをクリップボードにコピー
コピー完了
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?
リンクをクリップボードにコピー
コピー完了
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");
なお、こちら日本のフォーラムなので、差し支えなければ日本語で投稿いただいて問題ありません。私を含む読み手側も、大半は翻訳を通す羽目になっていると思われます。
リンクをクリップボードにコピー
コピー完了
ありがとうございます!
すみません、私の質問の仕方が良くありませんでした。
getByNameではなく、レイヤーのインデックスで選択を可能でしょうか?
ちなみに、サブレイヤーが間に入っている場合も考慮できれば幸いです。
このような場合で、添付画像のCを選択するにはどうすればよいでしょうか..?
また、フォーラムの仕組みについてありがとうございます。
日本で投稿した場合は日本のフォーラムに投稿されつつ、海外にお住まいの方は自動で英語翻訳されて閲覧できているという事なのでしょうか?
リンクをクリップボードにコピー
コピー完了
ジャパンフォーラム
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」が返りました。
ごく明快な挙動だと思いますが、
そういうことではなくて、ということであれば、何かもう少し説明が必要なのだと思います。
リンクをクリップボードにコピー
コピー完了
あ、なんだか同じような内容で並行しちゃってるので、あとはTen Aさんに任せますw
リンクをクリップボードにコピー
コピー完了
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;
となります。
リンクをクリップボードにコピー
コピー完了
ありがとうございます! 動作の確認できました。
ちなみに、selected = true の場合、レイヤーの右側のOが選択選択されているようです。
ただ、アクションを通じた操作をスクリプトで行いたいので、青いラベルがつくほう(添付画像赤線)の選択状態を行うことは可能でしょうか?
リンクをクリップボードにコピー
コピー完了

