illustrator脚本 #002 <画板02> 更改画板尺寸 有界面

这是一个更改画板尺寸的脚本,它有可以一直停留的面板,面板里你可以输入画板的宽度和高度,单位是mm,下方有一个选择项,是否是对当前文件里的所有画板进行操作,如果不是,则是对当前的画板进行修改,否则对所有画板的尺寸进行改动。

#target Illustrator
#targetengine main

// DIALOG
// ======
var dialog = new Window("palette", undefined, undefined, {maximizeButton: false, minimizeButton: false, closeButton: false}); 
    dialog.text = "更改画板尺寸"; 
    dialog.orientation = "column"; 
    dialog.alignChildren = ["center","center"]; 
    dialog.spacing = 5; 
    dialog.margins = [10,10,10,5]; 

// PNLOPTIONS
// ==========
var pnlOptions = dialog.add("panel", undefined, undefined, {name: "pnlOptions"}); 
    pnlOptions.text = "选项"; 
    pnlOptions.orientation = "column"; 
    pnlOptions.alignChildren = ["left","top"]; 
    pnlOptions.spacing = 10; 
    pnlOptions.margins = 10; 

// GRPWIDTH
// ========
var grpWidth = pnlOptions.add("group", undefined, {name: "grpWidth"}); 
    grpWidth.orientation = "row"; 
    grpWidth.alignChildren = ["left","center"]; 
    grpWidth.spacing = 10; 
    grpWidth.margins = 0; 

var lblWidth = grpWidth.add("statictext", undefined, undefined, {name: "lblWidth"}); 
    lblWidth.text = "宽度"; 

var txtWidth = grpWidth.add('edittext {properties: {name: "txtWidth"}}'); 
    txtWidth.text = "210"; 
    txtWidth.preferredSize.width = 50;
    txtWidth.onChange = function() {
        txtWidth.text = txtWidth.text.replace(/[^0-9.]/g, "");
    }; 

var lblWidthUnit = grpWidth.add("statictext", undefined, undefined, {name: "lblWidthUnit"}); 
    lblWidthUnit.text = "mm"; 

// GRPHEIGHT
// =========
var grpHeight = pnlOptions.add("group", undefined, {name: "grpHeight"}); 
    grpHeight.orientation = "row"; 
    grpHeight.alignChildren = ["left","center"]; 
    grpHeight.spacing = 10; 
    grpHeight.margins = 0; 

var lblHeight = grpHeight.add("statictext", undefined, undefined, {name: "lblHeight"}); 
    lblHeight.text = "高度"; 

var txtHeight = grpHeight.add('edittext {properties: {name: "txtHeight"}}'); 
    txtHeight.text = "285"; 
    txtHeight.preferredSize.width = 50; 
    txtHeight.onChange = function() {
        txtHeight.text = txtHeight.text.replace(/[^0-9.]/g, "");
    };

var lblHeightUnit = grpHeight.add("statictext", undefined, undefined, {name: "lblHeightUnit"}); 
    lblHeightUnit.text = "mm"; 

// PNLOPTIONS
// ==========
var cbAllArtboard = pnlOptions.add("checkbox", undefined, undefined, {name: "cbAllArtboard"}); 
    cbAllArtboard.helpTip = "选中:更改文档中所有画板尺寸\n不选中:只更改当前激活画板尺寸"; 
    cbAllArtboard.text = "所有画板"; 

// GRPACTIONS
// ==========
var grpActions = dialog.add("group", undefined, {name: "grpActions"}); 
    grpActions.orientation = "row"; 
    grpActions.alignChildren = ["left","center"]; 
    grpActions.spacing = 10; 
    grpActions.margins = 0; 

var btnOk = grpActions.add("button", undefined, undefined, {name: "btnOk"}); 
    btnOk.text = "确定"; 
    btnOk.onClick = function() {
        do_Actions("main()");
        dialog.close();        
    } 

var btnCancel = grpActions.add("button", undefined, undefined, {name: "btnCancel"}); 
    btnCancel.text = "关闭"; 
    btnCancel.onClick = function() {
        dialog.close();
    } 

dialog.show();

function do_Actions(Message) {
    var b = new BridgeTalk();
    b.target = "illustrator";
    b.body = Message;
    b.send();
}

function main() {
    try {
        var idoc = app.activeDocument;
        var width  = new UnitValue(parseFloat(txtWidth.text), "mm").as( "pt");
        var height = new UnitValue(parseFloat(txtHeight.text), "mm").as( "pt");
        if(cbAllArtboard.value){
            for (i=0; i<idoc.artboards.length; i++) {
                var abBounds = idoc.artboards[i].artboardRect;
                var aa = resizeArtboards(abBounds, width, height);
                idoc.artboards[i].artboardRect = [aa.left, aa.top, aa.right, aa.bottom];
            }
        } else {
            var ab = idoc.artboards.getActiveArtboardIndex();
            var abBounds = idoc.artboards[ab].artboardRect;
            var aa = resizeArtboards(abBounds, width, height);
            idoc.artboards[ab].artboardRect = [aa.left, aa.top, aa.right, aa.bottom];
        }
    }
    catch(e) {
        alert(e.message);
    }
}
function resizeArtboards(abBounds, width, height) {
    var ableft   = abBounds[0];
    var abtop    = abBounds[1];
    var abwidth  = abBounds[2] - ableft;
    var abheight = abtop- abBounds[3];
    var abctrx   = abwidth / 2 + ableft;
    var abctry   = abtop - abheight / 2;
    var ableft   = abctrx - width  / 2;
    var abtop    = abctry + height / 2;
    var abright  = abctrx + width  / 2;
    var abbottom = abctry - height / 2;
    var props = { left: ableft, top: abtop, right: abright, bottom: abbottom }
    return props;
  }
// 设置确定按钮为默认元素,以便触发回车键点击事件
dialog.defaultElement = btnOk;

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值