◆- Adobe插件与脚本区 主要讨论Adobe插件开发与软件脚本撰写

发表新主题 关闭主题
 
查看全部 主题工具
旧 2022-10-24, 23:13     #1
wiimoo wiimoo 当前离线
正式会员
等级: 小兄弟
级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时
 
Uid: 693352
注册日期: 2020-08-08, 12:25
帖子: 14
感谢: 6
1 个帖子获得 7 次感谢
现金: 108金币
资产: 808金币
声望: 10 wiimoo 向着好的方向发展
wiimoo wiimoo 当前离线
正式会员
等级: 小兄弟
级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时
 
Uid: 693352
注册日期: 2020-08-08, 12:25
帖子: 14
感谢: 6
1 个帖子获得 7 次感谢
现金: 108金币
资产: 808金币
声望: 10 wiimoo 向着好的方向发展
红心 求助,PS脚本如何遍历所有已打开的文档,执行function   



求助大佬,ps脚本中,如何对PS已打开的所有文档,执行 function lock;

下面代码,测试的时候,可以运行,但是只会对当前激活文档运行 function,并不会自动执行下一个PS已打开的文档,求助大佬~

app.bringToFront()

var docs = app.documents;

for(var i=0; i<docs.length; i++)
{
if (docs[i] instanceof File)

lock();

}

//alert("图片处理完毕","提示:");

function lock() {

wiimoo 当前离线  
旧 2022-10-25, 11:44     #2
wiimoo wiimoo 当前离线
正式会员
等级: 小兄弟
级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时
 
Uid: 693352
注册日期: 2020-08-08, 12:25
帖子: 14
感谢: 6
1 个帖子获得 7 次感谢
现金: 108金币
资产: 808金币
声望: 10 wiimoo 向着好的方向发展
wiimoo wiimoo 当前离线
正式会员
等级: 小兄弟
级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时
 
Uid: 693352
注册日期: 2020-08-08, 12:25
帖子: 14
感谢: 6
1 个帖子获得 7 次感谢
现金: 108金币
资产: 808金币
声望: 10 wiimoo 向着好的方向发展
红心

引用:
作者: xueyuhong958 查看帖子
循环中间加上这一句
activeDocument=docs[i]
先激活再执行函数。

大佬可否指点迷津一下,我完整的代码为

app.bringToFront()

var docs = app.documents;

for(var i=0; i<docs.length; i++)
{
if (docs[i] instanceof File)

lock();

}

//alert("图片处理完毕","提示:");

function lock() {
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("protectAll"), true);
d.putObject(stringIDToTypeID("layerLocking"), stringIDToTypeID("layerLocking"), d1);
executeAction(stringIDToTypeID("applyLocking"), d, DialogModes.NO);


目的,是想遍历当前打开的所有文档,并遍历每一个图层,进行上锁的操作,上锁就是引用的function lock(); 当前的问题是,只会对当前文档上锁,且没有遍历图层的代码,您可否帮我修改一下,上传,设置金币,我购买~
wiimoo 当前离线  
旧 2022-10-25, 14:35     #3
wiimoo wiimoo 当前离线
正式会员
等级: 小兄弟
级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时
 
Uid: 693352
注册日期: 2020-08-08, 12:25
帖子: 14
感谢: 6
1 个帖子获得 7 次感谢
现金: 108金币
资产: 808金币
声望: 10 wiimoo 向着好的方向发展
wiimoo wiimoo 当前离线
正式会员
等级: 小兄弟
级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时
 
Uid: 693352
注册日期: 2020-08-08, 12:25
帖子: 14
感谢: 6
1 个帖子获得 7 次感谢
现金: 108金币
资产: 808金币
声望: 10 wiimoo 向着好的方向发展
默认

引用:
作者: MaFia丶枫语 查看帖子
for(var i=0; i<docs.length; i++)
{
if (docs[i] instanceof File)
activeDocument=docs[i]
lock();

}
2楼大佬意思是循环这么写
我试过了,还是只处理当前文档,不是PS已打开的所有文档~所以,才贴出全部代码~
wiimoo 当前离线  
旧 2022-10-25, 14:41     #4
wiimoo wiimoo 当前离线
正式会员
等级: 小兄弟
级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时
 
Uid: 693352
注册日期: 2020-08-08, 12:25
帖子: 14
感谢: 6
1 个帖子获得 7 次感谢
现金: 108金币
资产: 808金币
声望: 10 wiimoo 向着好的方向发展
wiimoo wiimoo 当前离线
正式会员
等级: 小兄弟
级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时
 
Uid: 693352
注册日期: 2020-08-08, 12:25
帖子: 14
感谢: 6
1 个帖子获得 7 次感谢
现金: 108金币
资产: 808金币
声望: 10 wiimoo 向着好的方向发展
红心

引用:
作者: xueyuhong958 查看帖子
循环中间加上这一句
activeDocument=docs[i]
先激活再执行函数。

app.bringToFront()

// 定义一个变量[docs],它是一个数组,用来存储Photoshop当前已打开的所有文档。
var docs = app.documents;
// 定义一个变量[message],它的默认值为空。这个变量将在后面的代码中起到保存所有文档尺寸信息的作用。

app.activeDocument.suspendHistory("已锁定", "lock()");


for(var i=0; i<docs.length; i++)
{

if (docs[i] instanceof File)

lock();

}

//alert("图片处理完毕","提示:");

function lock() {


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("protectAll"), true);
d.putObject(stringIDToTypeID("layerLocking"), stringIDToTypeID("layerLocking"), d1);
executeAction(stringIDToTypeID("applyLocking"), d, DialogModes.NO);

}

大佬,付费求修改~

遍历PS已打开的所有文档和所有图层,进行function lock~
上传的附件
文件类型: rar lock.rar (703 字节, 6 次查看)
wiimoo 当前离线  
旧 2022-10-25, 17:52     #5
wiimoo wiimoo 当前离线
正式会员
等级: 小兄弟
级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时
 
Uid: 693352
注册日期: 2020-08-08, 12:25
帖子: 14
感谢: 6
1 个帖子获得 7 次感谢
现金: 108金币
资产: 808金币
声望: 10 wiimoo 向着好的方向发展
wiimoo wiimoo 当前离线
正式会员
等级: 小兄弟
级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时
 
Uid: 693352
注册日期: 2020-08-08, 12:25
帖子: 14
感谢: 6
1 个帖子获得 7 次感谢
现金: 108金币
资产: 808金币
声望: 10 wiimoo 向着好的方向发展
默认

引用:
作者: xueyuhong958 查看帖子
我都有点看不明白你的代码,英语不好。

不过我试了一下你的代码,只要加上我说的那一行激活文档就全部文档都能执行lock函数。只是你的这个函数只能锁定第一个层。


我不知道你的具体要求,简单写了一个锁定文档所有层的代码。
[隐藏内容]
感谢大佬,已购买,但是你写的代码就可以,我自己的那个function,为何就只锁定一个图层呢,还有一点想请问您一下,为何 app.activeDocument.suspendHistory("已锁定", "lock()"); 这里定义了历史记录,运行您上传那个脚本之后,还是会显示遍历图层的锁定历史记录呢?

然后就是有一个疑惑的地方,在上面遍历文档时定义的function 这里

for(var i=0; i<docs.length; i++)
{
activeDocument=docs[i]

lock();//这里定义了运行 function lock

第二个();

}
已经运行了function lock,

那么下面的

/*这里是function lock的内容
function lock(){
内容
}
*/

/*
function 第二个(){
内容
}
*/

假如下面还有多个function 功能

那么是否每一个function都还会再运行一次呢?
还是说只运行 上面 遍历文档时 定义的 activeDocument=docs[i] 下面的function ?

求大佬指点迷津~谢谢~再次感谢~
wiimoo 当前离线  
旧 2022-10-25, 23:16     #6
wiimoo wiimoo 当前离线
正式会员
等级: 小兄弟
级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时
 
Uid: 693352
注册日期: 2020-08-08, 12:25
帖子: 14
感谢: 6
1 个帖子获得 7 次感谢
现金: 108金币
资产: 808金币
声望: 10 wiimoo 向着好的方向发展
wiimoo wiimoo 当前离线
正式会员
等级: 小兄弟
级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时
 
Uid: 693352
注册日期: 2020-08-08, 12:25
帖子: 14
感谢: 6
1 个帖子获得 7 次感谢
现金: 108金币
资产: 808金币
声望: 10 wiimoo 向着好的方向发展
红心

引用:
作者: xueyuhong958 查看帖子
JavaScript 函数
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
.
JavaScript 函数语法
函数就是包裹在花括号中的代码块,前面使用了关键词 function:

function functionname()
{
// 执行代码
}
当调用该函数时,会执行函数内的代码。

调用 方法就是functionname()
不管函数写在代码那儿 ,只有调用函数才会执行。

你上面说的历史记录,我没仔细分析你代码,不清楚。

好的,感谢大佬的耐心解答与指导,非常感谢~谢谢~再次感谢~
wiimoo 当前离线  
旧 2022-11-07, 11:41     #7
wiimoo wiimoo 当前离线
正式会员
等级: 小兄弟
级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时
 
Uid: 693352
注册日期: 2020-08-08, 12:25
帖子: 14
感谢: 6
1 个帖子获得 7 次感谢
现金: 108金币
资产: 808金币
声望: 10 wiimoo 向着好的方向发展
wiimoo wiimoo 当前离线
正式会员
等级: 小兄弟
级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时
 
Uid: 693352
注册日期: 2020-08-08, 12:25
帖子: 14
感谢: 6
1 个帖子获得 7 次感谢
现金: 108金币
资产: 808金币
声望: 10 wiimoo 向着好的方向发展
默认

引用:
作者: xueyuhong958 查看帖子
JavaScript 函数
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
.
JavaScript 函数语法
函数就是包裹在花括号中的代码块,前面使用了关键词 function:

function functionname()
{
// 执行代码
}
当调用该函数时,会执行函数内的代码。

调用 方法就是functionname()
不管函数写在代码那儿 ,只有调用函数才会执行。

你上面说的历史记录,我没仔细分析你代码,不清楚。
————————————————————————————————————————————————

[MENTION=274036]xueyuhong958[/MENTION] 大佬,我遇到了新的问题,希望得到你的指点与帮助

代码内容为:

var shuru = prompt("请输入执行代码","可执行代码");
try
{
if(shuru==""||shuru==null)
{
throw "您输入的执行代码有误,请重新开始!";
}
if(isNaN(shuru))
{
throw "您输入的可执行代码未被识别,请重新开始!";
}
}
catch(err)
{
alert("错误:"+err);
throw "请点击确认,重新开始";
}

弹出一个prompt对话框,我希望在里面输入比如:“1R”“2B”“2W”“1B”这样的代码,可以执行,指定的 function 1R function 2B这样的功能,应该怎么写,付费求助,您可以出售附件。
wiimoo 当前离线  
旧 2022-11-07, 14:23     #8
wiimoo wiimoo 当前离线
正式会员
等级: 小兄弟
级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时
 
Uid: 693352
注册日期: 2020-08-08, 12:25
帖子: 14
感谢: 6
1 个帖子获得 7 次感谢
现金: 108金币
资产: 808金币
声望: 10 wiimoo 向着好的方向发展
wiimoo wiimoo 当前离线
正式会员
等级: 小兄弟
级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时级别:7 | 在线时长:89小时 | 升级还需:7小时
 
Uid: 693352
注册日期: 2020-08-08, 12:25
帖子: 14
感谢: 6
1 个帖子获得 7 次感谢
现金: 108金币
资产: 808金币
声望: 10 wiimoo 向着好的方向发展
默认

引用:
作者: xueyuhong958 查看帖子
var shuru = prompt("请输入执行代码","可执行代码");
try
{
if(shuru==""||shuru==null)
{
throw "您输入的执行代码有误,请重新开始!";
}
if(isNaN(shuru))
{
//throw "您输入的可执行代码未被识别,请重新开始!";
switch (shuru)
{
case "1R":
f1();
...

感谢您的指导与耐心的解答,不知您是否可以私信一下我您的联系方式,QQ或v信都可以,有些方面的知识,想付费向您学习一下。感谢,感谢~
wiimoo 当前离线  
发表新主题 关闭主题


发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子

论坛启用 vB 代码
论坛启用 表情图标
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


律师声明:本站内容,均具有版权,未经书面授权,禁止转载,严禁镜像,违者承担一切后果!
论坛广告报价   广告联系及办理企业会员服务QQ:57880388 站务管理QQ:35529388


所有时间均为 +8, 现在的时间是 2025-01-04 14:38.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
 
Copyright © 2004-2022