如何通过Illustrator脚本在指定画板上绘制对象?
嘿Fransua,我懂你碰到的麻烦了——在Illustrator脚本里,单单设置activeArtboardIndex只是把目标画板设为当前显示的“活动”状态,但新创建的对象并不会自动归到这个画板上。这是因为Illustrator的对象坐标是基于文档全局坐标系的,和活动画板的视觉选中状态是分开的~
具体解决方法
1. 创建对象后移动到目标画板范围内
先获取目标画板的坐标边界,再把新对象的位置调整到这个边界里,这样对象就会显示在目标画板上了:
var doc = app.activeDocument; // 选中第2个画板(索引从0开始,所以1对应第二个画板) var targetArtboard = doc.artboards[1]; doc.artboards.setActiveArtboardIndex(1); // 示例:创建一个100x100的矩形 var newRect = doc.pathItems.rectangle(0, 0, 100, 100); // 获取目标画板的坐标:格式为 [左边界, 上边界, 右边界, 下边界] var artboardBounds = targetArtboard.artboardRect; // 将矩形移动到目标画板的左上角位置(可根据需求调整坐标) newRect.position = [artboardBounds[0], artboardBounds[1]];
2. 创建对象时直接指定目标画板位置
如果你清楚目标画板的位置,也可以在创建对象时直接把坐标设到画板范围内,省掉后续移动的步骤:
var doc = app.activeDocument; var targetArtboard = doc.artboards[1]; doc.artboards.setActiveArtboardIndex(1); var artboardBounds = targetArtboard.artboardRect; // 注意:Illustrator的rectangle方法参数是(上边界, 左边界, 宽度, 高度),和position的[左, 上]顺序相反 var newRect = doc.pathItems.rectangle(artboardBounds[1], artboardBounds[0], 100, 100);
额外:指定对象到特定图层
如果需要把对象放到某个指定图层里,可以先获取目标图层,再在创建对象时关联它:
var doc = app.activeDocument; var targetArtboard = doc.artboards[1]; // 替换成你的目标图层名称 var targetLayer = doc.layers.getByName("MyTargetLayer"); doc.artboards.setActiveArtboardIndex(1); var artboardBounds = targetArtboard.artboardRect; // 创建矩形时指定父图层为目标图层 var newRect = targetLayer.pathItems.rectangle(artboardBounds[1], artboardBounds[0], 100, 100);
内容的提问来源于stack exchange,提问作者fransua
相关产品推荐
相关产品推荐

