385 lines
12 KiB
Python
385 lines
12 KiB
Python
dxf15_jscode = """
|
|
|
|
|
|
|
|
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(layer); // 将匹配到的图层添加到数组中
|
|
}
|
|
}
|
|
|
|
// 输出匹配到的数值个数
|
|
$.writeln("匹配到的数值个数:" + matchCount);
|
|
|
|
// 遍历匹配到的图层名称
|
|
for (var i = 0; i < layerNames.length; i++) {
|
|
var layerName = layerNames[i].name;
|
|
// $.writeln("匹配到的图层名称:" + layerName);
|
|
var 当前花样图层 = app.activeDocument.layers.getByName(layerName);
|
|
app.activeDocument.activeLayer = 当前花样图层;
|
|
图层编组main()
|
|
app.activeDocument.activeLayer.name=layerName
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
function 图层编组main() //图层编组
|
|
{
|
|
|
|
var d = new ActionDescriptor();
|
|
var r = new ActionReference();
|
|
r.putClass(stringIDToTypeID("layerSection"));
|
|
d.putReference(stringIDToTypeID("null"), r);
|
|
var r1 = new ActionReference();
|
|
r1.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
|
|
d.putReference(stringIDToTypeID("from"), r1);
|
|
d.putInteger(stringIDToTypeID("layerSectionStart"), 43);
|
|
d.putInteger(stringIDToTypeID("layerSectionEnd"), 44);
|
|
d.putString(stringIDToTypeID("name"), "main");
|
|
executeAction(stringIDToTypeID("make"), d, DialogModes.NO);
|
|
|
|
}
|
|
|
|
|
|
function 快速超级链接2() {
|
|
|
|
app.activeDocument.suspendHistory("快速超链接", "快速超级链接()");
|
|
}
|
|
|
|
|
|
function 快速超级链接() {
|
|
var 导出目录 = Folder.selectDialog("选择超链接素材目录");
|
|
if (!导出目录) {
|
|
alert("未选择导出目录。操作已取消。");
|
|
return;
|
|
}
|
|
|
|
|
|
画布大小()
|
|
app.preferences.rulerUnits = Units.PIXELS
|
|
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(layer); // 将匹配到的图层添加到数组中
|
|
}
|
|
}
|
|
|
|
// 输出匹配到的数值个数
|
|
// $.writeln("匹配到的数值个数:" + matchCount);
|
|
|
|
// 遍历匹配到的图层名称
|
|
for (var i = 0; i < layerNames.length; i++) {
|
|
var layerName = layerNames[i].name;
|
|
$.writeln("匹配到的图层名称:" + layerName);
|
|
var 当前花样图层 = app.activeDocument.layers.getByName(layerName);
|
|
app.activeDocument.activeLayer = 当前花样图层;
|
|
切换mask()
|
|
载入选区()
|
|
var 边距 = 获取当前选区四边距();
|
|
var 毫米 = 130;
|
|
var 每英寸像素数 = app.activeDocument.resolution; // 获取当前文档的分辨率(每英寸像素数)
|
|
var 扩展像素 = 毫米转像素(毫米, 每英寸像素数);
|
|
|
|
var 裁切上边距= 边距.top-扩展像素
|
|
var 裁切左边距= 边距.left-扩展像素
|
|
var 裁切下边距= 边距.bottom+扩展像素
|
|
var 裁切右边距= 边距.right+扩展像素
|
|
|
|
var selRegion = [
|
|
[裁切左边距,裁切上边距],
|
|
[裁切右边距,裁切上边距],
|
|
[裁切右边距,裁切下边距],
|
|
[裁切左边距,裁切下边距]
|
|
];
|
|
|
|
app.activeDocument.selection.select(selRegion, SelectionType.REPLACE);
|
|
新建图层()
|
|
app.activeDocument.selection.select(selRegion, SelectionType.REPLACE);
|
|
|
|
var c = new SolidColor();
|
|
c.rgb.hexValue = "FFFFFF";
|
|
app.activeDocument.selection.fill(c);
|
|
后移一层()
|
|
app.activeDocument.activeLayer = 当前花样图层;
|
|
切换mask()
|
|
载入选区()
|
|
删除图层蒙版()
|
|
创建剪贴蒙版()
|
|
向下合并()
|
|
新建文档()
|
|
当前花样图层 = app.activeDocument.activeLayer
|
|
app.activeDocument.crop( 当前花样图层.bounds, 0);
|
|
var 文件路径 = 导出目录 + "/" + layerName + ".tif";
|
|
tiffOptions = new TiffSaveOptions();
|
|
app.activeDocument.saveAs(new File(文件路径), tiffOptions);
|
|
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
|
|
app.activeDocument=currentDocument
|
|
转换为智能对象()
|
|
重新链接到文件(文件路径)
|
|
添加图层蒙版()
|
|
//当前图层=app.activeDocument.activeLayer
|
|
//当前图层.name=layerName
|
|
}
|
|
}
|
|
|
|
|
|
|
|
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 转换为智能对象() //转换为智能对象
|
|
{
|
|
|
|
var d = new ActionDescriptor();
|
|
executeAction(stringIDToTypeID("newPlacedLayer"), 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 切换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 每英寸毫米数 = 25.4;
|
|
var 英寸 = 毫米 / 每英寸毫米数;
|
|
return Math.round(英寸 * 每英寸像素数);
|
|
}
|
|
|
|
|
|
|
|
function 画布大小() //画布大小
|
|
{
|
|
|
|
var d = new ActionDescriptor();
|
|
d.putBoolean(stringIDToTypeID("relative"), true);
|
|
d.putUnitDouble(stringIDToTypeID("width"), stringIDToTypeID("distanceUnit"), 850.56);
|
|
d.putUnitDouble(stringIDToTypeID("height"), stringIDToTypeID("distanceUnit"), 850.56);
|
|
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 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 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 d = new ActionDescriptor();
|
|
var r = new ActionReference();
|
|
r.putClass(stringIDToTypeID("layer"));
|
|
d.putReference(stringIDToTypeID("null"), r);
|
|
d.putInteger(stringIDToTypeID("layerID"), 135);
|
|
executeAction(stringIDToTypeID("make"), 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("previous"));
|
|
d.putReference(stringIDToTypeID("to"), r1);
|
|
executeAction(stringIDToTypeID("move"), 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);
|
|
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("ordinal"), stringIDToTypeID("targetEnum"));
|
|
d.putReference(stringIDToTypeID("to"), r1);
|
|
executeAction(stringIDToTypeID("set"), 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);
|
|
executeAction(stringIDToTypeID("delete"), 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("targetEnum"));
|
|
d.putReference(stringIDToTypeID("null"), r);
|
|
executeAction(stringIDToTypeID("groupEvent"), d, DialogModes.NO);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
""" |