Adobe Illustrator脚本矩形剪切蒙版调整尺寸数值不符问题求助
问题原因
- 代码中存在未定义变量
center_point,对应修改元素位置的两行代码执行异常,导致组内元素偏移,最终统计的组整体高度不符合预期 - 使用
executeMenuCommand("selectall")全选文档元素逻辑错误,会将文档内除了目标图形、新建矩形之外的其他元素也加入编组,拉高整体尺寸 if (found = true)为赋值操作而非判断操作,即使未找到目标图形也会执行后续逻辑,存在风险- 直接修改剪切蒙版组的
height属性时,Illustrator默认会对组内所有元素(包括剪切路径、内部图形)同步执行等比缩放,未关闭等比缩放的前提下调整高度会同步拉伸宽度,也会导致最终尺寸不符合预期
修正后代码
var doc = app.activeDocument; var layers = doc.layers; var myLayer = layers["Layer 1"]; var vals = 0; var tzim = 0; var side = 0; //width || height var targetGroup = null; // mm转点单位转换 function mm(n) {return n * 2.83464566929134;} doc.selection = null; var found = false; for(var a=0 ;a<myLayer.groupItems.length; a++) { if (myLayer.groupItems[a].name == "fish400") { vals = mm(400); tzim = mm(18); side = 1; found = true; targetGroup = myLayer.groupItems[a]; } } if (found) { // 仅选中目标图形和新建矩形,避免混入其他元素 var rect = myLayer.pathItems.rectangle(0,0,vals,vals); doc.selection = [targetGroup, rect]; var groupItem = doc.groupItems.add(); var count = selection.length; for(var i = 0; i < count; i++) { var item = selection[selection.length - 1]; item.moveToBeginning(groupItem); } // 开启剪切蒙版 groupItem.clipped = true; // 调整尺寸:需要剪切后整体缩放至指定高度用以下逻辑 if (side == 1) { // 关闭等比缩放避免宽度同步变化 groupItem.scalingUniform = false; groupItem.height = vals - tzim; } else if (side == 0) { groupItem.scalingUniform = false; groupItem.width = vals - tzim; } // 若不需要缩放内部内容,仅调整剪切边界高度,可把上面的调整逻辑替换为以下代码 // var clipPath = groupItem.pathItems[0]; // if (side == 1) { // clipPath.height = vals - tzim; // } else { // clipPath.width = vals - tzim; // } }
额外注意事项
- 运行前请确认文档的标尺单位设置为点,避免单位转换出现偏差
- 若调整后位置偏移,可以根据实际需求提前定义
center_point坐标值,再添加组位置调整逻辑
内容的提问来源于stack exchange,提问作者goamalo
相关产品推荐
相关产品推荐

