:note

ドロップシャドウのためのスクリプトメモ

InDesignの効果のうちドロップシャドウについてのスクリプティングのためのメモ。

ドロップシャドウのためのスクリプトメモ /images/2011/01/dropshadow_dialog.png

「包括光源を使用する」にチェックすると、チェックされたオブジェクトのシャドウの角度を一括で変更できる。(他の効果では、シャドウ(内側)、べべルとエンボスに使用できる。

包括光源の角度設定のためのGUIは別に用意されてなくてチェックの有無で使い分けてるっぽい。)

普通は面倒くさいし再利用がしづらいので、オブジェクトスタイルを使って適用することの方が多いかと思う。

なので、あえてドロップシャドウのプロパティの設定可能範囲いっぱいにランダムに生成してみるスクリプトを書いて、実行してみるとこんなのができる。下は「包括光源を使用する」の状態(useGlobalLight = true)

ドロップシャドウのためのスクリプトメモ /images/2011/01/dropshadow_globallight.png

ドロップシャドウ、やりすぎ注意

/**
 * random dropshadows 
 */
var arr = [];
var doc = app.documents.add();
for (var i=0; i < 30; i++) {
  var r = doc.ovals.add({
    geometricBounds:["0pt","0pt","20pt","20pt"],
    fillColor:"Paper",
    strokeColor:"Paper"
    });
  arr.push(r);
};

// テスト用予約色(CMYはスウォッチパネル上のものとは別物)
var reserved_color = ["Cyan", "Magenta", "Yellow", "Black"];

doc.transparencyPreferences.globalLightAngle = -180 + 360 * Math.random();// 包括光源の角度(-180 - 180)
// doc.transparencyPreferences.globalLightAltitude = 90 * Math.random(); // 包括光源の高度(0 - 90) ドロップシャドウでは無視(べべルとエンボスで使用する)

for(var ii=0; ii < arr.length; ii++){
  with(arr[ii].transparencySettings.dropShadowSettings){
    mode = ShadowMode.DROP; // NONEでドロップシャドウなし

    // 描画モード
    blendMode = BlendMode.MULTIPLY; // 乗算
    effectColor = reserved_color[ ii%reserved_color.length ]; // カラー
    opacity = 33 + 67 * Math.random(); // 不透明度 (0 - 100%)

    // 位置
    // 角度と距離で指定
    distance = 1000 * Math.random().toString() + "pt"; //距離 ポイントで指定(0-1000pt)
    angle = -180 + 360 * Math.random(); //角度(-180 - 180)
    // またはXY座標で指定
    // xOffset = (-1000 + 2000 * Math.random()).toString() + "pt" // (-1000pt - 1000pt)
    // yOffset = (-1000 + 2000 * Math.random()).toString() + "pt" // (-1000pt - 1000pt)

    useGlobalLight = false; //包括光源を使用、

    // オプション
    size = 144 * Math.random().toString() + "pt"; // (0 - 144pt)
    spread = 100 * Math.random(); // (0 -100%)
    noise = 100 * Math.random(); // (0 - 100%)
    knockedOut = false; // シャドウをノックアウト
    honorOtherEffects = true; //その他の効果に従う (半透明オブジェクトにドロップシャドウをかけたくないときtrueにする)
    // $.writeln(arr[ii].transparencySettings.dropShadowSettings.properties.toSource());
  }
}

// グループ化してドキュメントの真ん中らへんに移動
var grp = doc.groups.add(arr);

grp.move(undefined, [
  doc.documentPreferences.pageWidth / 2, 
  doc.documentPreferences.pageHeight / 2
]);

フルボッコにされてかわいそうだったので書いてみた

Adobe Forums: FREE Mutliple drop shadow javascript….

 
comments powered by Disqus
back to top