Skip to main content
Participant
September 23, 2018
Question

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

  • September 23, 2018
  • 2 replies
  • 2621 views

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

This topic has been closed for replies.

2 replies

12kiri
Participating Frequently
September 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ファイルを指定して実行してください。

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

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

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

Ten A
Community Expert
Community Expert
November 6, 2018

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

var tg = app.activeDocument.pathItems;

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

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

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

assause
Community Expert
Community Expert
September 23, 2018

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

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

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

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

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

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