feat: AI套图分层方案 + Gemini集成 - 4种图案类型处理 + 正片叠底 + 宽高比 + 模型选择
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
136
psmark/JSX20.py
Normal file
136
psmark/JSX20.py
Normal file
@@ -0,0 +1,136 @@
|
||||
dxf20_jscode = """
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function 混排通码延申导出() {
|
||||
var 主文档 = app.activeDocument;
|
||||
var 主文档路径 = 主文档.path;
|
||||
var 新文件夹 = (主文档路径 + "/小片裁片"); // 在桌面上创建一个名为"导出目录"的文件夹
|
||||
var 导出目录 = Folder(新文件夹);
|
||||
if (!导出目录.exists) {
|
||||
导出目录.create();
|
||||
}
|
||||
|
||||
var doc = app.activeDocument;
|
||||
|
||||
// 获取所有图层
|
||||
var layers = doc.layers;
|
||||
|
||||
// 存储符合条件的图层组
|
||||
var matchingLayerSets = [];
|
||||
|
||||
// 遍历每个图层
|
||||
for (var i = 0; i < layers.length; i++) {
|
||||
var layer = layers[i];
|
||||
|
||||
// 如果是图层组,检查名称是否包含 "大货裁片"
|
||||
if (layer.typename == "LayerSet" && layer.name.indexOf("大货裁片") !== -1) {
|
||||
matchingLayerSets.push(layer);
|
||||
|
||||
// 输出图层组名称
|
||||
$.writeln("图层组名称:" + layer.name);
|
||||
图层组名称=layer.name
|
||||
// 输出图层组内子图层的名称
|
||||
for (var j = 0; j < layer.layers.length; j++) {
|
||||
var subLayer = layer.layers[j];
|
||||
$.writeln(" 子图层名称:" + subLayer.name);
|
||||
子图层名称=subLayer.name
|
||||
子图层名称分割=子图层名称.split("-")
|
||||
素材图名称=子图层名称分割[0]
|
||||
空白裁片模板 = app.activeDocument.layerSets.getByName(图层组名称).layers.getByName(子图层名称);
|
||||
app.activeDocument.activeLayer = 空白裁片模板;
|
||||
载入选区()
|
||||
素材名称 = app.activeDocument.layers.getByName(素材图名称);
|
||||
app.activeDocument.activeLayer = 素材名称;
|
||||
添加图层蒙版()
|
||||
新建文档()
|
||||
当前花样图层 = app.activeDocument.activeLayer
|
||||
app.activeDocument.crop( 当前花样图层.bounds, 0);
|
||||
var 文件路径 = 导出目录 + "/" + 子图层名称 + ".tif";
|
||||
tiffOptions = new TiffSaveOptions();
|
||||
app.activeDocument.saveAs(new File(文件路径), tiffOptions);
|
||||
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
|
||||
app.activeDocument=doc
|
||||
|
||||
历史记录回退3()
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 输出符合条件的图层组数量
|
||||
//$.writeln("符合条件的图层组数量:" + matchingLayerSets.length);
|
||||
|
||||
}
|
||||
|
||||
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();
|
||||
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.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 历史记录回退3() //
|
||||
{
|
||||
|
||||
var d = new ActionDescriptor();
|
||||
var r = new ActionReference();
|
||||
r.putOffset(stringIDToTypeID("historyState"), -2);
|
||||
d.putReference(stringIDToTypeID("null"), r);
|
||||
executeAction(stringIDToTypeID("select"), d, DialogModes.NO);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"""
|
||||
Reference in New Issue
Block a user