illustrator脚本 #009 一键删除空图层

一键删除空图层

var logStr='';
var removable;
function log(pStr){
    logStr+=pStr+'</br>';
	}
function main(){		
	if ( app.documents.length == 0 ) {	
		return;		
		}
		doStuff();
		return logStr;
}
function doStuff() {
	var doc = app.activeDocument;
    var docLayers = doc.layers;   
    removable = [];
    markAsRemovableIn(docLayers);
    removeLayers(removable);
}
function markAsRemovableIn(layers) {
    var lCount = layers.length;    
    var i;
    for ( i = 0 ; i < lCount; i++){    
        var layer = layers[i];        
        if(layer.layers.length > 0){
            markAsRemovableIn(layer.layers);
        } else if(layer.pageItems.length==0) {
            removable.push(layer);
        }        
    }
}
function removeLayers(layers) {    
    var lCount = layers.length;    
    var i;
    for ( i = 0 ; i < lCount; i++) {
        var layer = layers[i];
        layer.remove();        
    }    
}
main();

另一段代码实现相同功能

// LayersDeleteEmpty
// Deletes all layers which do not have content (empty layers) in the active document
// Nathaniel Vaughn KELSO
// 2007.July.8 
// at Hyattsville, MD
// Version 0.1

// only do for the active document
if(documents.length > 0) {
	doc = activeDocument;
}

// Flag to determine if LAYERS only or also look at empty Sublayers
//  WARNING pageItems does NOT include sublayer if they are present!
var doSubLayers = 1;

var layersDeleted = 0;
var subLayersDeleted = 0;

var targetDocument = doc;
var layerCount = targetDocument.layers.length;

// Loop through layers from the back, to preserve index
// of remaining layers when we remove one
// TODO: Only looks one level of sublayers deep!!!

for (var ii = layerCount - 1; ii >= 0; ii-- ) {
	targetLayer = targetDocument.layers[ii];
	var layerObjects = new Number( targetLayer.pageItems.length );

	// For completely empty layers
	if ( layerObjects == 0 && targetLayer.layers.length==0 ) {
		targetDocument.layers[ii].remove();
		layersDeleted++;

	// What if the layer has sublayers?
	// TODO: Only looks one level of sublayers deep!!!
	} else if (doSubLayers ) {
		var subLayerCount = targetLayer.layers.length;
		for (var iii = subLayerCount - 1; iii >= 0; iii-- ) {
			targetSubLayer = targetLayer.layers[iii];
			var subLayerObjects = new Number( targetSubLayer.pageItems.length );

			// For completely empty layers
			if ( subLayerObjects == 0 && targetSubLayer.layers.length==0) {
				targetSubLayer.remove();
				subLayersDeleted++;
			}
		}
		// Check again to see if the layer is now empty if all the empty sublayer have beeen deleted
		// For completely empty layers
		if ( layerObjects == 0 && targetLayer.layers.length==0 ) {
			targetDocument.layers[ii].remove();
			layersDeleted++;
		}
	}
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值