2015-01-28 5 views
0

투명한 png 파일로 모든 내 레이어, 경로 등을 내보내는 스크립트를 작성하려고합니다. (작동하는 스크립트를 찾을 수 없기 때문에). 많은 스크립트를 보았지만 모두 모든 레이어를 내보내지는 않습니다. 부모 레이어를 시도하고 내보내는 것처럼 보입니다. 따라서 하위 레이어가있는 경우 이러한 레이어가 누락됩니다. 내가 스크립트를 실행하면Illustrator ExtendScript 숨김 경로

var doc = app.activeDocument; 
var counter = 0; 

hideOrShowItems(doc, false); 
// processLayers(doc); 
// displayLayer(doc, true); 

function hideOrShowItems(root, show) { 
    for(var i = 0; i < root.layers.length; i++) { 
     var layer = root.layers[i]; 
     var pathCount = layer.pathItems.length; 
     var layerCount = layer.layers.length; 

     if (pathCount > 0) { 
      hideOrShowPaths(layer, show); 
     } 

     if (layerCount > 0) { 
      hideOrShowItems(layer, show); 
     } 

     layer.visible = show; 
    } 
} 

function hideOrShowPaths(root, show) { 
    for(var i = 0; i < root.pathItems.length; i++) { 
     root.pathItems[i].visible = show; 
    } 
} 

// -- Removed for brievety 

가 숨겨진됩니다 유일한 것은 상위 계층

enter image description here

나머지 모든 누르지입니다 :

여기 내 스크립트입니다. 나는 카운터를 넣고 카운터 ++의 for 루프를 hideOrShowPaths으로 계산하고 246을 계산하므로 경로를 볼 수 있고 실제로 숨길 수 있지만 표시가 유지됩니다.

이전에이 작업을 수행 한 사람이 있습니까? 경로, 그룹, 클립을 숨기고 png로 모두 내보낼 수 있습니까? 아니면 수동으로해야합니까?

답변

2

찾고있는 플래그가 hidden이 아닌 것으로 보입니다. visible입니다.

var doc = app.activeDocument; 
var root = doc.layers[0]; 
// just for testing purpose. Change the color 
var newRGBColor = new RGBColor(); 
newRGBColor.red = 255; 
newRGBColor.green = 255; 
newRGBColor.blue = 255; 
// make all items hidden 
for (var i = 0; i < root.pathItems.length; i++) { 
    var item = root.pathItems[i]; 
    item.hidden = true; 
    item.fillColor = newRGBColor; // just for testing 
} 
// now loop all pathItems 
for (var i = 0; i < root.pathItems.length; i++) { 
    var item = root.pathItems[i]; 
    item.hidden = !item.hidden; //make one visible 
    // export visible part 
    redraw(); 
    item.hidden = !item.hidden; // hide it again 
} 

은 스크립트에서 당신은 먼저 모든 항목을 숨길 하나, 수출 숨기기를 취소하고 다시 그것을 숨길 필요가있을 것이다. 스 니펫이 문제를 해결하는 데 도움이되기를 바랍니다.