Adobe Illustrator JS脚本:如何读取CSV文件中的坐标值并用于矩形位置定位
Adobe Illustrator JS脚本:如何读取CSV文件中的坐标值并用于矩形位置定位
嘿,你已经搞定最关键的前置步骤啦!能成功调出文件选择框并读取CSV内容,这已经很棒了。接下来只需要把读取到的CSV字符串转换成可直接使用的数值数组,然后用这些数值替代原来固定的mypos + 20逻辑就行,我来一步步给你拆解:
第一步:把CSV内容转成可用的数值数组
你读取到的csvContents是一串逗号分隔的字符串,比如"10, 23, 55, 123, 150 ..."。我们需要把它拆分成单个坐标值,去掉每个值前后的空格,再转换成数字类型:
// 拆分字符串、清理空格、转换为数字数组 var positionArray = csvContents.split(',').map(function(item) { return Number(item.trim()); });
这一步完成后,positionArray就变成了[10, 23, 55, 123, 150, ...]这样的数值数组,完全可以直接拿来用啦。
第二步:遍历数组创建对应位置的矩形
原来的固定循环是创建10个矩形,现在我们直接遍历positionArray的长度,每个数组元素对应一个矩形的位置。我把你的代码整合修改了一下,保持你原来的代码习惯:
完整可用的脚本代码
var myDocument = app.activeDocument; var artLayer = myDocument.activeLayer; // 打开CSV文件选择对话框并读取内容 var csvFile = File.openDialog("Choose CSV file.", "*.csv"); var csvContents = ""; if (csvFile) { csvFile.open('r'); csvContents = csvFile.read(); csvFile.close(); // 将CSV内容处理为数值数组 var positionArray = csvContents.split(',').map(function(item) { return Number(item.trim()); }); // 过滤掉数组里的无效非数值项(可选,防止出错) positionArray = positionArray.filter(num => !isNaN(num)); // 遍历数组,用每个坐标值创建矩形 for (var i = 0; i < positionArray.length; i++) { var currentPos = positionArray[i]; // rectangle参数说明:(top, left, width, height),原点在页面左上角 var rect = artLayer.pathItems.rectangle(0, currentPos, 200, 600); } } else { alert("你没有选择任何CSV文件哦!"); }
小提醒:
- 如果你CSV里的数值是对应矩形的垂直位置(top值),只需要把
rectangle(0, currentPos, ...)改成rectangle(currentPos, 0, ...)就行,因为Illustrator脚本的rectangle()参数顺序是(top, left, width, height),注意坐标原点在页面左上角哦。 - 加了个过滤无效值的逻辑,防止CSV里有空行或者非数字内容导致脚本报错,要是你的CSV数据很干净,也可以把这一行删掉。
备注:内容来源于stack exchange,提问作者Penumbra
相关产品推荐
相关产品推荐

