gpt4 book ai didi

javascript - 将符号批量导出到 SVG - Illustrator

转载 作者:行者123 更新时间:2023-11-29 21:44:17 26 4
gpt4 key购买 nike

问题:

我创建了一个脚本,它遍历 Illustrator 文档中的所有符号并将它们导出为 PNG。

我也需要它来处理 SVG,但是,这并不像仅仅更改文件类型那么简单。

由于 Illustrator 的默认行为是将最近保存的 svg 制作成 app.activeDocument,因此 for 循环会为每个符号嵌套新目录。

例如

exports/
symbol01.svg
exports/
symbol02.svg
exports/
symbol03.svg
etc..

我很确定问题出在 //create directory//choose directory 之间,但我终究无法弄清楚。

var doc = app.activeDocument;
var symbolCount = doc.symbols.length;

if (symbolCount >= 1) {

if (confirm("Are all your layers hidden?")) {

// create temp layer
doc.layers.add();

for (var i = 0; i < doc.symbols.length; i++) {

// place a symbol instance - temp
var s = doc.symbolItems.add(doc.symbols[i]);

// create directory
var dest = new Folder(doc.path + "/exports");
if (!dest.exists) dest.create();

// choose directory
dest.changePath(doc.symbols[i].name);

// export symbols
saveSVG(dest);

// delete temp symbol instance
s.remove();
}
// remove temp layer
doc.layers[0].remove();
}

function saveSVG(file) {
// save options
var type = ExportType.SVG;
var options = new ExportOptionsSVG();

// export
doc.exportFile(file, type, options);
}

} else {

alert("You don't have any symbols in this document");

}

有一种方法来存储初始 app.activeDocument 可能会解决这个问题,但我不知道该怎么做..如果那是最好的方法?

奖励:

这个脚本的另一个问题是画板没有根据符号调整大小,所以我找到了一个函数fitArtboardToSelectedArt(),我尝试实现它但没有成功。任何人都可以解释如何它应该有用吗?

附言。这是 Illustrator 脚本文档的链接:http://adobe.ly/1JxLlUK

最佳答案

想通了:)

如果您需要这样做,请随意使用以下脚本。

/*
* Export Symbols as SVGs - Illustrator
* --------------------------------------
* Created By Shane Parsons - 30PT Design Inc.
* http://30ptdesign.com/
*/

var doc = app.activeDocument;
var symbolCount = doc.symbols.length;

if (symbolCount >= 1) {

if (confirm("Are all your layers hidden?")) {

// choose directory
var dest = Folder(doc.path).selectDlg();

// folder chosen
if (dest) {

// create temp layer
doc.layers.add();

// create temp artboard
doc.artboards.add(doc.artboards[0].artboardRect);

// get temp artboard
var tempAB = doc.artboards.getActiveArtboardIndex();

// loop through symbols
for (var i = 0; i < doc.symbols.length; i++) {

// place a symbol instance - temp
var symbol = doc.symbolItems.add(doc.symbols[i]);

// resize artboard
doc.artboards[tempAB].artboardRect = doc.visibleBounds;
app.redraw();

// choose directory
var filename = doc.symbols[i].name;

// export symbols
saveSVG(dest, filename);

// delete temp symbol instance
symbol.remove();
}
// remove temp layer
doc.layers[0].remove();

// remove temp artboard
doc.artboards[tempAB].remove();
}
}

function saveSVG(dest, filename) {
// save options
var type = ExportType.SVG;
var options = new ExportOptionsSVG();

// file
var file = new File(dest + "/" + filename);

// export
doc.exportFile(file, type, options);
}

} else {
alert("You don't have any symbols in this document");
}

关于javascript - 将符号批量导出到 SVG - Illustrator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31748118/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com