通过javascript将图稿与Illustrator中的画板对齐

时间:2013-12-09 19:26:37

标签: javascript adobe-illustrator

我试图通过javascript将插图画面中的对象放置在艺术板的左下方。我可以使用javascript访问该对象并执行它的功能,如“旋转”

if ( app.documents.length > 0) {
    doc = app.activeDocument;
}


   function traceImage(doc) {

         doc.pageItems[0].rotate (30);


}

traceImage(doc);

但是我找不到一种简单的方法来定位/对齐艺术板底部/左侧的“pageItems [0]”。除了计算它的当前距离然后移动它之外,还有一种更简单的方法吗?感谢。

2 个答案:

答案 0 :(得分:2)

这可能比这更简单,但这很有效。

if ( app.documents.length > 0) {
    doc = app.activeDocument;

     // Get the active Artboard index
    var activeAB = doc.artboards[doc.artboards.getActiveArtboardIndex()];

    // Get the Height of the Artboard
    var artboardBottom = activeAB.artboardRect[3];

    // The page item you want to move. Reference it how you will. This just
    // obviously grabs the first pageItem in the document.
    var myPageItem = doc.pageItems[0];

    // Here is where the magic happens. Set the poition of the item.
    // [0,0] would be at the top left, so we have to compensate for the artboard
    // height. We add myPageItem's height for offset, or we'd end up BELOW
    // the artboard.
    myPageItem.position = [0, artboardBottom + myPageItem.height];
}

基本上,我们必须将pageItem的左上角设置为画板的左下角。不幸的是,这会使我们的pageItem 低于画板,所以我们通过pageItem的高度调整偏移量:

答案 1 :(得分:0)

同样,如果您希望将项目置于画板中心,则需要稍微处理高度和宽度。

if ( app.documents.length > 0) {
    doc = app.activeDocument;

    // Get the active Artboard index
    var activeAB = doc.artboards[doc.artboards.getActiveArtboardIndex()];

    // Get the Width of the Artboard
    var artboardRight = activeAB.artboardRect[2];
    // Get the Height of the Artboard
    var artboardBottom = activeAB.artboardRect[3];

    // The page item you want to move. Reference it how you will. This just
    // obviously grabs the first pageItem in the document.
    var myPageItem = doc.pageItems[0];

    // Here is where the magic happens. Set the position of the item.
    // [0,0] would be at the top left, so we have to compensate for the    artboard
    // height and width. We add item's height then split it for the vertical
    // offset, or we'd  end up BELOW the artboard.
    // Then we subtract the item's width and split the difference to center the
    // item horizontally.
    var horziontalCenterPosition = (artboardRight - myPageItem.width)/2;
    var verticalCenterPosition = (artboardBottom + myPageItem.height)/2;

    myPageItem.position = [horziontalCenterPosition, verticalCenterPosition];
}