メモ Illustrator上で、レイヤー別に、「レイヤー順の連番_レイ ヤー名.svg」を書き出すスクリプト.jsx |
返信 |
5/4 ちゃんと動かない。というか非表示のレイヤーの分まで含めちゃう。
・レイヤー名に日本語が含まれる場合はCS2以上。
・既存のファイル、同名のレイヤー、オブジェクトのないレイヤー、等のチェックなし。
母体はこれ
http://d.hatena.ne.jp/ROCO/20080918/1221697110
PNG書き出し用
改造箇所の元はこれ
http://d-p.2-d.jp/ai-js/pages/01_scripts/other/index.html#26_layers_to_files
以下、書き出す形式とオプションとファイル名を変えた(ふたつめのから切り貼りした)だけなのでたぶんうごく。検証中
4/30追記:なんか気持ち悪いので連番の先頭を0で埋めて桁を揃えた(4桁。0001から9999までいける)。
原典はこれ
http://studyingtopology.blog23.fc2.com/blog-entry-41.html
/**
* @author Niels Bosma (niels.bosma@motorola.com
* modified by zig5z7
*/
var folder = Folder.selectDialog();
var document = app.activeDocument;
if(document && folder)
{
var options = new ExportOptionsSVG();
options.compressed = 0;
options.embedRasterImages = 1;
options.embedAllFonts = 1;
options.preserveEditability = 1;
options.documentEncoding = "SVGDocumentEncoding.UTF8";
var n = document.layers.length;
for(var i=0; i<n; ++i)
{
hideAllLayers();
var layer = document.layers[i];
layer.visible = true;
var zeroPadding = ("000" + (i+1)).slice(-4)
var file = new File(folder.fsName+"/"+ zeroPadding + "_" +layer.name+".svg");
var options = new ExportOptionsSVG();
options.artBoardClipping = true;
document.exportFile(file,ExportType.SVG,options);
}
showAllLayers();
}
function hideAllLayers()
{
forEach(document.layers, function(layer) {
layer.visible = false;
});
}
function showAllLayers()
{
forEach(document.layers, function(layer) {
layer.visible = true;
});
}
function forEach(collection, fn)
{
var n = collection.length;
for(var i=0; i<n; ++i)
{
fn(collection[i]);
}
}
投稿者 zig5z7 | 返信 (0) | トラックバック (0)