■重なったパスをひとつだけ残してあとは削除します!   
(画像は重なっている「イメージ」です。ほんとは同じ位置に重なってます^ ^)
02
43
(実際はこの状態↓で動かしてますが、なんせぴったり重なっていると「ビフォーアフター」の動きがまったくわからないので…)
37


おつかれさまです。@gorolibです。

「何重にも重なったパスを一つだけ残して他は削除したい」

というスクリプトのリクエストをいただきました。コメントありがとうございます。

なるほど!「前面にペーストを複数回…」みたいなケースですかね、確かにあります^ ^

お試しにてご利用ください!


<スクリプトファイル名>
(ダウンロード無料です)


<使い方>
(1)重なっていそうなパスをまとめて選択します。
(2)このスクリプトを起動します。


<仕様>
(1)オブジェクトの種類は「パスアイテム」のみです

(2)以下「すべて」同じであれば削除します(ひとつでも違えば削除しません)
(a)左上の位置(座標)が同じ
(b)幅が同じ
(c)高さが同じ
(d)塗り色が同じ(CMYK前提です)
(e)線の色が同じ(CMYK前提です)
(f)線幅が同じ

(3)重なり順の上から比較していきます。例えばオブジェクトが5つある場合は、
1番目と2番目の比較(同じならば2番目を消す)
1番目と3番目の比較(同じならば3番目を消す)
1番目と4番目の比較(同じならば4番目を消す)
1番目と5番目の比較(同じならば5番目を消す)

2番目と3番目の比較(同じならば3番目を消す)
2番目と4番目の比較(同じならば4番目を消す)
2番目と5番目の比較(同じならば5番目を消す)

3番目と4番目の比較(同じならば4番目を消す)
3番目と5番目の比較(同じならば5番目を消す)

4番目と5番目の比較(同じならば5番目を消す)

ぐ、ぐふぅ…

というように繰り返します。もちろん上記は結果的に「まったく同じものがなかった」場合であり、消していけば比較する回数は減ります。


お役に立てれば幸いです!ではでは出羽の海。


■ダウンロードはこちらから
 
(ダウンロード無料です)


■ソースも載せておきます。
━━━━━
DOC = activeDocument
SEL = DOC.selection

MAINfn()

function MAINfn(){
if(SEL.length < 2) return false
LEN = SEL.length
for(i=0; i<LEN; i++){
SELfn(i)
}
}

function SELfn(i){
SEL = DOC.selection
SELz = SEL[i]
AR1 = []
for(s=i+1; s<SEL.length; s++){
FLG = FLGfn(SELz,SEL[s])
if(FLG==true) AR1.push(s)
}
for(a=0; a<AR1.length; a++){
SEL[AR1[a]].remove()
}
}

function FLGfn(SEL1,SEL2){
if(SEL1.typename != "PathItem") return false
if(SEL2.typename != "PathItem") return false

if(SEL1.position[0] != SEL2.position[0]) return false
if(SEL1.width != SEL2.width) return false
if(SEL1.height != SEL2.height) return false

if(SEL1.fillColor.cyan != SEL2.fillColor.cyan) return false
if(SEL1.fillColor.magenta != SEL2.fillColor.magenta) return false
if(SEL1.fillColor.yellow != SEL2.fillColor.yellow) return false
if(SEL1.fillColor.black != SEL2.fillColor.black) return false

if(SEL1.strokeColor.cyan != SEL2.strokeColor.cyan) return false
if(SEL1.strokeColor.magenta != SEL2.strokeColor.magenta) return false
if(SEL1.strokeColor.yellow != SEL2.strokeColor.yellow) return false
if(SEL1.strokeColor.black != SEL2.strokeColor.black) return false

if(SEL1.strokeWidth != SEL2.strokeWidth) return false

return true
}
━━━━━