終了

【Javascript】特色スウォッチの色を置き換えたい

積極的な参加者 ,
Mar 15, 2023 Mar 15, 2023

リンクをクリップボードにコピー

コピー完了

お世話になります。

 

ドキュメントに特色スウォッチが存在していて、

それのグローバルをオフにし、プロセスカラーのK100に置き換えるスクリプトを作りたいです。

 

(function() {

if(app.documents.length <= 0) {return ;}
var doc = app.documents[0] ;

var deleteCount = 0 ;
var spotColors = doc.spots ;
var currentColor ;

for(var i = spotColors.length - 1 ; i >= 0 ; i--) {
    currentColor = spotColors[i] ;
    if(currentColor.colorType == ColorModel.SPOT) {
    currentColor.color = setColor(0,0,0,100);
    currentColor.colorType = ColorModel.PROCESS ;
    deleteCount++ ;
    }
}

function setColor(c, m, y, k)
{
    var tmpColor = new CMYKColor();
    tmpColor.cyan = c;
    tmpColor.magenta = m;
    tmpColor.yellow = y;
    tmpColor.key = k;
    return tmpColor;
}

})() ;

 

上記を実行した結果、なぜか白に置き換わってしまいました。

グローバルをオフにする方法は調べてみたのですが、見つからず・・・。

 

何かいい方法はありませんでしょうか。

宜しくお願いいたします。

キーワード
スクリプティング

表示

810

翻訳

翻訳

レポート

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

correct answers 1 件の正解

Community Expert , Mar 15, 2023 Mar 15, 2023

これはSpotがカラーを示すオブジェクトだからですね。swatchのcolorプロパティに設定されて機能するものですから意図した動作にしよと思うならswatchに対する処理を考える必要があります。

 

var bk = new CMYKColor();
bk.cyan = 0;
bk.magenta = 0;
bk.yellow = 0;
bk.black = 100;
var sw = app.activeDocument.swatches;
for (var i=0;i<sw.length;i++) if(sw[i].color.typename=="SpotColor")sw[i].color = bk;

で、こうなります。

投票

翻訳

翻訳
積極的な参加者 ,
Mar 15, 2023 Mar 15, 2023

リンクをクリップボードにコピー

コピー完了

すみません。

CMYKの

tmpColor.key = k;

tmpColor.black = k;

でいいんですね。

ここを変更したら黒に置き換えられました!

 

グローバルをオフにする方法が知りたいです。

投票

翻訳

翻訳

レポート

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

リンクをクリップボードにコピー

コピー完了

これはSpotがカラーを示すオブジェクトだからですね。swatchのcolorプロパティに設定されて機能するものですから意図した動作にしよと思うならswatchに対する処理を考える必要があります。

 

var bk = new CMYKColor();
bk.cyan = 0;
bk.magenta = 0;
bk.yellow = 0;
bk.black = 100;
var sw = app.activeDocument.swatches;
for (var i=0;i<sw.length;i++) if(sw[i].color.typename=="SpotColor")sw[i].color = bk;

で、こうなります。

投票

翻訳

翻訳

レポート

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

リンクをクリップボードにコピー

コピー完了

最新

出来ました!

ありがとうございます。

投票

翻訳

翻訳

レポート

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