我经常发现自己需要创建一个对象阵列,这些对象可以是直线,围绕中心点旋转或沿路径倾斜。目前,我正在使用各种不同且毫无疑问的愚蠢方法来完成此操作,通常一次只有一点点的数学运算和转换调色板,而我知道这是一种愚蠢的方法。有人能指出我正确的方法吗?如果在Illustrator中无法实现,则可以指出我的插件吗?
我经常发现自己需要创建一个对象阵列,这些对象可以是直线,围绕中心点旋转或沿路径倾斜。目前,我正在使用各种不同且毫无疑问的愚蠢方法来完成此操作,通常一次只有一点点的数学运算和转换调色板,而我知道这是一种愚蠢的方法。有人能指出我正确的方法吗?如果在Illustrator中无法实现,则可以指出我的插件吗?
Answers:
有几种方法可以实现这一目标...
最快的方法是在复制对象时平移,缩放或旋转对象。要在Windows中复制对象,请按住“ alt”键*。然后可以通过按CTRL + D重复转换和复制。
为了获得更高的精度,请从工具箱中选择一个转换工具,然后按Enter。然后将出现一个对话框,允许您输入数值,并带有一个“复制”按钮。同样,对话框关闭后,您可以按CTRL + D重复。
混合工具可以“步进”对象,该工具还具有旋转对象以匹配路径的选项。
“动作”调板可以记录和回放多个转换。
Illustrator支持多种语言来编写脚本,这提供了最灵活的解决方案,但学习和设置通常更耗时。
* Mac按键组合可能略有不同。
您也可以使用脚本。例如,这是创建20个路径项目的方法,该项目具有从中心开始随机旋转和位置。
// creating a document
var doc = app.documents.add();
// adding a new layer
var layer = doc.layers.add();
// variable declarations
var i, ray, displacement, dx, dy;
// creating 20 path items in a loop and setting their parameters
for (i = 0; i < 20; i++) {
// adding a path item and saving it to the "ray" variable
ray = layer.pathItems.add();
// defining path points
ray.setEntirePath([ [0, 0], [0, 10]]);
// generating a random angle for rotation
// note: rotation in Illustrator is counter-clockwise
ray.rotation = Math.round(Math.random() * 360);
// applying rotation to the path, using its bottom as the origin point
ray.rotate(ray.rotation, true, true, true, true, Transformation.BOTTOM);
// moving the path away from the center of the document by "displacement" amount
displacement = 10 + Math.random() * 10;
// calculating x and y coordinates from "displacement"
// (which is basically a hypotenuse)
dx = displacement * Math.sin( (180 + ray.rotation) * Math.PI / 180 );
dy = - displacement * Math.cos( (180 + ray.rotation) * Math.PI / 180 );
// translating the path
ray.translate(dx, dy);
}
然后,您可以将其另存为“ somefile.js”并通过File-> Scripts-> Other script ...执行,或将其粘贴到ExtendScript工具箱中并从那里运行。