終了

一定の長さ以下の線を選択する方法

Community Beginner ,
Sep 22, 2018 Sep 22, 2018

イラストレーターCC2018を使っています。複数の線が多数あり、その中で長さが15px以下の線を削除したいのですが、そのように一定の長さ以下の線を選択する方法はありますか?

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

選択メニュー内の「共通」「オブジェクト」が自動的に特定条件の共通オブジェクト選択設定になっていますが、

線の長さとしてはそれに関わる設定がないことから、できない、という話になってきます。

可能性があるとしたらスクリプトでの処理で考えることにはなりますけど、

それでも斜線などの判定をどうするのか。という点があるので、難しいのではないかと思います。

ちなみに孤立点は「余分なポイント」で処理が可能ですが、あるとしたらそこまで、ということになりますし、

15px程度あるものが余分かというかはおそらく作成者にしかわからない範囲のように思いますがどうでしょうか。

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

スクリプトでよければ以下を使用してみてください。

var actdoc = app.activeDocument;

var itm, x1, y1, x2, y2, distance;

for (var i = 0; i < actdoc.pathItems.length; i++) {

  itm = actdoc.pathItems;

  if (itm.pathPoints.length == 2) {

    x1 = itm.pathPoints[0].anchor[0];

    y1 = itm.pathPoints[0].anchor[1] * -1;

    x2 = itm.pathPoints[1].anchor[0];

    y2 = itm.pathPoints[1].anchor[1] * -1;

    distance = Math.pow((x2 - x1), 2) + Math.pow((y2 - y1), 2);

    distance = Math.sqrt(distance);

    distance = (Math.round(distance * 100)) / 100;

    if (distance <= 15) {

      itm.selected = true;

    }

  }

}

上記をテキストエディットなどにコピーペーストして、拡張子を「.jsx」にして保存します。

イラストレーターのメニューから、

ファイル→スクリプト→その他のスクリプト...

で、保存したjsxファイルを指定して実行してください。

ざっくりとしたテストのみ行いました。

線の始点と終点間の距離を計算しているので正しく選択できるのは直線に限ります。

線や塗りの設定は判定していません。

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

パスの長さはpathItemのlengthプロパティを利用すれば正確に取得可能です。

var tg = app.activeDocument.pathItems;

for (var i=0;i<tg.length;i++)

  if(tg.length>150) tg.selected = true;

複合化されたパスを考慮しなければこの様なコードになります。

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