Переглянути джерело

源码更新,增加一些简单实用代码

蘭雅sRGB 1 тиждень тому
батько
коміт
c88fdfce2e

+ 6 - 5
jsx/LanyaAITools.jsx

@@ -424,10 +424,11 @@ function make_size() {
   var myFontSize = 24;
   var x, y;
 
-  // 格式化尺寸为 mm 取整数
-  function formatSize(size) {
-    return Math.round(size * mm).toFixed(0);
-  }
+// 格式化尺寸为 mm,按每 0.5 取整
+function formatSize5(size) {
+  var rd = Math.round(size * mm * 2) / 2;
+  return (rd % 1 === 0) ? Math.round(rd) : rd.toFixed(1);
+}
 
   // 设置填充颜色为CMYK红色 (0, 100, 100, 0)
   var cmykRed = new CMYKColor();
@@ -452,7 +453,7 @@ function make_size() {
     for (var i = 0; i < mySelection.length; i++) {
       var s = mySelection[i]
       x = s.left; y = s.top
-      var str = formatSize(s.width) + "x" + formatSize(s.height) + "mm";
+      var str = formatSize5(s.width) + "x" + formatSize5(s.height) + "mm";
       writeText(str)
     }
   }

+ 89 - 0
src/2025.8.1_印刷拉规线和纸张尺寸.jsx

@@ -0,0 +1,89 @@
+#target illustrator
+
+// 设置当前文档
+var doc = activeDocument;
+var str = doc.name;
+str = "材料尺寸: " 
+var mm = 25.4 / 72;  // pt 和 mm 转换系数
+
+var base = new Array();
+base = doc.rulerOrigin;    // 画板标尺原点,相对于画板的左上角
+
+var pw = 0;
+var ph = 0;
+var x = base[0];    // 画板左下角 x 坐标
+var y = - base[1];  // 画板左下角 y 坐标
+var myFont = textFonts.getByName("MicrosoftYaHei");
+var myFontSize = 72;
+
+pw = doc.width;  //  文档宽
+ph = doc.height; //  文档高
+x = pw / 2 - x;     //  转换x坐标: 画板中下x
+
+if (pw < ph){   // 交换 pw 和 ph 的值
+    var temp = pw; 
+    pw = ph;
+    ph = temp;
+}
+
+pwcm = (pw * mm + 3 ) / 10.0;
+phcm = (ph * mm + 12 ) / 10.0;
+str += pwcm.toFixed(0) + "x" + phcm.toFixed(0) + "cm  数量:" ;
+
+// 设置填充颜色为CMYK红色 (0, 100, 100, 0)
+var cmykRed = new CMYKColor();
+cmykRed.cyan = 0;  cmykRed.magenta = 100;
+cmykRed.yellow = 100;  cmykRed.black = 0;
+
+function writeText() {
+  var textRef = doc.textFrames.add();    // 建立文本
+  textRef.contents = str;                   // 填充文本字符串
+  textRef.textRange.characterAttributes.size = myFontSize;   // 设置字体尺寸
+  textRef.textRange.characterAttributes.textFont = myFont;   // 设置字体名称
+  textRef.textRange.characterAttributes.fillColor = cmykRed  // 从颜色版取色简单,但是结果不确定
+  textRef.top = y - 15 / mm;    // 画板底偏移
+  textRef.left = x  - textRef.width / 2  ;   // 画板x中,偏移文本宽和间隔宽
+}
+
+// 如果顶层隐藏,创建新图层
+var al = doc.activeLayer;
+var topLayer = doc.layers[0];
+ 
+if (topLayer.visible == false ||  topLayer.locked == true || al.visible == false || al.locked == true){
+    doc.layers.add();  
+}
+
+writeText();
+
+// 得到当前画板ID 
+var ABID = doc.artboards.getActiveArtboardIndex();
+var p = doc.artboards[ABID].artboardRect; // 获取画板矩形
+
+s15mm = 15 / mm;
+var k100 = new CMYKColor();  k100.black = 100;
+
+if (doc.width > doc.height){  
+  // 创建标记: 印刷拉规线  //  正常印刷横页面,咬口在下
+  var r = doc.pathItems.rectangle(p[3] + s15mm * 2, p[2], s15mm, s15mm / 10);   // 参数 top, left, width, height
+  r.filled = true;   r.fillColor = k100         // 填充矩形
+
+  var wr = doc.pathItems.rectangle(p[3] + s15mm * 2, p[0] - s15mm, s15mm, s15mm / 10);   // 参数 top, left, width, height
+  wr.filled = false; wr.stroked = false; r.stroked = false;      // 透明
+
+  // 增大画板尺寸
+  doc.artboards[ABID].artboardRect = [p[0] - s15mm, p[1], p[2] + s15mm, p[3]];     
+ 
+  var newGroup = doc.groupItems.add(); r.moveToEnd(newGroup);  wr.moveToEnd(newGroup);    // 群组
+} else { 
+  // 创建标记: 印刷拉规线   //  正常印刷竖页面,咬口在左边
+  var r = doc.pathItems.rectangle(p[3] , p[0] + s15mm * 2, s15mm/10, s15mm );   // 参数 top, left, width, height
+  r.filled = true;   r.fillColor = k100 
+
+  var wr = doc.pathItems.rectangle(p[1] + s15mm, p[0] + s15mm * 2, s15mm/10, s15mm);   // 参数 top, left, width, height
+  wr.filled = false; wr.stroked = false; r.stroked = false;      // 透明
+
+  // 增大画板尺寸
+  doc.artboards[ABID].artboardRect = [p[0], p[1] + s15mm, p[2] , p[3] - s15mm];     
+
+  var newGroup = doc.groupItems.add(); r.moveToEnd(newGroup);  wr.moveToEnd(newGroup);    // 群组
+}

+ 60 - 0
src/AI图片剪裁.jsx

@@ -0,0 +1,60 @@
+// script.name = 图像裁剪.jsx; 
+// script.description = 裁剪(真正意义上)放置或嵌入在Illustrator中的位图图像
+// script.requirements = 需要在图像上方有一个矩形路径作为新图像尺寸或裁剪边界
+
+// 使用方法:   绘制一个矩形作为“裁剪路径”,选择矩形和位图图像,运行脚本。
+
+// 特性:       在运行脚本前按住 Shift 键以使用 TypeOptimized 选项进行栅格化,否则脚本将使用默认的 ArtOptimized
+//                     在运行脚本前按住 Alt 键以使用自定义分辨率进行栅格化,否则脚本将使用基础图像分辨率。
+
+#target Illustrator
+
+function 图像裁剪() {
+    if (app.documents.length > 0) {
+        var 当前文档 = app.activeDocument;
+        var 选区 = 当前文档.selection;
+        if (选区.length == 2)
+            图像裁剪处理(选区[0], 选区[1]);
+        else alert('请选择一张图像和一个矩形(用作裁剪区域),然后重试');
+        return;
+    }
+    else alert('没有文档可处理'); return;
+
+    function 图像裁剪处理(矩形, 图像) {
+        if (矩形.typename == 'PathItem' && (图像.typename == 'RasterItem' || 图像.typename == 'PlacedItem')) {
+            
+            var 栅格化选项 = new RasterizeOptions;
+            
+            if(ScriptUI.environment.keyboardState.shiftKey) { // 按下 Shift 键以切换到 TypeOptimized 抗锯齿,否则使用默认的 ArtOptimized
+                栅格化选项.antiAliasingMethod = AntiAliasingMethod.TYPEOPTIMIZED;
+            }
+            else { 
+                栅格化选项.antiAliasingMethod = AntiAliasingMethod.ARTOPTIMIZED;
+            } 
+            
+            if(ScriptUI.environment.keyboardState.altKey) { // 按下 Alt 键以输入自定义分辨率,否则使用图像分辨率
+                var 标题 = '图像裁剪脚本';
+                var a = prompt('请输入目标分辨率', 72, 标题);
+                if (a == null) return;
+                else 栅格化选项.resolution = Number(a);
+            }
+            else {
+                栅格化选项.resolution = 获取对象分辨率(图像);
+            }
+            
+            当前文档.rasterize(图像, 矩形.geometricBounds, 栅格化选项);
+            矩形.remove();
+        }
+        else alert('绘制一个矩形,将其置于位图图像上方,然后重试');
+    }
+
+    function 获取对象分辨率(对象) {
+        var 分辨率宽 = Math.abs(72 / 对象.matrix.mValueA); 
+        var 分辨率高 = Math.abs(72 / 对象.matrix.mValueD); 
+        var 对象分辨率 = Math.round(分辨率宽 > 分辨率高 ? 分辨率宽 : 分辨率高);
+  
+        return 对象分辨率; 
+    }
+}
+
+图像裁剪()

BIN
src/AI画板加页面框.jsx


BIN
src/AI脚本绘制专色色标.jsx


+ 34 - 0
src/AI选相同尺寸物件.jsx

@@ -0,0 +1,34 @@
+// 功能: 在当前图层中选中所有与选中对象尺寸相近的对象
+
+// 获取当前文档
+var doc = app.activeDocument;
+
+// 获取选中的对象
+var sel = doc.selection;
+
+// 确保有选中对象
+if (sel.length === 0) {
+    alert("请先选择一个对象。");
+} else {
+    var w = sel[0].width;
+    var h = sel[0].height;
+
+    // 设置容差值
+    var tolerance = 0.5; // 可以根据需要调整容差值
+
+    // 清空当前选择
+    doc.selection = null;
+
+    // 获取当前图层
+    var currentLayer = doc.activeLayer;
+
+    // 遍历当前图层中的所有对象并选中相同尺寸的对象
+    for (var i = 0; i < currentLayer.pageItems.length; i++) {
+        var item = currentLayer.pageItems[i];
+        if (Math.abs(item.width - w) <= tolerance && Math.abs(item.height - h) <= tolerance) {
+            item.selected = true;
+        }
+    }
+
+    alert("已选中当前图层中所有与选中对象尺寸相近的对象。");
+}

+ 27 - 0
src/AI链接图标文件名.jsx

@@ -0,0 +1,27 @@
+var doc = app.activeDocument;
+var pi = doc.placedItems;
+doc.selection = null;
+var u = 2.834646; // mm 换算
+if (pi.length == 0) {
+    alert("文档上没有链接图");
+} else {
+    for (var i = 0; i != pi.length; ++i) {
+        var placedPath = pi[i].file;
+        var placedName = pi[i].file.displayName;
+        var pathName = pi[i].file.fullName;
+        var txt = doc.textFrames.add();
+        if (false) {
+            // 屏蔽文件路径和名字
+            txt.contents = pathName.toString();
+        } else {
+            txt.contents = placedName.toString()
+        }
+        var m100 = new CMYKColor();
+        m100.magenta = 100;
+
+        txt.textRange.characterAttributes.size = 8 * u;
+        txt.textRange.characterAttributes.fillColor = m100
+        txt.left = pi[i].left;
+        txt.top = pi[i].top - pi[i].height - 8 * u;
+    }
+}