Javascript Adob​​e Illustrator脚本 - 更改所有项目的strokewidth

时间:2017-06-27 21:22:29

标签: javascript svg scripting adobe-illustrator

我有大约200个SVG文件,我需要将strokecolor更改为灰色,并将所有行的笔画宽度更改为.2pt。

我想编写相当于在界面中执行的操作 - “选择全部”,然后手动输入.2磅的笔画宽度。

现在,我的脚本正在将所有颜色更改为灰色(正常工作),并将一些行更改为笔触宽度.2pt。

app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS;
var doc = app.activeDocument;

for ( i = 0; i <doc.pathItems.length; i++ ) {
pathArt = doc.pathItems[i];
pathArt.strokeWidth = .2;
pathArt.strokeColor = makeColor(153,153,153);
pathArt.filled = false;
}

function makeColor(r,g,b){
var c = new RGBColor();
c.red   = r;
c.green = g;
c.blue  = b;
return c;
}

也许我没有正确地通过脚本选择所有对象? 正如我在上面所做的那样选择路径项来实现相当于CTRL-A的正确方法,然后手动进行一些操作吗?

非常感谢您的时间!

2 个答案:

答案 0 :(得分:0)

从AI CS3开始,当没有描述路径时,.strokeColor属性适用,而.strokeWidth属性不适用。

添加代码pathArt.Stroked = True;以解决您的问题

另请注意,您不会迭代CompoundPathItems

答案 1 :(得分:0)

这是完整的脚本,它会要求您选择文件夹。因此,选择包含200个SVG文件的文件夹。此脚本将处理所选文件夹中的所有SVG文件,并将笔触颜色更改为灰色并更改其宽度。

var folder = Folder.selectDialog();
if (folder) {
    app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS;
    var color = makeColor(153, 153, 153);
    var files = folder.getFiles("*.svg");
    for (var j = 0; j < files.length; j++) {
        app.open(files[j]);
        var doc = app.activeDocument;
        for (i = 0; i < doc.pathItems.length; i++) {
            pathArt = doc.pathItems[i];
            pathArt.stroked = true;
            pathArt.strokeWidth = .2;
            pathArt.strokeColor = color;
            pathArt.filled = false;
        }
        doc.close(SaveOptions.SAVECHANGES);
        doc = null;
    }

}

function makeColor(r, g, b) {
    var c = new RGBColor();
    c.red = r;
    c.green = g;
    c.blue = b;
    return c;
}

如果您想处理锁定和隐藏的项目,也可以更改锁定和隐藏项目的脚本。