Files
DP/PSMARK代码块/JSX17.jsx

1002 lines
31 KiB
JavaScript
Raw Permalink 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.
定位码批量化替换外链新()
function 定位码批量化替换外链新(){
var dialog = new Window("dialog");
dialog.text = "定位码批量快速换图 ";
dialog.orientation = "row";
dialog.alignChildren = ["left","top"];
dialog.spacing = 10;
dialog.margins = 16;
// GROUP1
// ======
var group1 = dialog.add("group", undefined, {name: "group1"});
group1.preferredSize.width = 183;
group1.orientation = "column";
group1.alignChildren = ["fill","top"];
group1.spacing = 10;
group1.margins = 0;
// PANEL1
// ======
var panel1 = group1.add("panel", undefined, undefined, {name: "panel1"});
panel1.text = "文件夹选择";
panel1.preferredSize.height = 205;
panel1.orientation = "column";
panel1.alignChildren = ["left","top"];
panel1.spacing = 10;
panel1.margins = 10;
var statictext1 = panel1.add("statictext", undefined, undefined, {name: "statictext1"});
statictext1.text = "大货齐码裁片模板路径:";
var button1 = panel1.add("button", undefined, undefined, {name: "button1"});
button1.text = "路径选择";
button1.preferredSize.width = 300;
var statictext2 = panel1.add("statictext", undefined, undefined, {name: "statictext2"});
statictext2.text = "待套花样路径选择:";
var button2 = panel1.add("button", undefined, undefined, {name: "button2"});
button2.text = "路径选择";
button2.preferredSize.width = 300;
var statictext3 = panel1.add("statictext", undefined, undefined, {name: "statictext3"});
statictext3.text = "缓存切片裁片路径选择:";
var button3 = panel1.add("button", undefined, undefined, {name: "button3"});
button3.text = "路径选择";
button3.preferredSize.width = 300;
var statictext4= panel1.add("statictext", undefined, undefined, {name: "statictext4"});
statictext4.text = "大货成品路径选择:";
var button4 = panel1.add("button", undefined, undefined, {name: "button4"});
button4.text = "路径选择";
button4.preferredSize.width = 300;
// PANEL2
// ======
var panel2 = panel1.add("panel", undefined, undefined, {name: "panel2"});
panel2.text = "款号修改:";
panel2.orientation = "column";
panel2.alignChildren = ["left","top"];
panel2.spacing = 10;
panel2.margins = 10;
// PANEL4
// ======
var statictext11 = panel2.add("statictext", undefined, undefined, {name: "statictext11"});
statictext11.text = "是否拼合裁片组:";
var checkbox1 =panel2.add("checkbox", undefined, undefined, {name: "checkbox1"});
checkbox1.value = true;
checkbox1.text = "拼合";
var statictext13 = panel2.add("statictext", undefined, undefined, {name: "statictext13"});
statictext13.text = "存储位置:";
var checkbox3 =panel2.add("checkbox", undefined, undefined, {name: "checkbox3"});
checkbox3.value = false;
checkbox3.text = "模板位置";
// GROUP2
// ======
var group2 = dialog.add("group", undefined, {name: "group2"});
group2.orientation = "column";
group2.alignChildren = ["fill","top"];
group2.spacing = 10;
group2.margins = 0;
var ok = group2.add("button", undefined, undefined, {name: "ok"});
ok.text = "执行";
var cancel = group2.add("button", undefined, undefined, {name: "cancel"});
cancel.text = "取消";
var button8 = group2.add("button", undefined, undefined, {name: "button8"});
button8.text = "关于我们";
button1.onClick=function(){
button1.text =Folder.selectDialog ("大货齐码裁片模板路径:").fsName;
}
button2.onClick=function(){
button2.text =Folder.selectDialog ("待套花样路径选择:").fsName;
}
button3.onClick=function(){
button3.text =Folder.selectDialog ("缓存切片裁片路径选择:").fsName;
}
button4.onClick=function(){
button4.text =Folder.selectDialog ("大货成品路径选择:").fsName;
}
button8.onClick = function () {
alert("自由花型工作室 17520145271 脚本开发 裁片排版 花型开发 ",dialog.text+"----关于我们");
}
ok .onClick=function(){
var 大货齐码裁片模板路径 = new Folder(button1.text);
var 待套花样路径选择 =new Folder(button2.text);
var 大货文件存放位置 =new Folder(button4.text);
var 缓存切片裁片路径选择 = new Folder(button3.text);
var myFiles1 =大货齐码裁片模板路径.getFiles("*.tif*");
var myFiles2 =待套花样路径选择.getFiles("*.tif*");
for (var i = 0; i <myFiles2.length; i++)
{
app.open(myFiles2[i])
文档名称1=activeDocument.name.replace(/(?:\.[^.]*$|$)/, '');
var 大货成品文件夹 =文档名称1
//花样标准化(80);
// 文档另存(缓存切片裁片路径选择);
花样图层导出为TIF透明底(缓存切片裁片路径选择)
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES)
var parentFolderPath =大货文件存放位置
//var folderNames = 文档名称1
/*
var folderPath = parentFolderPath + "/" + 文档名称1;
var folderObj = new Folder(folderPath);
$.writeln(folderObj);
folderObj.create();
*/
for (var j = 0; j <myFiles1.length; j++) {
app.open(myFiles1[j])
更换当前文档裁片组外链(缓存切片裁片路径选择);
// 图层选择();
// app.activeDocument.activeLayer.textItem.contents = 文档名称1;
选择裁片图层();
// if (checkbox1.value == true) {
合并图层();
预设图案填充(缓存切片裁片路径选择)
另存为(parentFolderPath,文档名称1)
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}
}
function 预设图案填充(缓存切片裁片路径选择)
{
var file = new File(缓存切片裁片路径选择 + "/名称数据.json");
if (file.open('r')) {
var content = file.read();
file.close();
// 移除双引号
var content1 = content.replace(/"/g, '');
// 移除[]并使用逗号分割字符串
var 名称数组 = content1.replace(/^\s*\[|\]\s*$/g, '').split(',');
for (var k = 0; k < 名称数组.length; k++) {
var 名称 = 名称数组[k].replace(/^\s+|\s+$/g, ''); // 使用正则替代trim函数移除前后空格
//alert(名称);
var matches = 名称.match(/\(([^)]+)\)/);
if (matches) {
var 图案名称 = matches[1];
var 素材填充 = app.activeDocument.layerSets.getByName("填充底图").layers.getByName(图案名称);
app.activeDocument.activeLayer = 素材填充;
载入选区();
填充图案(名称);
}
}
} else {
alert("找不到名称数据文件查看是否写入!");
}
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 d = new ActionDescriptor();
var r = new ActionReference();
r.putClass(stringIDToTypeID("contentLayer"));
d.putReference(stringIDToTypeID("null"), r);
var d1 = new ActionDescriptor();
var d2 = new ActionDescriptor();
var d3 = new ActionDescriptor();
d3.putString(stringIDToTypeID("name"), 名称);
d2.putObject(stringIDToTypeID("pattern"), stringIDToTypeID("pattern"), d3);
d1.putObject(stringIDToTypeID("type"), stringIDToTypeID("patternLayer"), d2);
d.putObject(stringIDToTypeID("using"), stringIDToTypeID("contentLayer"), d1);
executeAction(stringIDToTypeID("make"), 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 d = new ActionDescriptor();
var r = new ActionReference();
r.putClass(stringIDToTypeID("contentLayer"));
d.putReference(stringIDToTypeID("null"), r);
var d1 = new ActionDescriptor();
var d2 = new ActionDescriptor();
var d3 = new ActionDescriptor();
d3.putString(stringIDToTypeID("name"), 图案名称);
d3.putString(stringIDToTypeID("ID"), 图案名称);
d2.putObject(stringIDToTypeID("pattern"), stringIDToTypeID("pattern"), d3);
d1.putObject(stringIDToTypeID("type"), stringIDToTypeID("patternLayer"), d2);
d.putObject(stringIDToTypeID("using"), stringIDToTypeID("contentLayer"), d1);
executeAction(stringIDToTypeID("make"), d, DialogModes.NO);
}
function 花样图层导出为TIF透明底(导出目录) {
app.preferences.rulerUnits = Units.MM;
var doc = app.activeDocument;
var 扩展毫米数=80
// 获取文档中的所有图层
var allLayers = doc.layers;
var 名称数组 = [];
// 循环遍历所有图层
for (var i = 0; i < allLayers.length; i++) {
// 检查图层是否是图层组
if (allLayers[i] instanceof LayerSet) {
// 获取图层组中的所有子图层
subLayers = allLayers[i].layers;
图层组名称=allLayers[i].name
文档名称=app.activeDocument.name
文档名称去除后缀 = 文档名称.replace(/\.[^\.]+$/, "");
// 检查图层组是否包含子图层
if (subLayers.length > 0) {
// 获取图层组中最后一个子图层的名称
var lastSubLayer = subLayers[subLayers.length - 1];
var lastSubLayerName = lastSubLayer.name;
FastSubLayer = subLayers[0];
FastSubLayername= FastSubLayer.name
// 输出图层组名称和最后一个子图层的名称
if (图层组名称 === "填充底图") {
for (var y = 0; y < subLayers.length; y++) {
// alert(subLayers[j].name);
填充底图组内部循环名称 = subLayers[y].name
填充底图循环素材 = app.activeDocument.layerSets.getByName("填充底图").layers.getByName(填充底图组内部循环名称);
app.activeDocument.activeLayer = 填充底图循环素材;
新建文档()
// 合并图层()
载入选区()
裁剪()
名称=文档名称去除后缀+"-("+填充底图组内部循环名称 +")-填充底图"
名称数组.push('"' + 名称 + '"');
制作图案预设(名称)
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
app.activeDocument=doc
// 执行某一个操作(例如,设置图层组的可见性)
// alert("测试")
}
// 手动创建JSON格式的字符串
var jsonStr = '[' + 名称数组.join(', ') + ']';
// 创建一个文件对象指向桌面
var file = new File(导出目录 + "/名称数据.json");
// 打开文件写入JSON字符串然后关闭文件
file.open('w');
file.write(jsonStr);
file.close();
} else {
// 执行别的操作(例如,隐藏其他图层组)
空白裁片模板 = app.activeDocument.layerSets.getByName(图层组名称).layers.getByName(lastSubLayerName);
app.activeDocument.activeLayer = 空白裁片模板;
新建图层()
app.activeDocument.activeLayer.name="最大白边值"
裁片边界 = lastSubLayer.bounds;
扩展值 = 毫米转像素(扩展毫米数); //50cm
裁片边界_左 = 毫米转像素(裁片边界[0]) - 扩展值;
裁片边界_上 = 毫米转像素(裁片边界[1]) - 扩展值;
裁片边界_右 = 毫米转像素(裁片边界[2]) + 扩展值;
裁片边界_下 = 毫米转像素(裁片边界[3]) + 扩展值;
var selRegion = [
[裁片边界_左,裁片边界_上],
[裁片边界_右,裁片边界_上],
[裁片边界_右,裁片边界_下],
[裁片边界_左,裁片边界_下]
];
app.activeDocument.selection.select(selRegion, SelectionType.REPLACE);
背景切换();
恢复白底();
填充();
隐藏图层();
裁片图层组 = app.activeDocument.layerSets.getByName(图层组名称)
app.activeDocument.activeLayer = 裁片图层组 ;
新建文档()
空白裁片模板 = app.activeDocument.layerSets.getByName(图层组名称).layers.getByName(lastSubLayerName);
app.activeDocument.activeLayer = 空白裁片模板;
删除图层()
最大白边值=app.activeDocument.layerSets.getByName(图层组名称).layers.getByName("最大白边值");
app.activeDocument.activeLayer = 最大白边值;
app.activeDocument.crop(最大白边值.bounds, 0);
// 保存为TIF
var 文件路径 = 导出目录 + "/" + 图层组名称 + ".tif";
tiffOptions = new TiffSaveOptions();
app.activeDocument.saveAs(new File(文件路径), tiffOptions);
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
app.activeDocument=doc
最大白边值=app.activeDocument.layerSets.getByName(图层组名称).layers.getByName(FastSubLayername);
app.activeDocument.activeLayer = 最大白边值;
//上移图层()
多选图层()
转换为智能对象()
添加图层蒙版()
// 向下合并()
转换为智能对象()
// 重新链接到文件(文件路径)
}
}
}
}
}
function 恢复白底() //删除图层
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putProperty(stringIDToTypeID("color"), stringIDToTypeID("colors"));
d.putReference(stringIDToTypeID("null"), r);
executeAction(stringIDToTypeID("exchange"), d, DialogModes.NO);
}
function 制作图案预设(名称) //
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putClass(stringIDToTypeID("pattern"));
d.putReference(stringIDToTypeID("null"), r);
var r1 = new ActionReference();
r1.putProperty(stringIDToTypeID("property"), stringIDToTypeID("selection"));
r1.putEnumerated(stringIDToTypeID("document"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("using"), r1);
d.putString(stringIDToTypeID("name"), 名称);
executeAction(stringIDToTypeID("make"), d, DialogModes.NO);
}
function 合并图层() //
{
var d = new ActionDescriptor();
executeAction(stringIDToTypeID("mergeLayersNew"), d, DialogModes.NO);
}
function 背景切换() //
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putProperty(stringIDToTypeID("color"), stringIDToTypeID("colors"));
d.putReference(stringIDToTypeID("null"), r);
executeAction(stringIDToTypeID("reset"), d, DialogModes.NO);
}
function 裁剪() //裁剪
{
var d = new ActionDescriptor();
d.putBoolean(stringIDToTypeID("delete"), true);
executeAction(stringIDToTypeID("crop"), d, DialogModes.NO);
}
function 重新链接到文件(文件路径) //重新链接到文件
{
var d = new ActionDescriptor();
d.putPath(stringIDToTypeID("null"), new File(文件路径));
d.putInteger(stringIDToTypeID("layerID"), 94);
executeAction(stringIDToTypeID("placedLayerRelinkToFile"), d, DialogModes.NO);
}
function 转换为智能对象() //转换为智能对象
{
var d = new ActionDescriptor();
executeAction(stringIDToTypeID("newPlacedLayer"), 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 d = new ActionDescriptor();
executeAction(stringIDToTypeID("mergeLayersNew"), d, DialogModes.NO);
}
function 添加图层蒙版() //添加图层蒙版
{
var d = new ActionDescriptor();
d.putClass(stringIDToTypeID("new"), stringIDToTypeID("channel"));
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("channel"), stringIDToTypeID("mask"));
d.putReference(stringIDToTypeID("at"), r);
d.putEnumerated(stringIDToTypeID("using"), stringIDToTypeID("userMaskEnabled"), stringIDToTypeID("revealSelection"));
executeAction(stringIDToTypeID("make"), d, DialogModes.NO);
}
function 上移图层() //
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("forwardEnum"));
d.putReference(stringIDToTypeID("null"), r);
d.putBoolean(stringIDToTypeID("makeVisible"), false);
var list = new ActionList();
list.putInteger(11);
d.putList(stringIDToTypeID("layerID"), list);
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
}
function 毫米转像素(毫米)
{
//厘米转像素
doc_w = app.activeDocument.width;
//用户设定的厘米数 支持小数
user_mm = UnitValue(毫米,"mm");
user_px = user_mm.as("px")*app.activeDocument.resolution/72;
return user_px;
}
function 删除图层() //删除图层
{
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(22);
d.putList(stringIDToTypeID("layerID"), list);
executeAction(stringIDToTypeID("delete"), d, DialogModes.NO);
}
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("addToSelectionContinuous"));
d.putBoolean(stringIDToTypeID("makeVisible"), false);
var list = new ActionList();
list.putInteger(115);
d.putList(stringIDToTypeID("layerID"), list);
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
}
function 新建图层() //新建图层
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putClass(stringIDToTypeID("layer"));
d.putReference(stringIDToTypeID("null"), r);
var d1 = new ActionDescriptor();
d1.putBoolean(stringIDToTypeID("group"), true);
d.putObject(stringIDToTypeID("using"), stringIDToTypeID("layer"), d1);
d.putInteger(stringIDToTypeID("layerID"), 22);
executeAction(stringIDToTypeID("make"), 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();
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 新建文档() //复制图层
{
var d = new ActionDescriptor();
var r = new ActionReference();
r.putClass(stringIDToTypeID("document"));
d.putReference(stringIDToTypeID("null"), r);
var r1 = new ActionReference();
r1.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
d.putReference(stringIDToTypeID("using"), r1);
d.putInteger(stringIDToTypeID("version"), 5);
executeAction(stringIDToTypeID("make"), d, DialogModes.NO);
}
function 更换当前文档裁片组外链(缓存切片裁片路径选择)
{
try
{
裁片组 = app.activeDocument.layerSets.getByName("裁片").layers;
}
catch(e)
{
alert("找不到裁片组");
}
for(var k=0;k<裁片组.length;k++)
{
裁片 = 裁片组[k];
app.activeDocument.activeLayer = 裁片;
if(裁片.kind == LayerKind.SMARTOBJECT)
{
更换链接智能对象路径(缓存切片裁片路径选择);
}
}
}
function 更换链接智能对象路径(缓存切片裁片路径选择)
{
//获取当前图层外链的智能对象路径
//先获取链接的文件名
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
//~ r.putName(charIDToTypeID("Lyr "), "◆左袖口"); //按名称查找
descLayer = executeActionGet(r);
res = descLayer.getObjectValue(stringIDToTypeID("smartObject"));
链接文件名 = res.getString(stringIDToTypeID("fileReference"));
//$.writeln(链接文件名);
//~ 链接文件路径 = res.getPath(stringIDToTypeID("link"));
//~ $.writeln(链接文件路径);
图片路径 = 缓存切片裁片路径选择 + "/" + 链接文件名;
var d = new ActionDescriptor();
d.putPath(stringIDToTypeID("null"), new File(图片路径));
executeAction(stringIDToTypeID("placedLayerRelinkToFile"), d, DialogModes.NO);
}
function 另存为(parentFolderPath,文档名称1)
{
文档名称=activeDocument.name.replace(/(?:\.[^.]*$|$)/, '');
saveIn=File(parentFolderPath+ "/"+文档名称1+"-"+文档名称);
tifSaveOpt = new TiffSaveOptions();
tifSaveOpt.imageCompression = TIFFEncoding.TIFFLZW;
tifSaveOpt.byteOrder = ByteOrder.IBM;
asCopy=true
app.activeDocument.saveAs(saveIn,tifSaveOpt,asCopy);
}
function 图层选择() //a
{
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(74);
d.putList(stringIDToTypeID("layerID"), list);
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
}
catch (e) {
//alert("找不到款号图层",dialog.text+"----关于");
}
}
///////////////////////////////////////////////////////////////////////////////
function 合并图层() //合并图层
{
var d = new ActionDescriptor();
executeAction(stringIDToTypeID("mergeLayersNew"), d, DialogModes.NO);
}
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(74);
d.putList(stringIDToTypeID("layerID"), list);
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
}
catch (e) {
alert("找不到裁片图层",dialog.text+"----关于");
}
}
function 存储在原来位置(myFolder)
{
tiffOptions = new TiffSaveOptions();
try
{
app.activeDocument.saveAs(new File(文件路径), tiffOptions);
}
catch(e)
{
alert(文件太大无法保存)
}
}
function 花样标准化(扩展毫米数)
{
var 扩展毫米数=80
app.preferences.rulerUnits = Units.MM;
裁片组 = app.activeDocument.layerSets;
for(var z=0;z<裁片组.length;z++)
{
当前裁片组 = 裁片组[z];
花样图层 = 当前裁片组.layers[0];
裁片图层 = 当前裁片组.layers[1];
裁片边界 = 裁片图层.bounds;
//~ alert(毫米转像素(50))
//~ 扩展值 = 毫米转像素(50); //50cm
扩展值 = 毫米转像素(扩展毫米数); //50cm
裁片边界_左 = 毫米转像素(裁片边界[0]) - 扩展值;
裁片边界_上 = 毫米转像素(裁片边界[1]) - 扩展值;
裁片边界_右 = 毫米转像素(裁片边界[2]) + 扩展值;
裁片边界_下 = 毫米转像素(裁片边界[3]) + 扩展值;
//左上右下点XY坐标
var selRegion = [
[裁片边界_左,裁片边界_上],
[裁片边界_右,裁片边界_上],
[裁片边界_右,裁片边界_下],
[裁片边界_左,裁片边界_下]
];
app.activeDocument.activeLayer = 花样图层;
app.activeDocument.selection.select(selRegion, SelectionType.REPLACE);
按选区添加蒙版();
//制作一个白底衬底图
//新建一个图层
var d = new ActionDescriptor();
var r = new ActionReference();
r.putClass(stringIDToTypeID("layer"));
d.putReference(stringIDToTypeID("null"), r);
d.putInteger(stringIDToTypeID("layerID"), 198);
executeAction(stringIDToTypeID("make"), d, DialogModes.NO);
白底图层 = app.activeDocument.activeLayer;
白底图层.name = "白底";
app.activeDocument.selection.select(selRegion, SelectionType.REPLACE);
var c = new SolidColor();
c.rgb.hexValue = "FFFFFF";
app.activeDocument.selection.fill(c);
花样图层.grouped = false;
白底图层.move(花样图层,ElementPlacement.PLACEAFTER);
app.activeDocument.activeLayer = 花样图层;
var d = new ActionDescriptor();
var r = new ActionReference();
r.putName(stringIDToTypeID("layer"), "白底");
d.putReference(stringIDToTypeID("null"), r);
d.putEnumerated(stringIDToTypeID("selectionModifier"), stringIDToTypeID("selectionModifierType"), stringIDToTypeID("addToSelectionContinuous"));
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
app.activeDocument.activeLayer.merge(); //合并当前选择图层
app.activeDocument.activeLayer.grouped = true;
}
function 毫米转像素(毫米)
{
//厘米转像素
doc_w = app.activeDocument.width;
//用户设定的厘米数 支持小数
user_mm = UnitValue(毫米,"mm");
user_px = user_mm.as("px")*app.activeDocument.resolution/72;
return user_px;
}
function 按选区添加蒙版() //先创建出选区 然后按选区添加出一个蒙版
{
var d = new ActionDescriptor();
d.putClass(stringIDToTypeID("new"), stringIDToTypeID("channel"));
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("channel"), stringIDToTypeID("mask"));
d.putReference(stringIDToTypeID("at"), r);
d.putEnumerated(stringIDToTypeID("using"), stringIDToTypeID("userMaskEnabled"), stringIDToTypeID("revealSelection"));
executeAction(stringIDToTypeID("make"), d, DialogModes.NO);
}
}
function 文档另存(缓存切片裁片路径选择){
var 导出目录 =缓存切片裁片路径选择;
var 裁片组 = app.activeDocument.layerSets;
for(var i=0;i<裁片组.length;i++)
{
app.activeDocument.duplicate("temp");
复制文档裁片组 = app.activeDocument.layerSets;
当前裁片组 = 复制文档裁片组[i];
当前裁片组名 = 当前裁片组.name;
花样图层 = 当前裁片组.layers[0];
裁片图层 = 当前裁片组.layers[1];
app.activeDocument.activeLayer = 花样图层;
//把花样图层导出
花样图层.grouped = false; //取消图层链接
仅当前图层可见();
//按花样图层大小裁剪文档
app.activeDocument.crop(花样图层.bounds,0);
//拼合图像只保留花样图层
var d = new ActionDescriptor();
executeAction(stringIDToTypeID("flattenImage"), d, DialogModes.NO);
//保存为TIF
var 文件路径 = 导出目录 + "/" + 当前裁片组名 + ".tif";
tiffOptions = new TiffSaveOptions();
app.activeDocument.saveAs(new File(文件路径), tiffOptions);
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}
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);
d.putBoolean(stringIDToTypeID("toggleOptionsPalette"), true);
executeAction(stringIDToTypeID("show"), d, DialogModes.NO);
}
}
}
dialog.show()
}