Files
DP/tempdemo/psmark/JSX3.py

2203 lines
70 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
dxf2_jscode = """
function 设置花样组顺序居中() {
var doc = app.activeDocument;
var targetLayerSet = null;
// 遍历所有图层组
for (var i = 0; i < doc.layerSets.length; i++) {
var layerSet = doc.layerSets[i];
// 判断图层组名称是否包含"大货裁片"
if (layerSet.name.indexOf("大货裁片") !== -1) {
targetLayerSet = layerSet; // 找到匹配的图层组
break; // 中断循环,不再继续遍历其他图层组
}
}
// 判断是否找到匹配的图层组
if (targetLayerSet) {
// 判断图层组中是否存在图层
if (targetLayerSet.layers.length > 0) {
// 在这里执行处理图层的操作
var currentDocument = app.activeDocument;
var matchCount = 0; // 匹配到的数值计数
var existingPatternSet = false;
var layerNames = []; // 保存匹配到的图层名称的数组
// 遍历图层
for (var j = 0; j < currentDocument.layers.length; j++) {
var layer = currentDocument.layers[j];
var layerName = layer.name;
// 检查图层名称是否以P开头并且后面跟着数字
if (/^P\d+$/.test(layerName)) {
matchCount++;
layerNames.push(layerName); // 将匹配到的图层名称添加到数组中
}
}
// 输出匹配到的数值个数
// $.writeln("匹配到的数值个数:" + matchCount);
// 遍历保存的图层名称数组
for (var i = 0; i < layerNames.length; i++) {
var name = layerNames[i];
var 当前花样图层 = app.activeDocument.layers.getByName(name);
app.activeDocument.activeLayer = 当前花样图层;
选择蒙版();
载入选区蒙版()
//应用图层蒙版();
var layerCenterInfo = 获取当前图层中心坐标();
if (layerCenterInfo !== null) {
var layerName = layerCenterInfo.layerName;
var 花样图层X = layerCenterInfo.centerX;
var 花样图层Y = layerCenterInfo.centerY;
// $.writeln("图层名称:" + layerName);
//$.writeln("中心坐标:(" + centerX + ", " + centerY + ")");
} else {
$.writeln("无法获取当前图层中心坐标。");
}
//历史记录回退();
var 裁片组名称 = name + "-大货裁片";
var 裁片组 = app.activeDocument.layerSets.getByName(裁片组名称);
app.activeDocument.activeLayer = 裁片组;
对裁片进行大小排序();
app.activeDocument.activeLayer = 裁片组;
var centerCoordinates = 获取图层组中心坐标();
if (centerCoordinates !== null) {
var 空白裁片组X = centerCoordinates[0];
var 空白裁片组Y = centerCoordinates[1];
app.activeDocument.activeLayer.translate(
花样图层X - Number(空白裁片组X),
花样图层Y - Number(空白裁片组Y)
); //全局单位设置为mm即可
//$.writeln("图层组中心坐标:(" + centerX + ", " + centerY + ")");
} else {
$.writeln("无法获取图层组中心坐标。");
}
}
} else {
// 如果图层组中不存在图层,执行其他操作或退出程序
alert("当前大货裁片内未抓取裁片!!!");
}
} else {
// 如果没有找到匹配的图层组,退出程序
//alert("当前文档未设置大货裁片组!!!");
}
}
function 顺时针90旋转() //自由变换
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("null"), r);
d.putEnumerated(stringIDToTypeID("freeTransformCenterState"), stringIDToTypeID("quadCenterState"), stringIDToTypeID("QCSAverage"));
var d1 = new ActionDescriptor();
d1.putUnitDouble(stringIDToTypeID("horizontal"), stringIDToTypeID("pixelsUnit"), 0);
d1.putUnitDouble(stringIDToTypeID("vertical"), stringIDToTypeID("pixelsUnit"), 0);
d.putObject(stringIDToTypeID("offset"), stringIDToTypeID("offset"), d1);
d.putUnitDouble(stringIDToTypeID("angle"), stringIDToTypeID("angleUnit"), 90);
d.putBoolean(stringIDToTypeID("linked"), true);
d.putEnumerated(charIDToTypeID("Intr"), stringIDToTypeID("interpolationType"), stringIDToTypeID("nearestNeighbor"));
executeAction(stringIDToTypeID("transform"), d, DialogModes.NO);
}
function 逆时针90旋转() //自由变换
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("null"), r);
d.putEnumerated(stringIDToTypeID("freeTransformCenterState"), stringIDToTypeID("quadCenterState"), stringIDToTypeID("QCSAverage"));
var d1 = new ActionDescriptor();
d1.putUnitDouble(stringIDToTypeID("horizontal"), stringIDToTypeID("pixelsUnit"), 0);
d1.putUnitDouble(stringIDToTypeID("vertical"), stringIDToTypeID("pixelsUnit"), 0);
d.putObject(stringIDToTypeID("offset"), stringIDToTypeID("offset"), d1);
d.putUnitDouble(stringIDToTypeID("angle"), stringIDToTypeID("angleUnit"), -90);
d.putBoolean(stringIDToTypeID("linked"), true);
d.putEnumerated(charIDToTypeID("Intr"), stringIDToTypeID("interpolationType"), stringIDToTypeID("nearestNeighbor"));
executeAction(stringIDToTypeID("transform"), d, DialogModes.NO);
}
function 选择蒙版() //选择蒙版
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("channel"), stringIDToTypeID("mask"));
d.putReference(stringIDToTypeID("null"), r);
d.putBoolean(stringIDToTypeID("makeVisible"), false);
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
}
function 应用图层蒙版() //应用图层蒙版
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("null"), r);
d.putBoolean(stringIDToTypeID("apply"), true);
executeAction(stringIDToTypeID("delete"), d, DialogModes.NO);
}
function 获取当前图层中心坐标() {
var currentDocument = app.activeDocument;
var selectionBounds = currentDocument.selection.bounds;
var currentLayer = currentDocument.activeLayer;
if (selectionBounds) {
var centerX = selectionBounds[0] + (selectionBounds[2] - selectionBounds[0]) / 2;
var centerY = selectionBounds[1] + (selectionBounds[3] - selectionBounds[1]) / 2;
return {
layerName: currentLayer.name,
centerX: centerX,
centerY: centerY
};
} else {
$.writeln("没有当前选区。");
return null;
}
}
function 历史记录回退() //
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putOffset(stringIDToTypeID("historyState"), -1);
d.putReference(stringIDToTypeID("null"), r);
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
}
function 获取图层组中心坐标() {
var currentDocument = app.activeDocument;
var currentLayer = currentDocument.activeLayer;
if (currentLayer.typename === "LayerSet") {
var layers = currentLayer.layers;
if (layers.length > 0) {
var firstLayer = layers[0];
var bounds = firstLayer.bounds;
var centerX = bounds[0] + (bounds[2] - bounds[0]) / 2;
var centerY = bounds[1] + (bounds[3] - bounds[1]) / 2;
return [centerX, centerY];
} else {
$.writeln("图层组没有任何图层。");
}
} else {
$.writeln("当前图层不是图层组。");
}
// 如果无法获取图层组的中心坐标,则返回 null
return null;
}
function 载入选区蒙版() //载入选区
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putProperty(stringIDToTypeID("channel"), stringIDToTypeID("selection"));
d.putReference(stringIDToTypeID("null"), r);
var r1 = new ActionReference();
r1.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("to"), r1);
executeAction(stringIDToTypeID("set"), d, DialogModes.NO);
}
function 对裁片进行大小排序() {
var currentDocument = app.activeDocument;
var currentLayer = currentDocument.activeLayer;
if (currentLayer.typename === "LayerSet") {
var layers = currentLayer.layers;
if (layers.length > 0) {
var layerArray = [];
// 遍历图层组的每个图层,将图层和它们的宽度、高度存储到数组中
for (var i = 0; i < layers.length; i++) {
var layer = layers[i];
if (layer.kind === LayerKind.NORMAL && layer.bounds) {
var width = layer.bounds[2] - layer.bounds[0];
var height = layer.bounds[3] - layer.bounds[1];
layerArray.push({
layer: layer,
width: width,
height: height
});
}
}
// 按照宽度和高度从大到小排序图层数组
layerArray.sort(function(a, b) {
if (a.width === b.width) {
return b.height - a.height;
}
return b.width - a.width;
});
// 创建一个临时图层组,用于存放排序后的裁片
var tempGroup = currentLayer.parent.layerSets.add();
// 将排序后的裁片依次移动到临时图层组中
for (var i = 0; i < layerArray.length; i++) {
var layerInfo = layerArray[i];
var layer = layerInfo.layer;
layer.move(tempGroup, ElementPlacement.INSIDE);
}
// 将临时图层组的裁片移动回原始图层组中
for (var i = tempGroup.layers.length - 1; i >= 0; i--) {
var layer = tempGroup.layers[i];
layer.move(currentLayer, ElementPlacement.PLACEATBEGINNING);
}
// 删除临时图层组
tempGroup.remove();
$.writeln("已对裁片进行大小排序。");
} else {
$.writeln("图层组没有任何图层。");
}
} else {
$.writeln("当前图层不是图层组。");
}
}
////////////////主函数体领口对齐
function 领口对齐() {
var groupName = 获取当前图层组名称();
if (groupName !== null) {
app.preferences.rulerUnits = Units.PIXELS;
var splitGroupName = groupName.split("-");
var firstPart = splitGroupName[0];
} else {
// 如果未获取到当前图层组名称,退出程序
// alert("未获取到当前图层组名称!");
return;
}
try {
当前花样图层 = app.activeDocument.layers.getByName(firstPart);
} catch (e) {
// 处理异常情况
alert("没有找到对应的花样裁片: ");
return; // 中断函数执行
}
app.activeDocument.activeLayer = 当前花样图层;
切换mask();
应用图层蒙版();
载入选区();
var 边距 = 获取当前选区四边距();
var 获取左右的中心坐标 = (边距.right - 边距.left) / 2 + 边距.left;
$.writeln("中心坐标=" + 获取左右的中心坐标);
var currentDocument = app.activeDocument;
var height = currentDocument.height.value;
var 上边距新 = 0;
var 左边距新 = 获取左右的中心坐标 - 1;
var 下边距新 = height;
var 右边距新 = 获取左右的中心坐标 + 1;
var 边距 = 获取当前选区四边距();
$.writeln("上边距:" + 边距.top);
$.writeln("左边距:" + 边距.left);
$.writeln("下边距:" + 边距.bottom);
$.writeln("右边距:" + 边距.right);
历史记录回退领口函数();
新建选区(上边距新, 左边距新, 下边距新, 右边距新);
app.activeDocument.activeLayer = 当前花样图层;
切换mask();
选区减去();
var 领窝边距 = 获取当前选区四边距();
var 获取到花样图层当前居中领口坐标信息 = 领窝边距.top;
$.writeln("居中领口坐标信息" + 获取到花样图层当前居中领口坐标信息);
历史记录回退1领口函数();
var currentDocument = app.activeDocument;
var targetLayerSet = currentDocument.layerSets.getByName(groupName);
if (targetLayerSet) {
var layers = targetLayerSet.layers;
if (layers.length > 0) {
for (var i = 0; i < layers.length; i++) {
var layer = layers[i];
var 裁片图层 = layer.name;
$.writeln("裁片图层坐标信息=" + 裁片图层);
try {
var 当前裁片图层 = app.activeDocument.layerSets.getByName(groupName).layers.getByName(裁片图层);
} catch (e) {
// 处理异常情况
alert("没有找到对应的花样裁片 " );
return; // 中断函数执行
}
app.activeDocument.activeLayer = 当前裁片图层;
选区减去2();
var 领窝边距A = 获取当前选区四边距();
var 获取到当前裁片图层当前居中领口坐标信息 = 领窝边距A.top;
$.writeln("裁片领口" + 获取到当前裁片图层当前居中领口坐标信息);
历史记录回退1领口函数();
取消选择();
var 当前裁片图层 = app.activeDocument.layerSets.getByName(groupName).layers.getByName(裁片图层);
app.activeDocument.activeLayer = 当前裁片图层;
var 位移距离PX = 获取到花样图层当前居中领口坐标信息 - 获取到当前裁片图层当前居中领口坐标信息;
自由变换(位移距离PX);
新建选区(上边距新, 左边距新, 下边距新, 右边距新);
$.writeln("分割后的第一个部分:" + firstPart);
}
}
}
取消选择();
}
////////////////主函数体
function 获取当前图层组名称() {
var currentDocument = app.activeDocument;
var currentLayer = currentDocument.activeLayer;
if (currentLayer.typename === "LayerSet") {
var groupName = currentLayer.name;
return groupName;
} else {
alert("当前图层不是图层组。");
return null;
}
}
function 切换mask() //
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("channel"), stringIDToTypeID("mask"));
d.putReference(stringIDToTypeID("null"), r);
d.putBoolean(stringIDToTypeID("makeVisible"), false);
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
}
function 应用图层蒙版() //应用图层蒙版
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("null"), r);
d.putBoolean(stringIDToTypeID("apply"), true);
executeAction(stringIDToTypeID("delete"), d, DialogModes.NO);
}
function 载入选区() //载入选区
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putProperty(stringIDToTypeID("channel"), stringIDToTypeID("selection"));
d.putReference(stringIDToTypeID("null"), r);
var r1 = new ActionReference();
r1.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("channel"), stringIDToTypeID("transparencyEnum"));
d.putReference(stringIDToTypeID("to"), r1);
executeAction(stringIDToTypeID("set"), d, DialogModes.NO);
}
function 获取当前选区四边距() {
var currentDocument = app.activeDocument;
var selectionBounds = currentDocument.selection.bounds;
var top = selectionBounds[1].value;
var left = selectionBounds[0].value;
var bottom = selectionBounds[3].value;
var right = selectionBounds[2].value;
return {
top: top,
left: left,
bottom: bottom,
right: right
};
}
function 新建选区(上边距, 左边距, 下边距, 右边距) {
var currentDocument = app.activeDocument;
var top = 上边距;
var left = 左边距;
var bottom = 下边距;
var right = 右边距;
var selectionRegion = Array(Array(left, top), Array(right, top), Array(right, bottom), Array(left, bottom));
currentDocument.selection.select(selectionRegion);
}
function 获取当前文档四边距() {
var currentDocument = app.activeDocument;
var documentBounds = currentDocument.bounds;
var top = documentBounds[1].value;
var left = documentBounds[0].value;
var bottom = documentBounds[3].value;
var right = documentBounds[2].value;
return {
top: top,
left: left,
bottom: bottom,
right: right
};
}
function 选区减去() //载入选区
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("null"), r);
var r1 = new ActionReference();
r1.putProperty(stringIDToTypeID("channel"), stringIDToTypeID("selection"));
d.putReference(stringIDToTypeID("with"), r1);
executeAction(charIDToTypeID("Intr"), d, DialogModes.NO);
}
function 历史记录回退领口函数() //
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putOffset(stringIDToTypeID("historyState"), -2 );
d.putReference(stringIDToTypeID("null"), r);
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
}
function 历史记录回退1领口函数() //
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putOffset(stringIDToTypeID("historyState"), -1 );
d.putReference(stringIDToTypeID("null"), r);
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
}
function 遍历图层组内的图层(图层组名称) {
var currentDocument = app.activeDocument;
var targetLayerSet = currentDocument.layerSets.getByName(图层组名称);
if (targetLayerSet) {
var layers = targetLayerSet.layers;
if (layers.length > 0) {
for (var i = 0; i < layers.length; i++) {
var layer = layers[i];
// 在这里对每个图层进行进一步的操作
$.writeln("图层名称:" + layer.name);
}
} else {
$.writeln("图层组中没有任何图层。");
}
} else {
$.writeln("找不到指定名称的图层组。");
}
}
function 选区减去2() //
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("channel"), stringIDToTypeID("transparencyEnum"));
d.putReference(stringIDToTypeID("null"), r);
var r1 = new ActionReference();
r1.putProperty(stringIDToTypeID("channel"), stringIDToTypeID("selection"));
d.putReference(stringIDToTypeID("with"), r1);
executeAction(charIDToTypeID("Intr"), d, DialogModes.NO);
}
function 自由变换(位移距离PX) //自由变换
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("null"), r);
d.putEnumerated(stringIDToTypeID("freeTransformCenterState"), stringIDToTypeID("quadCenterState"), stringIDToTypeID("QCSAverage"));
var d1 = new ActionDescriptor();
d1.putUnitDouble(stringIDToTypeID("horizontal"), stringIDToTypeID("pixelsUnit"), 0);
d1.putUnitDouble(stringIDToTypeID("vertical"), stringIDToTypeID("pixelsUnit"), 位移距离PX);
d.putObject(stringIDToTypeID("offset"), stringIDToTypeID("offset"), d1);
d.putBoolean(stringIDToTypeID("linked"), true);
d.putEnumerated(charIDToTypeID("Intr"), stringIDToTypeID("interpolationType"), stringIDToTypeID("nearestNeighbor"));
executeAction(stringIDToTypeID("transform"), d, DialogModes.NO);
}
function 取消选择() //取消选择
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putProperty(stringIDToTypeID("channel"), stringIDToTypeID("selection"));
d.putReference(stringIDToTypeID("null"), r);
d.putEnumerated(stringIDToTypeID("to"), stringIDToTypeID("ordinal"), stringIDToTypeID("none"));
executeAction(stringIDToTypeID("set"), d, DialogModes.NO);
}
////////////////主函数体领口对齐
function 烧花线添加() {
app.activeDocument.suspendHistory("烧花线添加", "烧花线()");
}
function 烧花线() {
// 遍历当前文档图层
var doc = app.activeDocument;
var layers = doc.layers;
var filteredLayers = [];
// 遍历图层筛选以P开头的图层
for (var i = 0; i < layers.length; i++) {
var layer = layers[i];
if (layer.name.charAt(0) === 'P') {
filteredLayers.push(layer);
}
}
空置图层()
// 输出图层名称
for (var j = 0; j < filteredLayers.length; j++) {
var filteredLayer = filteredLayers[j];
var 裁片底图名称=filteredLayer.name;
多选图层(裁片底图名称);
// alert(filteredLayer.name);
}
合并图层();
置为顶层();
var layer = app.activeDocument.activeLayer;
layer.name = "底图";
色彩范围()
新建图层()
var layer2 = app.activeDocument.activeLayer;
layer2.name = "剪口";
扩展2();
填充();
画布大小();
魔棒();
扩展();
选择反向();
清除();
var 底图 = app.activeDocument.layers.getByName( "底图");
app.activeDocument.activeLayer=底图;
置为底层()
图层样式()
取消选择()
function 多选图层(裁片底图名称) //
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putName(stringIDToTypeID("layer"), 裁片底图名称);
d.putReference(stringIDToTypeID("null"), r);
d.putEnumerated(stringIDToTypeID("selectionModifier"), stringIDToTypeID("selectionModifierType"), stringIDToTypeID("addToSelection"));
d.putBoolean(stringIDToTypeID("makeVisible"), false);
var list = new ActionList();
list.putInteger(4);
d.putList(stringIDToTypeID("layerID"), list);
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
}
function 空置图层() //
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("null"), r);
executeAction(stringIDToTypeID("selectNoLayers"), d, DialogModes.NO);
}
function 合并图层() //合并图层
{
var d = new ActionDescriptor();
executeAction(stringIDToTypeID("mergeLayersNew"), d, DialogModes.NO);
}
function 置为底层() //置为底层
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("null"), r);
var r1 = new ActionReference();
r1.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("back"));
d.putReference(stringIDToTypeID("to"), r1);
executeAction(stringIDToTypeID("move"), d, DialogModes.NO);
}
function 置为顶层() //置为顶层
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("null"), r);
var r1 = new ActionReference();
r1.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("front"));
d.putReference(stringIDToTypeID("to"), r1);
executeAction(stringIDToTypeID("move"), d, DialogModes.NO);
}
function 色彩范围() //色彩范围
{
var d = new ActionDescriptor();
d.putInteger(stringIDToTypeID("fuzziness"), 40);
var d1 = new ActionDescriptor();
d1.putDouble(stringIDToTypeID("luminance"), 0);
d1.putDouble(stringIDToTypeID("a"), 0);
d1.putDouble(stringIDToTypeID("b"), 0);
d.putObject(stringIDToTypeID("minimum"), stringIDToTypeID("labColor"), d1);
var d2 = new ActionDescriptor();
d2.putDouble(stringIDToTypeID("luminance"), 0);
d2.putDouble(stringIDToTypeID("a"), 0);
d2.putDouble(stringIDToTypeID("b"), 0);
d.putObject(stringIDToTypeID("maximum"), stringIDToTypeID("labColor"), d2);
d.putInteger(stringIDToTypeID("colorModel"), 0);
executeAction(stringIDToTypeID("colorRange"), d, DialogModes.NO);
}
function 新建图层() //新建图层
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putClass(stringIDToTypeID("layer"));
d.putReference(stringIDToTypeID("null"), r);
d.putInteger(stringIDToTypeID("layerID"), 33);
executeAction(stringIDToTypeID("make"), d, DialogModes.NO);
}
function 扩展2() //扩展
{
var d = new ActionDescriptor();
d.putUnitDouble(stringIDToTypeID("by"), stringIDToTypeID("pixelsUnit"), 1);
d.putBoolean(stringIDToTypeID("selectionModifyEffectAtCanvasBounds"), false);
executeAction(stringIDToTypeID("expand"), d, DialogModes.NO);
}
function 填充() //填充
{
var d = new ActionDescriptor();
d.putEnumerated(stringIDToTypeID("using"), stringIDToTypeID("fillContents"), stringIDToTypeID("foregroundColor"));
d.putUnitDouble(stringIDToTypeID("opacity"), stringIDToTypeID("percentUnit"), 100);
d.putEnumerated(stringIDToTypeID("mode"), stringIDToTypeID("blendMode"), stringIDToTypeID("normal"));
executeAction(stringIDToTypeID("fill"), d, DialogModes.NO);
}
function 画布大小() //画布大小
{
var d = new ActionDescriptor();
d.putBoolean(stringIDToTypeID("relative"), true);
d.putUnitDouble(stringIDToTypeID("width"), stringIDToTypeID("distanceUnit"), 28.3200028808597);
d.putUnitDouble(stringIDToTypeID("height"), stringIDToTypeID("distanceUnit"), 28.3200028808597);
d.putEnumerated(stringIDToTypeID("horizontal"), stringIDToTypeID("horizontalLocation"), stringIDToTypeID("center"));
d.putEnumerated(stringIDToTypeID("vertical"), stringIDToTypeID("verticalLocation"), stringIDToTypeID("center"));
executeAction(stringIDToTypeID("canvasSize"), d, DialogModes.NO);
}
function 魔棒() //魔棒
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putProperty(stringIDToTypeID("channel"), stringIDToTypeID("selection"));
d.putReference(stringIDToTypeID("null"), r);
var d1 = new ActionDescriptor();
d1.putUnitDouble(stringIDToTypeID("horizontal"), stringIDToTypeID("pixelsUnit"), 1);
d1.putUnitDouble(stringIDToTypeID("vertical"), stringIDToTypeID("pixelsUnit"), 1);
d.putObject(stringIDToTypeID("to"), stringIDToTypeID("point"), d1);
d.putInteger(stringIDToTypeID("tolerance"), 6);
executeAction(stringIDToTypeID("set"), d, DialogModes.NO);
}
function 扩展() //扩展
{
var d = new ActionDescriptor();
d.putUnitDouble(stringIDToTypeID("by"), stringIDToTypeID("pixelsUnit"), 25);
d.putBoolean(stringIDToTypeID("selectionModifyEffectAtCanvasBounds"), false);
executeAction(stringIDToTypeID("expand"), d, DialogModes.NO);
}
function 选择反向() //选择反向
{
var d = new ActionDescriptor();
executeAction(stringIDToTypeID("inverse"), d, DialogModes.NO);
}
function 清除() //清除
{
var d = new ActionDescriptor();
executeAction(stringIDToTypeID("delete"), d, DialogModes.NO);
}
function 图层样式() //图层样式
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putProperty(stringIDToTypeID("property"), stringIDToTypeID("layerEffects"));
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("null"), r);
var d1 = new ActionDescriptor();
d1.putUnitDouble(stringIDToTypeID("scale"), stringIDToTypeID("percentUnit"), 208.333312140571);
var d2 = new ActionDescriptor();
d2.putBoolean(stringIDToTypeID("enabled"), true);
d2.putBoolean(stringIDToTypeID("present"), true);
d2.putBoolean(stringIDToTypeID("showInDialog"), true);
d2.putEnumerated(stringIDToTypeID("style"), stringIDToTypeID("frameStyle"), stringIDToTypeID("outsetFrame"));
d2.putEnumerated(stringIDToTypeID("paintType"), stringIDToTypeID("frameFill"), stringIDToTypeID("solidColor"));
d2.putEnumerated(stringIDToTypeID("mode"), stringIDToTypeID("blendMode"), stringIDToTypeID("normal"));
d2.putUnitDouble(stringIDToTypeID("opacity"), stringIDToTypeID("percentUnit"), 100);
d2.putUnitDouble(stringIDToTypeID("size"), stringIDToTypeID("pixelsUnit"), 16);
var d3 = new ActionDescriptor();
d3.putDouble(stringIDToTypeID("red"), 255);
d3.putDouble(stringIDToTypeID("green"), 0);
d3.putDouble(stringIDToTypeID("blue"), 0);
d2.putObject(stringIDToTypeID("color"), stringIDToTypeID("RGBColor"), d3);
d2.putBoolean(stringIDToTypeID("overprint"), false);
d1.putObject(stringIDToTypeID("frameFX"), stringIDToTypeID("frameFX"), d2);
d.putObject(stringIDToTypeID("to"), stringIDToTypeID("layerEffects"), d1);
executeAction(stringIDToTypeID("set"), d, DialogModes.NO);
}
function 取消选择() //取消选择
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putProperty(stringIDToTypeID("channel"), stringIDToTypeID("selection"));
d.putReference(stringIDToTypeID("null"), r);
d.putEnumerated(stringIDToTypeID("to"), stringIDToTypeID("ordinal"), stringIDToTypeID("none"));
executeAction(stringIDToTypeID("set"), d, DialogModes.NO);
}
}
//////////////////////////////标记函数
function 信息标记2() {
RUN1()
RUN2()
}
function RUN1(){
app.preferences.rulerUnits = Units.CM;
// 获取当前选区
var currentSelection = app.activeDocument.selection;
// 确保当前选区不为空且为矩形选区
if (currentSelection != null && currentSelection.hasOwnProperty('bounds')) {
// 获取当前选区的坐标
var bounds = currentSelection.bounds;
// 获取当前选区的宽度和高度(以 cm 为单位)
var resolution = app.activeDocument.resolution;
var widthInCM = (bounds[2].as("cm") - bounds[0].as("cm"));
var heightInCM = (bounds[3].as("cm") - bounds[1].as("cm"));
// 将宽度和高度输出到调试台
$.writeln("宽度:" + widthInCM.toFixed(2) + "cm");
$.writeln("高度:" + heightInCM.toFixed(2) + "cm");
// 创建一个文本图层
var textLayer = app.activeDocument.artLayers.add();
textLayer.kind = LayerKind.TEXT;
// 设置文本图层的文本内容
textLayer.textItem.contents = "宽度:" + widthInCM.toFixed(2) + "cm高度" + heightInCM.toFixed(2) + "cm";
textLayer.textItem.size = 40
// 将文本图层移动到选区的最上方
textLayer.textItem.position = [app.activeDocument.width / 2, app.activeDocument.height / 2-2];
}
}
function RUN2()
{
// 获取当前活动文档
var currentDocument = app.activeDocument;
// 获取当前文档的文件名
var fileName = currentDocument.name;
// 去掉文件名的后缀名
var fileNameWithoutExtension = fileName.split('.').slice(0, -1).join('.');
// 用分割符 "-" 分割文件名
var fileNameParts = fileNameWithoutExtension.split('-');
// 获取最后两个数组
var lastTwoParts = fileNameParts.slice(-2);
// 创建一个新的文本图层
var textLayer = currentDocument.artLayers.add();
textLayer.kind = LayerKind.TEXT;
// 设置文本图层的文本内容
textLayer.textItem.contents = fileNameWithoutExtension;
textLayer.textItem.size = 50
// 可选:将文本图层移动到文档的中心
textLayer.textItem.position = [currentDocument.width / 2, currentDocument.height / 2];
}
//////////////////////////////标记函数
//////////////////////////////标记函数
function 批量缩水值修改(宽度值,高度值) {
app.preferences.rulerUnits = Units.CM;
var 主文档 = app.activeDocument;
var 主文档名称 = 主文档.name;
// 遍历当前打开的文档
for (var i = 0; i < app.documents.length; i++) {
var document = app.documents[i];
var documentName = document.name;
// 判断文档名称是否与主文档名称不相同
if (documentName !== 主文档名称) {
// 设置当前文档为活动文档
app.activeDocument = document;
var 匹配图层数组 = 遍历图层查找P1();
// 遍历匹配图层数组
for (var j = 0; j < 匹配图层数组.length; j++) {
var 当前匹配图层 = 匹配图层数组[j];
}
// 选中当前匹配图层
// 获取当前选区
var currentSelection = app.activeDocument.selection;
// 确保当前选区不为空且为矩形选区
if (currentSelection != null && currentSelection.hasOwnProperty('bounds')) {
// 进行缩放操作
app.activeDocument.activeLayer = 当前匹配图层;
// 载入选区
载入选区();
// 获取当前选区的坐标
var bounds = currentSelection.bounds;
// 获取当前选区的宽度和高度(以 cm 为单位)
var resolution = app.activeDocument.resolution;
var widthInCM = (bounds[2].as("cm") - bounds[0].as("cm"));
var heightInCM = (bounds[3].as("cm") - bounds[1].as("cm"));
var 当前P1图层宽高信息 = "宽度:" + widthInCM.toFixed(2) + "cm高度" + heightInCM.toFixed(2) + "cm";
// 获取当前裁片套数
var 搜索关键词 = "P1";
var 匹配的图层数量 = 获取匹配图层数量(搜索关键词);
var 当前裁片套数 = "一段" + 匹配的图层数量 + "";
// 创建新图层并设置名称
/// var 新图层 = 主文档.artLayers.add();
var 新图层 = "当前文档宽度缩水" + 宽度值 + "高度缩水" + 高度值;
// 移动选区到新图层
// currentSelection.cut();
// app.activeDocument.paste();
// 文件简介写入
// 文件简介写入(当前裁片套数, 当前P1图层宽高信息 + "-" + 新图层);
//这里删除了文件简介的写入将缩水值修改按钮
调整图像尺寸(宽度值, 高度值);
////这里取消了保存功能 为了防止运行的时候变卡
//activeDocument.save();
} else {
alert("没有找到匹配的图层。");
}
}
}
app.activeDocument=主文档
alert("写入信息成功","来自左威的提醒");
}
function 文件简介写入(当前裁片套数, 当前P1图层宽高信息) {
var d = new ActionDescriptor();
var r = new ActionReference();
r.putProperty(stringIDToTypeID("property"), stringIDToTypeID("fileInfo"));
r.putEnumerated(stringIDToTypeID("document"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("null"), r);
var d1 = new ActionDescriptor();
d1.putString(stringIDToTypeID("caption"), 当前裁片套数);
d1.putString(stringIDToTypeID("keywords"), 当前P1图层宽高信息);
d.putObject(stringIDToTypeID("to"), stringIDToTypeID("fileInfo"), d1);
executeAction(stringIDToTypeID("set"), d, DialogModes.NO);
}
function 调整图像尺寸(宽度值, 高度值) {
var 动作描述 = new ActionDescriptor();
动作描述.putUnitDouble(stringIDToTypeID("width"), stringIDToTypeID("percentUnit"), 100 + 宽度值);
动作描述.putUnitDouble(stringIDToTypeID("height"), stringIDToTypeID("percentUnit"), 100 + 高度值);
动作描述.putEnumerated(charIDToTypeID("Intr"), stringIDToTypeID("interpolationType"), stringIDToTypeID("nearestNeighbor"));
executeAction(stringIDToTypeID("imageSize"), 动作描述, DialogModes.NO);
}
function 载入选区() //载入选区
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putProperty(stringIDToTypeID("channel"), stringIDToTypeID("selection"));
d.putReference(stringIDToTypeID("null"), r);
var r1 = new ActionReference();
r1.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("channel"), stringIDToTypeID("transparencyEnum"));
d.putReference(stringIDToTypeID("to"), r1);
executeAction(stringIDToTypeID("set"), d, DialogModes.NO);
}
function 遍历图层查找P1() {
var 匹配图层数组 = [];
var 文档 = app.activeDocument;
// 遍历所有图层
function 遍历所有图层(图层) {
if (图层.typename === "LayerSet") {
for (var i = 0; i < 图层.layers.length; i++) {
遍历所有图层(图层.layers[i]);
}
} else {
var 图层名分割数组 = 图层.name.split("-"); // 假设分割符是 "_"
if (图层名分割数组[0] === "P1") { // 精确匹配
匹配图层数组.push(图层);
}
}
}
// 开始遍历
for (var j = 0; j < 文档.layers.length; j++) {
遍历所有图层(文档.layers[j]);
}
return 匹配图层数组;
}
function 获取匹配图层数量(搜索关键词) {
var 匹配图层数量 = 0;
// 递归遍历图层及其子图层
function 遍历图层(图层) {
if (图层.typename === "LayerSet") {
for (var i = 0; i < 图层.layers.length; i++) {
遍历图层(图层.layers[i]);
}
} else {
// 进行模糊匹配和精确分割匹配
if (图层.name.indexOf(搜索关键词) !== -1 && 精确分割匹配图层(图层.name, 搜索关键词)) {
匹配图层数量++;
}
}
}
// 精确分割匹配图层名
function 精确分割匹配图层(图层名, 搜索词) {
var 图层名分割数组 = 图层名.split("-"); // 假设分割符是 "_"
return 图层名分割数组[0] === 搜索词;
}
var 当前文档 = app.activeDocument;
var 所有图层 = 当前文档.layers;
for (var i = 0; i < 所有图层.length; i++) {
遍历图层(所有图层[i]);
}
return 匹配图层数量;
}
//////////////////////////////标记函数
//////////////////////////////信息激活函数
function 信息激活2() {
app.activeDocument.suspendHistory("宽高码数信息激活", "信息激活()");
}
function 信息激活() {
var 主文档 = app.activeDocument;
var 主文档名称 = 主文档.name;
// 遍历当前打开的文档
for (var i = 0; i < app.documents.length; i++) {
var document = app.documents[i];
var documentName = document.name;
// 判断文档名称是否与主文档名称不相同
if (documentName !== 主文档名称) {
// 设置当前文档为活动文档
app.activeDocument = document;
var 文件信息 = 获取文件简介信息();
if (typeof 文件信息 === 'object') {
var 版权 = 文件信息.版权;
var 关键字 = 文件信息.关键字;
var 描述 = 文件信息.描述;
var 当前套数 = 描述; // 这一行可能需要根据描述的实际数据进行修改
var 宽高信息跟缩水信息 = 关键字.join(", ");
var 分割信息 = 宽高信息跟缩水信息.split("-");
var 宽高信息 = 分割信息[0];
var 缩水信息 = 分割信息[1];
var currentDocument = app.activeDocument;
var fileName = currentDocument.name;
var fileNameWithoutExtension = fileName.split('.').slice(0, -1).join('.');
// 去掉文件名的后缀名
// 创建宽高信息的文本图层
var textLayer = app.activeDocument.artLayers.add();
textLayer.kind = LayerKind.TEXT;
textLayer.textItem.contents = 宽高信息;
textLayer.textItem.size = 10;
textLayer.textItem.position = [currentDocument.width / 2, currentDocument.height / 2];
// 修改文本颜色为M90
var textColor = new SolidColor();
textColor.rgb.red = 230;
textColor.rgb.green = 46;
textColor.rgb.blue = 139;
textLayer.textItem.color = textColor;
// 创建文件名处理的文本图层
栅格化文字()
var textLayer2 = app.activeDocument.artLayers.add();
textLayer2.kind = LayerKind.TEXT;
textLayer2.textItem.contents = fileNameWithoutExtension;
textLayer2.textItem.size = 60;
var textColor2 = new SolidColor();
textColor2.rgb.red = 230;
textColor2.rgb.green = 46;
textColor2.rgb.blue = 139;
textLayer2.textItem.color = textColor2;
textLayer2.textItem.position = [currentDocument.width / 2, currentDocument.height / 2];
栅格化文字()
自由变换向下1cm()
向下合并()
图层关闭()
} else {
// 处理没有文件信息的情况
alert(文件信息);
}
}
}
app.activeDocument = 主文档;
alert("排版完成,请检查文件!!!")
}
function 获取文件简介信息() {
try {
var r = new ActionReference();
r.putProperty(stringIDToTypeID("property"), stringIDToTypeID("fileInfo"));
r.putEnumerated(stringIDToTypeID("document"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
var fileInfoDescriptor = executeActionGet(r);
if (fileInfoDescriptor.hasKey(stringIDToTypeID("fileInfo"))) {
var fileInfoObject = fileInfoDescriptor.getObjectValue(stringIDToTypeID("fileInfo"));
// var 版权 = fileInfoObject.getString(stringIDToTypeID("copyrightNotice"));
var 关键字列表 = fileInfoObject.getList(stringIDToTypeID("keywords"));
var 关键字 = [];
for (var i = 0; i < 关键字列表.count; i++) {
关键字.push(关键字列表.getString(i));
}
var 描述 = fileInfoObject.getString(stringIDToTypeID("caption"));
return {
//版权: 版权,
关键字: 关键字,
描述: 描述
};
} else {
return "没有文件简介信息";
}
} catch (e) {
return "发生错误:" + e;
}
}
function 栅格化文字() //栅格化文字
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("null"), r);
d.putEnumerated(stringIDToTypeID("what"), stringIDToTypeID("rasterizeItem"), stringIDToTypeID("type"));
executeAction(stringIDToTypeID("rasterizeLayer"), d, DialogModes.NO);
}
function 自由变换向下1cm() //自由变换
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("null"), r);
d.putEnumerated(stringIDToTypeID("freeTransformCenterState"), stringIDToTypeID("quadCenterState"), stringIDToTypeID("QCSAverage"));
var d1 = new ActionDescriptor();
d1.putUnitDouble(stringIDToTypeID("horizontal"), stringIDToTypeID("distanceUnit"), 0);
d1.putUnitDouble(stringIDToTypeID("vertical"), stringIDToTypeID("distanceUnit"), 60);
d.putObject(stringIDToTypeID("offset"), stringIDToTypeID("offset"), d1);
d.putEnumerated(charIDToTypeID("Intr"), stringIDToTypeID("interpolationType"), stringIDToTypeID("nearestNeighbor"));
executeAction(stringIDToTypeID("transform"), d, DialogModes.NO);
}
function 向下合并() //向下合并
{
var d = new ActionDescriptor();
executeAction(stringIDToTypeID("mergeLayersNew"), d, DialogModes.NO);
}
function 图层关闭() //
{
var d = new ActionDescriptor();
var list = new ActionList();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
list.putReference(r);
d.putList(stringIDToTypeID("null"), list);
executeAction(stringIDToTypeID("hide"), d, DialogModes.NO);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function 文档保存最新(前缀) {
app.preferences.rulerUnits = Units.CM;
var 主文档 = app.activeDocument;
var 主文档路径 = 主文档.path;
var 输出路径 = new Folder(主文档路径 + "/大货裁片");
if (!输出路径.exists) {
输出路径.create();
}
var 主文档名称 = 主文档.name;
// 遍历当前打开的文档
for (var i = 0; i < app.documents.length; i++) {
try {
var document = app.documents[i];
var documentName = document.name;
// 判断文档名称是否与主文档名称不相同
// if (documentName !== 主文档名称) {
// 设置当前文档为活动文档
app.activeDocument = document;
var 文件信息 = 获取文件简介信息();
if (typeof 文件信息 === 'object') {
var 关键字 = 文件信息.关键字;
var 描述 = 文件信息.描述;
if (描述) {
var 当前套数 = 描述; // 根据描述的实际数据进行修改
var 当前文档 = app.activeDocument;
var 文件名 = 当前文档.name;
var 去除扩展名的文件名 = 文件名.split('.').slice(0, -1).join('.');
var 文档高度厘米 = 当前文档.height.as("cm");
保存为带高度的TIF文件(当前文档, 文档高度厘米, 前缀, 输出路径, 当前套数);
} else {
// 如果描述信息不存在,继续下一次循环
continue;
}
}
} catch (error) {
// 处理异常,可以在此处添加适当的错误处理逻辑
// 并继续下一次循环
continue;
}
}
alert("所有文档已保存为 TIF 格式,并存储在裁片处理文件夹中。");
}
function 保存为带高度的TIF文件(文档, 高度厘米, 前缀, 输出路径,当前套数) {
// 生成保存路径和文件名
var 文件名 = 文档.name;
var 去除扩展名的文件名 = 文件名.split('.').slice(0, -1).join('.');
var tif文件名 = 前缀 +"-"+去除扩展名的文件名 +"-"+当前套数+ "_文档高度" + 高度厘米.toFixed(2) + "cm.tif";
var tif文件路径 = 输出路径 + "/" + tif文件名;
// 保存当前文档为 TIF 格式
var tif选项 = new TiffSaveOptions();
文档.saveAs(new File(tif文件路径), tif选项);
}
function 获取文件简介信息() {
var r = new ActionReference();
r.putProperty(stringIDToTypeID("property"), stringIDToTypeID("fileInfo"));
r.putEnumerated(stringIDToTypeID("document"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
var fileInfoDescriptor = executeActionGet(r);
if (fileInfoDescriptor.hasKey(stringIDToTypeID("fileInfo"))) {
var fileInfoObject = fileInfoDescriptor.getObjectValue(stringIDToTypeID("fileInfo"));
// var 版权 = fileInfoObject.getString(stringIDToTypeID("copyrightNotice"));
var 关键字列表 = fileInfoObject.getList(stringIDToTypeID("keywords"));
var 关键字 = [];
for (var i = 0; i < 关键字列表.count; i++) {
关键字.push(关键字列表.getString(i));
}
var 描述 = fileInfoObject.getString(stringIDToTypeID("caption"));
return {
//版权: 版权,
关键字: 关键字,
描述: 描述
};
} else {
return "没有文件简介信息";
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////#############主函数设置花样组
function 设置花样组删除图层设置名称() {
app.activeDocument.suspendHistory("缩水修改", "设置花样组2()");
function 设置花样组2() {
currentDocument = app.activeDocument;
var matchCount = 0; // 匹配到的数值计数
var existingPatternSet = false;
var layerNames = []; // 保存匹配到的图层名称的数组
// 遍历图层
for (var j = 0; j < currentDocument.layers.length; j++) {
var layer = currentDocument.layers[j];
var layerName = layer.name;
// 检查图层名称是否以P开头并且后面跟着数字
if (/^P\d+$/.test(layerName)) {
matchCount++;
layerNames.push(layerName); // 将匹配到的图层名称添加到数组中
}
}
// 输出匹配到的数值个数
$.writeln("匹配到的数值个数:" + matchCount);
// 如果没有匹配到图层,则显示提示框并中断执行
if (matchCount === 0) {
// alert("当前文档没有匹配的花样图层,请进行图层更名操作", "来自左威的提醒");
return;
}
// 检查是否已存在含有"-大货裁片"的图层组
var layerSets = currentDocument.layerSets;
for (var k = 0; k < layerSets.length; k++) {
var layerSet = layerSets[k];
// if (layerSet.name.indexOf("-大货裁片") !== -1) {
// existingPatternSet = true;
break;
}
}
// 如果已存在含有"-大货裁片"的图层组,则显示提示框并中断执行
// 创建相应数量的图层组
// 遍历当前打开的文档,除了主文档外
for (var i = 0; i < app.documents.length; i++) {
var document = app.documents[i];
var documentName = document.name.replace(/\.[^.]+$/, ""); // Remove extension
// 判断文档名称是否与主文档名称不相同
if (documentName !== currentDocument.name.replace(/\.[^.]+$/, "")) {
app.activeDocument = document;
删除背景()
修改图层名称(document, documentName);
}
}
// 恢复主文档为活动文档
app.activeDocument = currentDocument;
// alert("花样设置成功!", "来自左威的提醒");
}
function 修改图层名称(document, documentName) {
var currentDocument = document;
for (var j = 0; j < currentDocument.layers.length; j++) {
var layer = currentDocument.layers[j];
var layerName = layer.name;
var splitArray = layerName.split("_");
var olddocumentName = documentName.split(".");
var newlayerName =splitArray[2]
var newdocumentName =olddocumentName [0]
// alert(splitArray)
// 检查正则分割后的第二个数组是否为空
if (newlayerName ===newdocumentName) {
return; // 如果相同,则跳过当前图层,不执行操作
}
var newLayerName = layerName + "_" + documentName;
layer.name = newLayerName;
}
}
function 切换mask() //
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("channel"), stringIDToTypeID("mask"));
d.putReference(stringIDToTypeID("null"), r);
d.putBoolean(stringIDToTypeID("makeVisible"), false);
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
}
function 载入蒙版选区() //载入选区
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putProperty(stringIDToTypeID("channel"), stringIDToTypeID("selection"));
d.putReference(stringIDToTypeID("null"), r);
var r1 = new ActionReference();
r1.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("to"), r1);
executeAction(stringIDToTypeID("set"), d, DialogModes.NO);
}
function 存储选区(name) //存储选区
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putProperty(stringIDToTypeID("channel"), stringIDToTypeID("selection"));
d.putReference(stringIDToTypeID("null"), r);
d.putString(stringIDToTypeID("name"), name);
executeAction(stringIDToTypeID("duplicate"), d, DialogModes.NO);
}
function 取消选择() //取消选择
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putProperty(stringIDToTypeID("channel"), stringIDToTypeID("selection"));
d.putReference(stringIDToTypeID("null"), r);
d.putEnumerated(stringIDToTypeID("to"), stringIDToTypeID("ordinal"), stringIDToTypeID("none"));
executeAction(stringIDToTypeID("set"), d, DialogModes.NO);
}
function 删除背景() {
try {
找到背景图层();
删除图层()
} catch (error) {
// alert("删除背景时出现错误:" + error);
}
}
function 找到背景图层() {
try {
var d = new ActionDescriptor();
var r = new ActionReference();
r.putName(stringIDToTypeID("layer"), "背景");
d.putReference(stringIDToTypeID("null"), r);
d.putBoolean(stringIDToTypeID("makeVisible"), false);
var list = new ActionList();
list.putInteger(2);
d.putList(stringIDToTypeID("layerID"), list);
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
} catch (error) {
throw "找到背景图层时出现错误:" + error;
}
}
function 删除图层() {
try {
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("null"), r);
var list = new ActionList();
list.putInteger(2);
d.putList(stringIDToTypeID("layerID"), list);
executeAction(stringIDToTypeID("delete"), d, DialogModes.NO);
} catch (error) {
throw "删除图层时出现错误:" + error;
}
}
/////////////////////////////////////#############主函数设置花样组
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function 设置花样组2() {
app.activeDocument.suspendHistory("设置花样组", "设置花样组()");
}
function 设置花样组() {
var currentDocument = app.activeDocument;
var matchCount = 0; // 匹配到的数值计数
var existingPatternSet = false;
var layerNames = []; // 保存匹配到的图层名称的数组
// 遍历图层
for (var j = 0; j < currentDocument.layers.length; j++) {
var layer = currentDocument.layers[j];
var layerName = layer.name;
// 检查图层名称是否以P开头并且后面跟着数字
if (/^P\d+$/.test(layerName)) {
matchCount++;
layerNames.push(layerName); // 将匹配到的图层名称添加到数组中
}
}
// 输出匹配到的数值个数
$.writeln("匹配到的数值个数:" + matchCount);
// 如果没有匹配到图层,则显示提示框并中断执行
if (matchCount === 0) {
// alert("当前文档没有匹配的花样图层,请进行图层更名操作", "来自左威的提醒");
return;
}
// 检查是否已存在含有"-大货裁片"的图层组
var layerSets = currentDocument.layerSets;
for (var k = 0; k < layerSets.length; k++) {
var layerSet = layerSets[k];
if (layerSet.name.indexOf("-大货裁片") !== -1) {
existingPatternSet = true;
break;
}
}
// 如果已存在含有"-大货裁片"的图层组,则显示提示框并中断执行
if (existingPatternSet) {
// alert("当前文档已设置花样组,请勿重复设置", "来自左威的提醒");
return;
}
// 创建相应数量的图层组
for (var i = 0; i < matchCount; i++) {
var newLayerSet = currentDocument.layerSets.add();
newLayerSet.name = "P" + (i + 1) + "-大货裁片";
}
//alert("大货裁片组创建成功")
}
function 右上对齐2() {
app.activeDocument.suspendHistory("右上对齐", "右上对齐()");
}
function 右上对齐() {
var groupName = 获取当前图层组名称();
if (groupName !== null) {
app.preferences.rulerUnits = Units.PIXELS;
var splitGroupName = groupName.split("-");
var firstPart = splitGroupName[0];
} else {
// 如果未获取到当前图层组名称,退出程序
// alert("未获取到当前图层组名称!");
return;
}
try {
当前花样图层 = app.activeDocument.layers.getByName(firstPart);
} catch (e) {
// 处理异常情况
alert("没有找到对应的花样裁片: ");
return; // 中断函数执行
}
app.activeDocument.activeLayer = 当前花样图层;
切换mask();
载入选区蒙版()
// 应用图层蒙版();
// 载入选区();
var 边距 = 获取当前选区四边距();
var 获取左右的中心坐标 = (边距.right - 边距.left) / 2 + 边距.left;
var 获取右上的坐标 = 边距.right
$.writeln("中心坐标=" + 获取左右的中心坐标);
var currentDocument = app.activeDocument;
var height = currentDocument.height.value;
var 上边距新 = 0;
var 左边距新 = 获取右上的坐标-1 ;
var 下边距新 = height;
var 右边距新 = 获取右上的坐标 + 1;
var 边距 = 获取当前选区四边距();
$.writeln("上边距:" + 边距.top);
$.writeln("左边距:" + 边距.left);
$.writeln("下边距:" + 边距.bottom);
$.writeln("右边距:" + 边距.right);
//历史记录回退领口函数();
新建选区(上边距新, 左边距新, 下边距新, 右边距新);
app.activeDocument.activeLayer = 当前花样图层;
切换mask();
选区减去();
获取右上的坐标 = 获取当前选区四边距();
获取右上的坐标y坐标信息 = 获取右上的坐标.top;
获取右上的坐标x坐标信息 = 获取右上的坐标.left;
// $.writeln("居中领口y坐标信息" + 获取到花样图层当前居中领口y坐标信息);
//$.writeln("居中领口x坐标信息" + 获取到花样图层当前居中领口x坐标信息);
//////////////////////以上的是获取花样的的中心坐标信息
var currentDocument = app.activeDocument;
var targetLayerSet = currentDocument.layerSets.getByName(groupName);
if (targetLayerSet) {
var layers = targetLayerSet.layers;
if (layers.length > 0) {
for (var i = 0; i < layers.length; i++) {
var layer = layers[i];
var 裁片图层 = layer.name;
$.writeln("裁片图层坐标信息=" + 裁片图层);
try {
var 当前裁片图层 = app.activeDocument.layerSets.getByName(groupName).layers.getByName(裁片图层);
} catch (e) {
// 处理异常情况
alert("没有找到对应的花样裁片 " );
return; // 中断函数执行
}
app.activeDocument.activeLayer = 当前裁片图层;
载入选区11()
//var selectedLayer = app.activeDocument.activeLayer;
// var bounds = selectedLayer.bounds;
/*
图层上边距新 = 0;
图层左边距新 = 右right ;
图层下边距新 = height;
图层右边距新 = 右right +1;
左left = bounds[0].value;
上top = bounds[1].value;
右right = bounds[2].value;
下bottom = bounds[3].value;
中心坐标centerX = (bounds[2].value - bounds[0].value) / 2 + bounds[0].value;
中心坐标centerY = (bounds[3].value - bounds[1].value) / 2 + bounds[1].value;
*/
// $.writeln("中心坐标centerX" + 中心坐标centerX);
// $.writeln("中心坐标centerY" +中心坐标cent*erY);
获取花样右上的坐标裁片位置坐标 = 获取当前选区四边距();
图层上边距新 = 0;
图层左边距新 = 获取花样右上的坐标裁片位置坐标.right-1 ;
图层下边距新 = height;
图层右边距新 = 获取花样右上的坐标裁片位置坐标.right +1;
新建选区(图层上边距新, 图层左边距新, 图层下边距新, 图层右边距新);
app.activeDocument.activeLayer = 当前裁片图层;
载入选区交叉图层()
获取右上的坐标裁片位置坐标 = 获取当前选区四边距();
获取右上的坐标裁片位置坐标x=获取右上的坐标裁片位置坐标.left
获取右上的坐标裁片位置坐标y=获取右上的坐标裁片位置坐标.top
位移距离PXy = 获取右上的坐标y坐标信息 - 获取右上的坐标裁片位置坐标y;
位移距离PXx = 获取右上的坐标x坐标信息 - 获取右上的坐标裁片位置坐标x;
$.writeln(位移距离PXy);
$.writeln(位移距离PXx);
取消选择()
自由变换2(位移距离PXy,位移距离PXx)
//alert("移动")
}
}
}
取消选择();
}
function 获取当前图层组名称() {
var currentDocument = app.activeDocument;
var currentLayer = currentDocument.activeLayer;
if (currentLayer.typename === "LayerSet") {
var groupName = currentLayer.name;
return groupName;
} else {
alert("当前图层不是图层组。");
return null;
}
}
function 载入选区交叉图层() //载入选区
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("channel"), stringIDToTypeID("transparencyEnum"));
d.putReference(stringIDToTypeID("null"), r);
var r1 = new ActionReference();
r1.putProperty(stringIDToTypeID("channel"), stringIDToTypeID("selection"));
d.putReference(stringIDToTypeID("with"), r1);
executeAction(charIDToTypeID("Intr"), d, DialogModes.NO);
}
function 载入选区蒙版() //载入选区
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putProperty(stringIDToTypeID("channel"), stringIDToTypeID("selection"));
d.putReference(stringIDToTypeID("null"), r);
var r1 = new ActionReference();
r1.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("to"), r1);
executeAction(stringIDToTypeID("set"), d, DialogModes.NO);
}
function 遍历图层组内的图层(图层组名称) {
var currentDocument = app.activeDocument;
var targetLayerSet = currentDocument.layerSets.getByName(图层组名称);
if (targetLayerSet) {
var layers = targetLayerSet.layers;
if (layers.length > 0) {
for (var i = 0; i < layers.length; i++) {
var layer = layers[i];
// 在这里对每个图层进行进一步的操作
$.writeln("图层名称:" + layer.name);
}
} else {
$.writeln("图层组中没有任何图层。");
}
} else {
$.writeln("找不到指定名称的图层组。");
}
}
function 新建选区(上边距, 左边距, 下边距, 右边距) {
var currentDocument = app.activeDocument;
var top = 上边距;
var left = 左边距;
var bottom = 下边距;
var right = 右边距;
var selectionRegion = Array(Array(left, top), Array(right, top), Array(right, bottom), Array(left, bottom));
currentDocument.selection.select(selectionRegion);
}
function 选区减去() //载入选区
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("null"), r);
var r1 = new ActionReference();
r1.putProperty(stringIDToTypeID("channel"), stringIDToTypeID("selection"));
d.putReference(stringIDToTypeID("with"), r1);
executeAction(charIDToTypeID("Intr"), d, DialogModes.NO);
}
// 将像素转换为毫米
function pixelsToMillimeters(pixels) {
// 获取当前文档
var doc = app.activeDocument;
// 获取图像的分辨率(像素/英寸)
var resolution = doc.resolution;
// 计算像素转换为毫米
var inches = pixels / resolution;
var millimeters = inches * 25.4;
return millimeters.toFixed(2); // 保留两位小数
}
function 切换mask() //
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("channel"), stringIDToTypeID("mask"));
d.putReference(stringIDToTypeID("null"), r);
d.putBoolean(stringIDToTypeID("makeVisible"), false);
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
}
function 获取当前选区四边距() {
var currentDocument = app.activeDocument;
var selectionBounds = currentDocument.selection.bounds;
var top = selectionBounds[1].value;
var left = selectionBounds[0].value;
var bottom = selectionBounds[3].value;
var right = selectionBounds[2].value;
return {
top: top,
left: left,
bottom: bottom,
right: right
};
}
function 获取当前文档四边距() {
var currentDocument = app.activeDocument;
var documentBounds = currentDocument.bounds;
var top = documentBounds[1].value;
var left = documentBounds[0].value;
var bottom = documentBounds[3].value;
var right = documentBounds[2].value;
return {
top: top,
left: left,
bottom: bottom,
right: right
};
}
function 选区减去2() //
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("channel"), stringIDToTypeID("transparencyEnum"));
d.putReference(stringIDToTypeID("null"), r);
var r1 = new ActionReference();
r1.putProperty(stringIDToTypeID("channel"), stringIDToTypeID("selection"));
d.putReference(stringIDToTypeID("with"), r1);
executeAction(charIDToTypeID("Intr"), d, DialogModes.NO);
}
function 遍历图层组内的图层(图层组名称) {
var currentDocument = app.activeDocument;
var targetLayerSet = currentDocument.layerSets.getByName(图层组名称);
if (targetLayerSet) {
var layers = targetLayerSet.layers;
if (layers.length > 0) {
for (var i = 0; i < layers.length; i++) {
var layer = layers[i];
// 在这里对每个图层进行进一步的操作
$.writeln("图层名称:" + layer.name);
}
} else {
$.writeln("图层组中没有任何图层。");
}
} else {
$.writeln("找不到指定名称的图层组。");
}
}
function 自由变换2(位移距离PXy,位移距离PXx) //自由变换
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("null"), r);
d.putEnumerated(stringIDToTypeID("freeTransformCenterState"), stringIDToTypeID("quadCenterState"), stringIDToTypeID("QCSAverage"));
var d1 = new ActionDescriptor();
d1.putUnitDouble(stringIDToTypeID("horizontal"), stringIDToTypeID("pixelsUnit"), 位移距离PXx);
d1.putUnitDouble(stringIDToTypeID("vertical"), stringIDToTypeID("pixelsUnit"), 位移距离PXy);
d.putObject(stringIDToTypeID("offset"), stringIDToTypeID("offset"), d1);
d.putBoolean(stringIDToTypeID("linked"), true);
d.putEnumerated(charIDToTypeID("Intr"), stringIDToTypeID("interpolationType"), stringIDToTypeID("nearestNeighbor"));
executeAction(stringIDToTypeID("transform"), d, DialogModes.NO);
}
function 历史记录回退领口函数() //
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putOffset(stringIDToTypeID("historyState"), -2 );
d.putReference(stringIDToTypeID("null"), r);
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
}
function 取消选择() //取消选择
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putProperty(stringIDToTypeID("channel"), stringIDToTypeID("selection"));
d.putReference(stringIDToTypeID("null"), r);
d.putEnumerated(stringIDToTypeID("to"), stringIDToTypeID("ordinal"), stringIDToTypeID("none"));
executeAction(stringIDToTypeID("set"), d, DialogModes.NO);
}
function 历史记录回退1领口函数() //
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putOffset(stringIDToTypeID("historyState"), -1 );
d.putReference(stringIDToTypeID("null"), r);
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
}
function 载入选区11() //载入选区
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putProperty(stringIDToTypeID("channel"), stringIDToTypeID("selection"));
d.putReference(stringIDToTypeID("null"), r);
var r1 = new ActionReference();
r1.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("channel"), stringIDToTypeID("transparencyEnum"));
d.putReference(stringIDToTypeID("to"), r1);
executeAction(stringIDToTypeID("set"), d, DialogModes.NO);
}
function 取消选择() //取消选择
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putProperty(stringIDToTypeID("channel"), stringIDToTypeID("selection"));
d.putReference(stringIDToTypeID("null"), r);
d.putEnumerated(stringIDToTypeID("to"), stringIDToTypeID("ordinal"), stringIDToTypeID("none"));
executeAction(stringIDToTypeID("set"), d, DialogModes.NO);
}
"""