zz log

zaininnari Blog

レイヤー内のプロパティを設定

レイヤー内のプロパティを一挙に設定をします。
locked と hidden が設定されていない場合は設定できますが、
逆はできません。

ソース

[illustrator.jsx]

var zz;

zz || (function(win) {
    zz = zzmix(win, {
        illustrator: zzmix(zzillustrator, {
            layer: zzmix(zzillustratorlayer, {
                property: zzillustratorlayerproperty
            })
        })
    });

    function zzillustrator() {
    }
    
    function zzillustratorlayer() {
    }

    function zzillustratorlayerproperty(layers, property, value) {
        var len = layers.length,
            layer,
            item,
            itemLen,
            i, j;
        for (i = 0; i < len; i++) {
            layer = layers[i];
            if (layer.locked || !layer.visible) {
                continue;
            }
            itemLen = layer.pageItems.length;
            for (j = 0; j < itemLen; j++) {
                item = layer.pageItems[j];
                if (!item.locked && !item.hidden) {
                    item[property] = value;
                }
            }
            zzillustratorlayerproperty(layer.layers, property, value);
        }
    }

    /**
     * @auther uupaa http://code.google.com/p/uupaa-js/
     * @license MIT License
     */
    function zzmix(base, flavor, aroma, override) {
        var i;

        if (override || override === i) {
            for (i in flavor) {
                base[i] = flavor[i];
            }
        } else {
            for (i in flavor) {
                i in base || (base[i] = flavor[i]);
            }
        }
        return aroma ? zzmix(base, aroma, 0, override) : base;
    }

})(this);

使い方

[run.jsx]

// @include "illustrator.jsx"
// 現在のアクティブなドキュメント内のレイヤーを選択します。
zz.illustrator.layer.property(app.activeDocument.layers, 'selected', true);

改善

  • locked と hidden へのアクセス
  • jquery の attr と access の関係なものを作る