DTP駆け込み寺
  1. [13761] 不透明度のあるフレーム、罫線をベタにしたい モアイ 2012/03/29 11:21
    1. [13763] Re: 不透明度のあるフレーム、罫線をベタにしたい (z-) 2012/03/29 12:19
      1. [13772] Re^2: 不透明度のあるフレーム、罫線をベタにしたい Ω 2012/03/29 20:52
        1. [13779] Re^3: 不透明度のあるフレーム、罫線をベタにしたい モアイ 2012/03/30 08:29
          1. [13786] Re^4: 不透明度のあるフレーム、罫線をベタにしたい Ω 2012/03/30 13:06
      2. [13778] Re^2: 不透明度のあるフレーム、罫線をベタにしたい モアイ 2012/03/30 08:26
        1. [13780] Re^3: 不透明度のあるフレーム、罫線をベタにしたい . 2012/03/30 09:48
          1. [13784] Re^4: 不透明度のあるフレーム、罫線をベタにしたい モアイ 2012/03/30 11:48
            1. [13787] Re^5: 不透明度のあるフレーム、罫線をベタにしたい . 2012/03/30 13:46
              1. [13793] Re^6: 不透明度のあるフレーム、罫線をベタにしたい Ω 2012/03/31 00:13
              2. [13854] Re^6: 不透明度のあるフレーム、罫線をベタにしたい モアイ 2012/04/09 12:43
        2. [13781] Re^3: 不透明度のあるフレーム、罫線をベタにしたい (z-) 2012/03/30 10:10
          1. [13785] Re^4: 不透明度のあるフレーム、罫線をベタにしたい モアイ 2012/03/30 12:02 *
          2. [13794] Re^4: 不透明度のあるフレーム、罫線をベタにしたい Ω 2012/03/31 00:40

[ 返信 ]

不透明度のあるフレーム、罫線をベタにしたい

win版InDesign CS4です。0.1mm以下の線を0.1mmのベタにしたい場合、

var apItem=app.activeDocument.allPageItems;
for(var i=0; i<apItem.length; i++){
if(apItem[i].strokeWeight<0.1){
apItem[i].strokeWeight =0.1;
}
if(apItem[i].strokeTint<100){
apItem[i].strokeTint =100;
}
}

でいけると思ったのですが、濃淡ではなく不透明度が使われている場合ダメです。そこで

if(apItem[i].strokeTransparencySettings.blendingSettings.opacity<100){
apItem[i].strokeTtransparencySettings.blendingSettings.opacity =100;
}
を追加したものの変わりません。

strokeTransparencySettingsをtransparencySettingsにすればベタになってくれるものの、フレーム内の塗りまでベタになってしまいます。

どこの書き方が間違っているのか分かりません。アドバイスお願いします。

[13761] モアイ (2012/03/29 Thu 11:21)

[ 返信 ]


Re: 不透明度のあるフレーム、罫線をベタにしたい

> win版InDesign CS4です。0.1mm以下の線を0.1mmのベタにしたい場合、
>
> var apItem=app.activeDocument.allPageItems;
> for(var i=0; i<apItem.length; i++){
> if(apItem[i].strokeWeight<0.1){
> apItem[i].strokeWeight =0.1;
> }
> if(apItem[i].strokeTint<100){
> apItem[i].strokeTint =100;
> }
> }
>
> でいけると思ったのですが、濃淡ではなく不透明度が使われている場合ダメです。そこで
>
> if(apItem[i].strokeTransparencySettings.blendingSettings.opacity<100){
> apItem[i].strokeTtransparencySettings.blendingSettings.opacity =100;
> }
> を追加したものの変わりません。
>
> strokeTransparencySettingsをtransparencySettingsにすればベタになってくれるものの、フレーム内の塗りまでベタになってしまいます。
>
> どこの書き方が間違っているのか分かりません。アドバイスお願いします。

手元のテストでは動作しました。
strokeTtransparencySettings のTがダブッてるので
strokeTransparencySettings に正してみて、どうでしょう?

[13763] (z-) (2012/03/29 Thu 12:19) web

[ 返信 ]


Re^2: 不透明度のあるフレーム、罫線をベタにしたい

transparencySettings:オブジェクトの効果
strokeTransparencySettings:線の効果
fillTransparencySettings:塗りの効果
contentTransparencySettings:テキストの効果(テキストフレームの場合) です。

オブジェクトの不透明度は線・塗り・テキストの不透明度にも影響します。
それを考慮して塗りやテキストの不透明度を変更してから、オブジェクトと線の不透明度を100%にする必要があると思います。

>if(apItem[i].strokeWeight<0.1){
お気付きとは思いますが、これだと罫線なしのオブジェクトにも0.1mmの罫が付くことになります。

[13772] Ω (2012/03/29 Thu 20:52)

[ 返信 ]


Re^3: 不透明度のあるフレーム、罫線をベタにしたい

> >if(apItem[i].strokeWeight<0.1){
> お気付きとは思いますが、これだと罫線なしのオブジェクトにも0.1mmの罫が付くことになります。

いえ、確認しましたが0.1mmの罫線は付きませんでした。
WinとMacの違い? もしくはバージョン違いが原因なのでしょうか?

[13779] モアイ (2012/03/30 Fri 08:29)

[ 返信 ]


Re^4: 不透明度のあるフレーム、罫線をベタにしたい

> いえ、確認しましたが0.1mmの罫線は付きませんでした。
> WinとMacの違い? もしくはバージョン違いが原因なのでしょうか?

すみません、CS5のMac環境での検証でした。
CS4では問題ないのですね。
CS5以降ではpageItemの扱いが変わっていると思います。罫線が付くだけでなく、画像を配置していると、このスクリプトではエラーで止まってしまいました。。。

[13786] Ω (2012/03/30 Fri 13:06)

[ 返信 ]


Re^2: 不透明度のあるフレーム、罫線をベタにしたい

ミスタイプを上げてしまいました。
if(apItem[i].strokeTransparencySettings.blendingSettings.opacity<100){
apItem[i].strokeTransparencySettings.blendingSettings.opacity =100;
}
を追加しても結果は同じでベタにはなりません。

[13778] モアイ (2012/03/30 Fri 08:26)

[ 返信 ]


Re^3: 不透明度のあるフレーム、罫線をベタにしたい

多分、
apItem[i].strokeTransparencySettings.blendingSettings.opacity

apItem[i].transparencySettings.blendingSettings.opacity
で行くと思います。

本当のstrokeTransparencySettingsを変更するのは全体を変更するより手間がかかります。

[13780] . (2012/03/30 Fri 09:48)

[ 返信 ]


Re^4: 不透明度のあるフレーム、罫線をベタにしたい

> 多分、
> apItem[i].strokeTransparencySettings.blendingSettings.opacity
> を
> apItem[i].transparencySettings.blendingSettings.opacity
> で行くと思います。
>
> 本当のstrokeTransparencySettingsを変更するのは全体を変更するより手間がかかります。

最初質問したように
>>strokeTransparencySettingsをtransparencySettingsにすればベタになってくれるものの、フレーム内の塗りまでベタになってしまいます。
でダメだったんです。

[13784] モアイ (2012/03/30 Fri 11:48)

[ 返信 ]


Re^5: 不透明度のあるフレーム、罫線をベタにしたい

if文で対象になるがstrokeTransparencyになっているので、
オブジェクトに対してしかかかっていない場合に対象とな
らないのが問題。

従って、transparencySettingsの値をみて、100でない場合、
transparencySettingsを100
strokeTransparencを100
fillTransparencyを最初のtransparencySettingsの値
とすればよいのでは?

ということ。

もちろん、最初から個別に掛けられていたら面倒な話になりますが、ね。

[13787] . (2012/03/30 Fri 13:46)

[ 返信 ]


Re^6: 不透明度のあるフレーム、罫線をベタにしたい

補足して頂いた通りですが、処理の手順としては、
オブジェクトの不透明度の値が100%でない場合、
塗りの不透明度を(現在の塗りの不透明度)×(オブジェクトの不透明度)/100 に変更してから、
オブジェクトの不透明度、線の不透明度を100%にする で良いと思います。

[13793] Ω (2012/03/31 Sat 00:13)

[ 返信 ]


Re^6: 不透明度のあるフレーム、罫線をベタにしたい

見落としていましたことに今、気付きました。ありがとうございます。

[13854] モアイ (2012/04/09 Mon 12:43)

[ 返信 ]


Re^3: 不透明度のあるフレーム、罫線をベタにしたい

> ミスタイプを上げてしまいました。
> if(apItem[i].strokeTransparencySettings.blendingSettings.opacity<100){
> apItem[i].strokeTransparencySettings.blendingSettings.opacity =100;
> }
> を追加しても結果は同じでベタにはなりません。

状況整理の意味で追記します。
最初に提示された分を整理して(追加の2行を混ぜて)スペルを正しただけのもの。

var apItem=app.activeDocument.allPageItems;
for(var i=0; i<apItem.length; i++){
if(apItem[i].strokeWeight<0.1){
apItem[i].strokeWeight =0.1;
}
if(apItem[i].strokeTint<100){
apItem[i].strokeTint =100;
}
if(apItem[i].strokeTransparencySettings.blendingSettings.opacity<100){
apItem[i].strokeTransparencySettings.blendingSettings.opacity =100;
}
}

を、MacOS10.6.8、CS4(6.0.6)にて、
新規ドキュメント上に長方形を1個作成、
線幅0.01mm、線カラーの濃淡50%、
オブジェクト、塗り、線の不透明度をそれぞれ50%
という状態で実行しました。
 結果、
線幅→0.1mm
線カラーの濃淡→100%
線の不透明度→100%
 となりました。額面通りの動きだと思います。
ただし、線の不透明度はベタでもオブジェクトの不透明度が落ちていれば当然それは線にも影響します。
 オブジェクト不透明度、線の不透明度ともに50%だった場合、線の不透明度は半分のまた半分で25%になってます。線の不透明度だけ100%にしてもベタにはならない。
 そこでオブジェクト不透明度も100%にする必要があるんですが、もし元が100%じゃなかった場合、線のためだけにオブジェクト不透明度をいじった後は、塗り(場合によってはテキストも)の不透明度を相対的に元に戻してやる必要も出てきます。
 これがグラフィックフレームでリンクが貼られていたら、その画像も個別にやる必要があります。
   単純な話かと思ったら、ちゃんとやるとなると結構めんどうですね。

[13781] (z-) (2012/03/30 Fri 10:10) web

[ 返信 ]


Re^4: 不透明度のあるフレーム、罫線をベタにしたい

Re^4: 不透明度のあるフレーム、罫線をベタにしたい

> を、MacOS10.6.8、CS4(6.0.6)にて、
> 新規ドキュメント上に長方形を1個作成、
> 線幅0.01mm、線カラーの濃淡50%、
> オブジェクト、塗り、線の不透明度をそれぞれ50%
> という状態で実行しました。
>  結果、
> 線幅→0.1mm
> 線カラーの濃淡→100%
> 線の不透明度→100%
>  となりました。額面通りの動きだと思います。

Macだと額面通りに動きますか。お忙しい中、検証していただきありがとうございます。

> ただし、線の不透明度はベタでもオブジェクトの不透明度が落ちていれば当然それは線にも影響します。
>  オブジェクト不透明度、線の不透明度ともに50%だった場合、線の不透明度は半分のまた半分で25%になってます。線の不透明度だけ100%にしてもベタにはならない。
>  そこでオブジェクト不透明度も100%にする必要があるんですが、もし元が100%じゃなかった場合、線のためだけにオブジェクト不透明度をいじった後は、塗り(場合によってはテキストも)の不透明度を相対的に元に戻してやる必要も出てきます。
>  これがグラフィックフレームでリンクが貼られていたら、その画像も個別にやる必要があります。
>    単純な話かと思ったら、ちゃんとやるとなると結構めんどうですね。

めんどう以前に濃度指定をすればいいのに、不透明度を使ってくるデータが増えて困ってます。不透明度を積極的に使ってくれ!と推奨してるかのUIですからね。

[13785] モアイ (2012/03/30 Fri 12:02)

[ 返信 ]


Re^4: 不透明度のあるフレーム、罫線をベタにしたい

> 単純な話かと思ったら、ちゃんとやるとなると結構めんどうですね。

画像や入れ子のフレームの不透明度もそうですが、
線幅の変更によりテキストがオーバーフローする可能性、
線がK=50などのスウォッチで指定してあったら、いくら濃度や不透明度が100%でも網にしかならない とか、
厳密に考えるとそういった問題も浮上します。。。

[13794] Ω (2012/03/31 Sat 00:40)