218 lines
7.7 KiB
Python
218 lines
7.7 KiB
Python
dxf26_jscode = """
|
|
// 弹出文件夹选择框
|
|
|
|
function 模特换图(){
|
|
建立快照()
|
|
var folder = Folder.selectDialog("请选择一个文件夹");
|
|
var 模特文档 = app.activeDocument;
|
|
|
|
if (folder) {
|
|
// 在选择的文件夹中创建一个新的子文件夹
|
|
var targetFolder = new Folder(folder.fullName + "/模特图生成");
|
|
if (!targetFolder.exists) {
|
|
targetFolder.create();
|
|
}
|
|
|
|
var files = folder.getFiles();
|
|
|
|
// 获取“贴图位置”图层组中的所有图层名称
|
|
var layerSet = 模特文档.layerSets.getByName("贴图位置");
|
|
var layerNames = [];
|
|
for (var j = 0; j < layerSet.artLayers.length; j++) {
|
|
layerNames.push(layerSet.artLayers[j].name);
|
|
}
|
|
|
|
// 遍历并尝试打开每个文件
|
|
for (var i = 0; i < files.length; i++) {
|
|
var file = files[i];
|
|
if (file instanceof File) {
|
|
try {
|
|
app.open(file);
|
|
app.activeDocument.flatten()
|
|
var 当前文档 = app.activeDocument;
|
|
var 当前文档名称 = 当前文档.name;
|
|
图像大小();
|
|
预设图案(当前文档名称);
|
|
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
|
|
app.activeDocument = 模特文档;
|
|
var 水平增量 = 200;
|
|
var 垂直增量 = 300;
|
|
var 水平基数 = 200;
|
|
var 垂直基数 = 300;
|
|
// 遍历“贴图位置”图层组中的每个图层
|
|
for (var k = 0; k < layerNames.length; k++) {
|
|
var layname = layerNames[k];
|
|
var 贴图位置 = app.activeDocument.layerSets.getByName("贴图位置").layers.getByName(layname);
|
|
app.activeDocument.activeLayer = 贴图位置;
|
|
载入选区();
|
|
填充图案(当前文档名称);
|
|
栅格化图层()
|
|
取消链接蒙版()
|
|
var 水平 = 水平基数 + 水平增量 * k;
|
|
var 垂直 = 垂直基数 + 垂直增量 * k;
|
|
位移(水平, 垂直);
|
|
}
|
|
|
|
var saveFile = new File(targetFolder.fullName + "/" + file.name.replace(/\.[^\.]+$/, "") + ".tif");
|
|
var tiffSaveOptions = new TiffSaveOptions();
|
|
tiffSaveOptions.imageCompression = TIFFEncoding.NONE; // 或者根据需要设置其他压缩选项
|
|
tiffSaveOptions.alphaChannels = true;
|
|
tiffSaveOptions.layers = true;
|
|
app.activeDocument.saveAs(saveFile, tiffSaveOptions, true, Extension.LOWERCASE);
|
|
|
|
// 关闭当前文档
|
|
历史记录回退到快照1()
|
|
} catch (e) {
|
|
alert("无法打开文件: " );
|
|
}
|
|
|
|
}
|
|
}
|
|
alert("换图完成")
|
|
} else {
|
|
alert("没有选择文件夹");
|
|
}
|
|
|
|
// 其他函数保持不变
|
|
|
|
|
|
function generateRandomNumber(min, max) {
|
|
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
}
|
|
|
|
|
|
|
|
function 图像大小() //图像大小
|
|
{
|
|
|
|
var d = new ActionDescriptor();
|
|
d.putUnitDouble(stringIDToTypeID("resolution"), stringIDToTypeID("densityUnit"), 150);
|
|
d.putBoolean(stringIDToTypeID("scaleStyles"), true);
|
|
d.putBoolean(stringIDToTypeID("constrainProportions"), true);
|
|
d.putEnumerated(charIDToTypeID("Intr"), stringIDToTypeID("interpolationType"), stringIDToTypeID("nearestNeighbor"));
|
|
executeAction(stringIDToTypeID("imageSize"), 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 d1 = new ActionDescriptor();
|
|
d1.putBoolean(stringIDToTypeID("userMaskLinked"), false);
|
|
d.putObject(stringIDToTypeID("to"), stringIDToTypeID("layer"), d1);
|
|
executeAction(stringIDToTypeID("set"), 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("rasterizeLayer"), 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();
|
|
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();
|
|
d.putInteger(stringIDToTypeID("horizontal"), 水平);
|
|
d.putInteger(stringIDToTypeID("vertical"), 垂直);
|
|
d.putEnumerated(stringIDToTypeID("fill"), stringIDToTypeID("fillMode"), stringIDToTypeID("wrap"));
|
|
executeAction(stringIDToTypeID("offset"), d, DialogModes.NO);
|
|
|
|
}
|
|
|
|
|
|
function 历史记录回退到快照1() //
|
|
{
|
|
|
|
var d = new ActionDescriptor();
|
|
var r = new ActionReference();
|
|
r.putName(stringIDToTypeID("snapshotClass"), "快照 1");
|
|
d.putReference(stringIDToTypeID("null"), r);
|
|
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
|
|
|
|
}
|
|
|
|
function 建立快照() //打开
|
|
{
|
|
|
|
var d = new ActionDescriptor();
|
|
var r = new ActionReference();
|
|
r.putClass(stringIDToTypeID("snapshotClass"));
|
|
d.putReference(stringIDToTypeID("null"), r);
|
|
var r1 = new ActionReference();
|
|
r1.putProperty(stringIDToTypeID("historyState"), stringIDToTypeID("currentHistoryState"));
|
|
d.putReference(stringIDToTypeID("from"), r1);
|
|
executeAction(stringIDToTypeID("make"), d, DialogModes.NO);
|
|
|
|
}
|
|
}
|
|
""" |