2203 lines
70 KiB
Python
2203 lines
70 KiB
Python
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);
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
""" |