123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341 |
- #target illustrator
- #targetengine main
- var vs = "illustrator-" + app.version.substr(0, 2);
- var panel = new Window("palette", "蘭雅 Adobe Illustrator 工具箱© 2023.11.11");
- // 创建面板 使用 new Window("palette") ,需要 BridgeTalk, 它是 Adobe 应用程序之间进行通信的一种机制。
- // 它允许不同的 Adobe 应用程序在同一台计算机上进行交互和数据共享。
- // var bt = new BridgeTalk();
- // bt.target = "photoshop"; // 目标应用程序名称
- // bt.body = "alert('Hello from Illustrator!')"; // 要发送的消息或脚本
- // bt.send();
- // 实际代码建立 buildMsg(code) 函数传送代码
- function buildMsg(code) {
- try {
- var bt = new BridgeTalk;
- bt.target = vs;
- var msg = code;
- bt.body = msg;
- bt.send();
- } catch (e) { }
- }
- with (panel) {
- // 创建按钮组
- var BtGroup1 = panel.add("group");
- var BtGroup2 = panel.add("group");
- // 设置按钮组为水平布局
- BtGroup1.orientation = "row";
- BtGroup2.orientation = "row";
- // 添加按钮
- var button1 = BtGroup1.add("button", undefined, "标注尺寸");
- var button2 = BtGroup1.add("button", undefined, "文件名日期");
- var button3 = BtGroup1.add("button", undefined, "借咬口5mm");
- var button4 = BtGroup1.add("button", undefined, "尺寸取整");
- var button5 = BtGroup2.add("button", undefined, "拼版左上对齐");
- var button6 = BtGroup2.add("button", undefined, "物件尺寸大小");
- var button7 = BtGroup2.add("button", undefined, "物件轮廓边界");
- // 设置按钮组的边缘间距 设置按钮间距
- BtGroup1.spacing = 2; // 调整按钮之间的间距
- BtGroup2.spacing = 2;
- // 按钮点击事件处理程序
- button1.onClick = function () {
- buildMsg("make_size();");
- };
- button2.onClick = function () {
- buildMsg("filename_date();");
- };
- button3.onClick = function () {
- buildMsg("mark_5mm();");
- };
- button4.onClick = function () {
- buildMsg("size_to_integer();");
- };
- button5.onClick = function () {
- buildMsg("replace_align_position();");
- };
- button6.onClick = function () {
- buildMsg("size_by_width_height();");
- };
- button7.onClick = function () {
- buildMsg("size_by_controlBounds();");
- };
- }
- // 显示面板
- panel.show();
- //==================================================================================//
- // 蘭雅 Adobe Illustrator 工具箱© 2023.11.11 各个按钮功能模块
- //==================================================================================//
- // 标注尺寸
- function make_size() {
- // 定义当前激活文档
- var docRef = activeDocument;
- var mm = 25.4 / 72; // pt 和 mm 转换系数
- var myFont = textFonts.getByName("MicrosoftYaHei");
- var myFontSize = 24;
- var x, y;
- // 格式化尺寸为 mm 取整数
- function formatSize(size) {
- return Math.round(size * mm).toFixed(0);
- }
- // 设置填充颜色为CMYK红色 (0, 100, 100, 0)
- var cmykRed = new CMYKColor();
- cmykRed.cyan = 0;
- cmykRed.magenta = 100;
- cmykRed.yellow = 100;
- cmykRed.black = 0;
- function writeText(text) {
- var textRef = docRef.textFrames.add(); // 建立文本
- textRef.contents = text;
- textRef.textRange.characterAttributes.size = myFontSize; // 设置字体尺寸
- textRef.textRange.characterAttributes.textFont = myFont; // 设置字体名称
- textRef.textRange.characterAttributes.fillColor = cmykRed; // 设置颜色
- textRef.top = y + 15 / mm;
- textRef.left = x + 10 / mm;
- }
- // 遍历选择的物件标注尺寸
- if (docRef.selection.length > 0) {
- var mySelection = docRef.selection;
- 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";
- writeText(str)
- }
- }
- }
- // 文件名日期
- function filename_date() {
- // 获取当前时间
- function getdate() {
- var d = new Date(), month = '' + (d.getMonth() + 1),
- day = '' + d.getDate(), year = d.getFullYear();
- if (month.length < 2) month = '0' + month;
- if (day.length < 2) day = '0' + day;
- return [year, month, day].join('-');
- }
- // 获取 AI文档名称
- var docRef = activeDocument;
- var str = docRef.name;
- str = str + " " + getdate();
- // alert("本脚本建立一个文本:\n" + str);
- // 文档中建立一个新文本
- // var textRef = docRef.textFrames.add();
- // textRef.top = 100;
- // textRef.left = 200;
- // textRef.contents = str;
- var mm = 25.4 / 72; // pt 和 mm 转换系数
- var base = new Array();
- base = docRef.rulerOrigin; // 画板标尺原点,相对于画板的左上角
- // alert("画板标尺原点mm x:" + base[0] * mm +" y:" + base[1] * mm + "\n画板大小mm 宽:" + docRef.width * mm +" 高:" + docRef.height * mm);
- var pw = 0;
- var ph = 0;
- var x = base[0]; // 画板左下角 x 坐标
- var y = - base[1]; // 画板左下角 y 坐标
- var myFont = textFonts.getByName("MicrosoftYaHei");
- var myFontSize = 8;
- pw = docRef.width; // 文档宽
- ph = docRef.height; // 文档高
- x = pw / 2 - x; // 转换x坐标: 画板中下x
- function filenameDate() {
- var textRef = docRef.textFrames.add(); // 建立文本
- textRef.contents = str; // 填充文本字符串: AI文档名称 + 时间
- textRef.textRange.characterAttributes.size = myFontSize; // 设置字体尺寸
- textRef.textRange.characterAttributes.textFont = myFont; // 设置字体名称
- textRef.textRange.characterAttributes.fillColor = docRef.swatches[1].color; // 设置拼版色
- textRef.top = y + 7.4; // 画板底向上偏移
- textRef.left = x - textRef.width - 10; // 画板x中,偏移文本宽和间隔宽
- }
- filenameDate();
- }
- // 借咬口5mm
- function mark_5mm() {
- // 获取 AI文档名称
- var docRef = activeDocument;
- var str = docRef.name;
- str = "借咬口5mm"
- var mm = 25.4 / 72; // pt 和 mm 转换系数
- var base = new Array();
- base = docRef.rulerOrigin; // 画板标尺原点,相对于画板的左上角
- var pw = 0;
- var ph = 0;
- var x = base[0]; // 画板左下角 x 坐标
- var y = - base[1]; // 画板左下角 y 坐标
- var myFont = textFonts.getByName("MicrosoftYaHei");
- var myFontSize = 64;
- pw = docRef.width; // 文档宽
- ph = docRef.height; // 文档高
- x = pw / 2 - x; // 转换x坐标: 画板中下x
- // 设置填充颜色为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 = docRef.textFrames.add(); // 建立文本
- textRef.contents = str; // 填充文本字符串: AI文档名称 + 时间
- textRef.textRange.characterAttributes.size = myFontSize; // 设置字体尺寸
- textRef.textRange.characterAttributes.textFont = myFont; // 设置字体名称
- textRef.textRange.characterAttributes.fillColor = cmykRed // docRef.swatches[4].color; // 从颜色版取色简单,但是结果不确定
- textRef.top = y - 15; // 画板底向上偏移
- textRef.left = x - textRef.width / 2; // 画板x中,偏移文本宽和间隔宽
- }
- writeText();
- }
- // 尺寸取整
- function size_to_integer() {
- // 定义当前激活文档
- var doc = activeDocument;
- var mm = 25.4 / 72; // pt 和 mm 转换系数
- // 格式化尺寸为 mm 取整数
- function formatSize(size) {
- return Math.round(size * mm).toFixed(0);
- }
- // 遍历选择的物件尺寸取整
- if (doc.selection.length > 0) {
- var src = doc.selection;
- for (var i = 0; i < src.length; i++) {
- var s = src[i]
- s.width = formatSize(s.width) / mm
- s.height = formatSize(s.height) / mm
- }
- }
- }
- // 物件轮廓边界
- function size_by_controlBounds() {
- var docRef = activeDocument;
- // 判断选择物件2个以上
- if (docRef.selection.length > 1) {
- // 定义选择物件
- mySelection = docRef.selection;
- // 最上层物件为替换源
- var sourceObj = docRef.selection[0];
- // 定义数组保存选择物件controlBounds
- var BoundsArray = new Array();
- for (var i = 0; i < mySelection.length; i++) {
- // PageItem.position 获得物件群组左上角坐标
- var sel_Bounds = mySelection[i].controlBounds;
- BoundsArray.push(sel_Bounds);
- }
- // PageItem.duplicate 复制对象, 需要一个相对对象定位
- var newGroup = sourceObj.parent.groupItems.add();
- for (var i = 1; i < BoundsArray.length; i++) {
- var width = BoundsArray[i][2] - BoundsArray[i][0];
- var height = BoundsArray[i][1] - BoundsArray[i][3];
- sourceObj.width = width;
- sourceObj.height = height;
- // 移动源文件到目的物件左上角对齐
- var sel_xy = new Array(BoundsArray[i][0], BoundsArray[i][1]);
- sourceObj.position = sel_xy;
- sourceObj.duplicate(newGroup, ElementPlacement.PLACEATEND);
- }
- sourceObj.remove();
- }
- }
- // 物件尺寸大小
- function size_by_width_height() {
- var doc = activeDocument;
- // 判断选择物件2个以上
- if (doc.selection.length > 1) {
- // 定义选择物件
- src = doc.selection;
- var taget = doc.selection[0];
- // PageItem.position 获得物件群组左上角坐标
- // PageItem.duplicate 复制对象, 需要一个相对对象定位
- // 修改taget大小, 移动到src物件左上角对齐, 复制副本
- var newGroup = taget.parent.groupItems.add();
- for (var i = 1; i < src.length; i++) {
- var sel_xy = src[i].position;
- taget.width = src[i].width;
- taget.height = src[i].height;
- taget.position = sel_xy;
- taget.duplicate(newGroup, ElementPlacement.PLACEATEND);
- }
- taget.remove();
- }
- }
- // 拼版左上对齐
- function replace_align_position() {
- var docRef = activeDocument;
- // 判断选择物件2个以上
- if (docRef.selection.length > 1) {
- // 定义选择物件
- mySelection = docRef.selection;
- // 最上层物件为替换源
- var sourceObj = docRef.selection[0];
- // 定义数组用来保存选择物件的左上角坐标
- var alterObjectArray = new Array();
- for (var i = 0; i < mySelection.length; i++) {
- // PageItem.position 获得物件群组左上角坐标
- var sel_xy = mySelection[i].position
- alterObjectArray.push(sel_xy);
- }
- // 删除用来定位的下层物件
- for (var i = 1; i < mySelection.length; i++) {
- mySelection[i].remove();
- }
- // PageItem.duplicate 复制对象, 需要一个相对对象定位
- var newGroup = sourceObj.parent.groupItems.add();
- for (var i = 1; i < alterObjectArray.length; i++) {
- sourceObj.position = alterObjectArray[i]; // 设置替换物的左上角位置,达到替换目的
- sourceObj.duplicate(newGroup, ElementPlacement.PLACEATEND);
- }
- sourceObj.remove();
- }
- }
|