首页 > 解决方案 > 如何获得 PathItems 的整数个数?(插画脚本)

问题描述

我创建了一个代码来将随机颜色应用于 Illustrator 上的路径。但是,它只适用于图层的第一条路径,忽略我的选择。我知道这是因为 pathItems[] 为 0。如果为 1,它会重新着色第二条路径,依此类推。

如何找出当前选择的整数?所以我可以将它存储为“AnyNumber”变量并用 docRef.pathItems[ANYNUMBER] 替换 docRef.pathItems[0]。

PathItems 的参考在这里

谢谢你。

var docRef = app.activeDocument;


// Create color

var rgb; 
var rgb = new RGBColor();

var random1 = Math.floor((Math.random() * 255) + 1);
var random2 = Math.floor((Math.random() * 255) + 1);
var random3 = Math.floor((Math.random() * 255) + 1);

rgb.red = random1;
rgb.green = random2;
rgb.blue = random3;


// Create swatch

var swatch = docRef.swatches.add();

swatch.color = rgb;

swatch.name = "Random Color"; 


// Apply swatch

var pathRef = docRef.pathItems[0];

pathRef.filled = true;

pathRef.fillColor = swatch.color;

pathRef.stroked = false;


// Delete swatch

swatchToDelete = app.activeDocument.swatches[swatch.name];

swatchToDelete.remove();

标签: javascriptadobe-illustrator

解决方案


我通过创建数组找到了解决方案。

这是整个脚本,如果将来有人想检查代码:

doc = app.activeDocument;
sel = app.activeDocument.selection;
selSwatch = doc.swatches.getSelected();

if (sel instanceof Array) {

    if(selSwatch.length != 0)

        for (i=0; i<sel.length; i++) {

            if(sel[i].typename == "PathItem" || sel[i].typename == "CompoundPathItem") {

                selobj = sel[i];
                selobj.filled = true;

                // Create color

                var rgb;
                var rgb = new RGBColor();

                var random1 = Math.floor((Math.random() * 255) + 1);
                var random2 = Math.floor((Math.random() * 255) + 1);
                var random3 = Math.floor((Math.random() * 255) + 1);

                rgb.red = random1;
                rgb.green = random2;
                rgb.blue = random3;

                // Create swatch

                var swatch = doc.swatches.add();

                swatch.color = rgb;

                swatch.name = "Random Color"; 

                // Apply swatch

                selobj.filled = true;

                selobj.stroked = false;

                selobj.fillColor = swatch.color;


                // Delete swatch

                swatchToDelete = doc.swatches[swatch.name];

                swatchToDelete.remove();

}}}

推荐阅读