Javascript 如何在Illustrator CS5.1+;中创建artboards对象的add方法所需的矩形对象;?

Javascript 如何在Illustrator CS5.1+;中创建artboards对象的add方法所需的矩形对象;?,javascript,adobe-illustrator,Javascript,Adobe Illustrator,我正试图在java脚本的帮助下添加新的artboard。我哪儿也找不到解决办法。adobe的脚本编写指南很差(不能使用更有力的词语) 无论我尝试什么,它都会返回错误: 错误1242:非法参数-参数1-应为矩形值 当我使用来自其他artboard的artboard.artboardRect值时,它会在同一位置创建artboard,但我无法修改它(调整大小),这使得此选项无效 artboards.add(artboards[0].artboardRect);//works artboards.add

我正试图在java脚本的帮助下添加新的artboard。我哪儿也找不到解决办法。adobe的脚本编写指南很差(不能使用更有力的词语)

无论我尝试什么,它都会返回错误:

错误1242:非法参数-参数1-应为矩形值

当我使用来自其他artboard的
artboard.artboardRect
值时,它会在同一位置创建artboard,但我无法修改它(调整大小),这使得此选项无效

artboards.add(artboards[0].artboardRect);//works
artboards.add([0,0,200,50]);//Error 1200: an Illustrator error coccurred: 1346458189('PARAM')
var rect = artboards[0].artboardRect;
rect[0] = 0;
rect[1] = 0;
rect[2] = 200;
rect[3] = 50;
artboards.add(rect);//Error 1242: Illegal argument - argument 1 - Rectangle value expected

经过广泛搜索,我找到了以下解决方法:

var newRect = function(x, y, width, height) {
    var l = 0;
    var t = 1;
    var r = 2;
    var b = 3;

    var rect = [];

    rect[l] = x;
    rect[t] = -y;
    rect[r] = width + x;
    rect[b] = -(height - rect[t]);

    return rect;
};

artboard = artboards.add(artboards[0].artboardRect);
artboard.name = "new name";
artboard.artboardRect = newRect(0, 0, 200, 50);

以防万一其他人遇到
错误:Illustrator出现错误:1346458189('PARM')

在CS6中,如果
高度
不是负值,或者
宽度
是负值,则至少会发生这种情况。这适用于
rect
类型的所有值

x
y
可以是正的,也可以是负的,这无关紧要

所以这个起作用:

app.activeDocument.artboards.add([0 , 0, 200, -50]);
app.activeDocument.artboards.add([-10 , -10, 200, -50]);
app.activeDocument.artboards.add([10 , 10, 200, -50]);
app.activeDocument.artboards.add([0 , 0, 200, 50])
app.activeDocument.artboards.add([0 , 0, -200, -50])
app.activeDocument.artboards.add([0 , 0, -200, 50])
但这将不起作用:

app.activeDocument.artboards.add([0 , 0, 200, -50]);
app.activeDocument.artboards.add([-10 , -10, 200, -50]);
app.activeDocument.artboards.add([10 , 10, 200, -50]);
app.activeDocument.artboards.add([0 , 0, 200, 50])
app.activeDocument.artboards.add([0 , 0, -200, -50])
app.activeDocument.artboards.add([0 , 0, -200, 50])
rect
someOtherPropRect
的几个地方,proprect被定义为“4个数字的数组”。比如说,

var document = app.documents.add();
$.writeln(document.artboards[0].artboardRect); // 0,792,612,0
返回的值对应于
topLeftX、topLeftY、bottomRightX、bottomRightY

为了理解这些价值观,我们需要看看Illustrator的协调系统。Illustrator的UI使用的是一个,而不是实际的。换句话说,屏幕左上角是原点,而不是左下角。但在编写脚本时,使用的是实际的笛卡尔坐标系

由于坐标系中的这种差异,在
Y
轴上输入的值应该是无效的。因此,如果我想重新定位和调整艺术板的大小,比如说,将其移动到
(200,50)
并将其调整到
(400300)
,我需要做的是:

var document = app.activeDocument;
var artboard = document.artboards[0];

var x = 200;
var y = 50;
var w = 400;
var h = 300;

artboard.artboardRect = [x, -y, (x + w), -(y + h)];

$.writeln(document.artboards[0].artboardRect); // 200, -50, 600, -350
此解决方案可以包装在函数中:

function rect(x, y, w, h) {
    return [x, -y, (x + w), -(y + h)];
}

artboard.artboardRect = rect(200, 50, 400, 300);
Y
H
都应该是负数,否则会出现如下错误

错误1200:发生Illustrator错误:1346458189(“PARM”)


或者重新定位/调整大小不正确。

Adobe的文档是垃圾。这应该是本机方法。谢谢你提供这个。