indusrain 发表于 2024-8-27 09:20:15

AI 批量生成矩形脚本

可以配合 ai_scriptmix-master 插件使用方便

复制已下内容到记事本打开就行另存jsx格式

需要再ai文档里写上尺寸例如以下

8x10cm
5x8cm
9x9cm

以这样的格式生成的

#target illustrator

if (app.documents.length > 0 && app.selection.length > 0) {
    var doc = app.activeDocument;
    var selectedItems = app.selection;

    // 循环处理每个选中的文本框
    for (var j = 0; j < selectedItems.length; j++) {
      var selectedItem = selectedItems;

      if (selectedItem.typename == "TextFrame") {
            var textFrame = selectedItem;
            var textContents = textFrame.contents.split('\r');

            // 获取文本框的左上角坐标
            var textBounds = textFrame.geometricBounds;
            var initialLeft = textBounds;
            var initialTop = textBounds;

            // 循环处理每行文本
            for (var i = 0; i < textContents.length; i++) {
                var textContent = textContents.replace(/^\s+|\s+$/g, ''); // 手动去除前后的空格

                // 使用正则表达式匹配格式为 "8x10cm" 的文本
                var dimensions = textContent.match(/^(\d+(?:\.\d+)?)\s*x\s*(\d+(?:\.\d+)?)\s*cm$/i);
                if (dimensions && dimensions.length == 3) {
                  var width = parseFloat(dimensions) * 28.3465;// 转换为点(points)
                  var height = parseFloat(dimensions) * 28.3465; // 转换为点(points)

                  // 计算每个矩形的位置
                  var rectLeft = initialLeft;
                  var rectTop = initialTop - (i * height) - (i * 10); // 为每个矩形加上间距

                  // 创建新的矩形
                  var rect = doc.pathItems.rectangle(rectTop, rectLeft, width, height);

                  // 可选:将矩形置于文本框后面
                  rect.zOrder(ZOrderMethod.SENDTOBACK);
                } else {
                  alert("第 " + (i + 1) + " 行文本格式应为 '宽度x高度cm',例如 '8x10cm'。");
                }
            }
      } else {
            alert("请选择一个文本框。");
      }
    }

    alert("所有矩形已生成。");
} else {
    alert("请打开一个文档并选择一个或多个文本框。");
}






页: [1]
查看完整版本: AI 批量生成矩形脚本