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

发表新主题 回复
 
只看楼主 主题工具
旧 2024-11-16, 16:40     #1
meizunwl meizunwl 当前离线
正式会员
等级: 一袋长老
级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时
 
Uid: 734026
注册日期: 2024-04-25, 15:15
帖子: 38
感谢: 1
2 个帖子获得 3 次感谢
现金: 51金币
资产: 51金币
声望: 10 meizunwl 向着好的方向发展
meizunwl meizunwl 当前离线
正式会员
等级: 一袋长老
级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时
 
Uid: 734026
注册日期: 2024-04-25, 15:15
帖子: 38
感谢: 1
2 个帖子获得 3 次感谢
现金: 51金币
资产: 51金币
声望: 10 meizunwl 向着好的方向发展
问题 大神们,谁能帮忙把这个脚本单位改成毫米(mm)   



if (app.selection.length === 0) {
alert("未选择对象!");
} else{
app.executeMenuCommand("copy");
var newDoc = app.documents.add();
newDoc.activate();
app.executeMenuCommand("paste");
var artboard = newDoc.artboards[0];
artboard.artboardRect = newDoc.visibleBounds;
}
var SELECTION=activeDocument.selection
//var LeftX=TopY=RightX=BottomY=undefined;
if(SELECTION.length>0){
var VIEW=app.activeDocument.activeView;
var zoom=VIEW.zoom
//centerPoint=app.activeDocument.activeView.centerPoint
VIEW.zoom=1;
var bounds=VIEW.bounds;
var ViewW=bounds[2]-bounds[0];
var ViewH=bounds[1]-bounds[3];
VIEW.zoom=zoom;
if(LeftX){LeftX=undefined;};
if(TopY){TopY=undefined;};
if(RightX){RightX=undefined;};
if(BottomY){BottomY=undefined;};
for(var num=0;num<SELECTION.length;num++){
var SELECTED=SELECTION[num].geometricBounds;
var LeftX=(LeftX==undefined)?SELECTED[0]:((LeftX<SELECTED[0])?LeftX:SELECTED[0]);
var TopY=(TopY==undefined)?SELECTED[1]:((TopY>SELECTED[1])?TopY:SELECTED[1]);
var RightX=(RightX==undefined)?SELECTED[2]:((RightX>SELECTED[2])?RightX:SELECTED[2]);
var BottomY=(BottomY==undefined)?SELECTED[3]:((BottomY<SELECTED[3])?BottomY:SELECTED[3]);
};
var WidthX=RightX-LeftX;
var HeightY=TopY-BottomY;
var CenterX=(RightX+LeftX)/2;
var CenterY=(TopY+BottomY)/2;

var Zoom=(ViewW/ViewH<WidthX/HeightY)?ViewW/WidthX:ViewH/HeightY;
VIEW.zoom=Zoom*0.9;
VIEW.centerPoint=[CenterX,CenterY];
};
//$.writeln (SELECTION.length)
meizunwl 当前离线   回复时引用此帖回复时引用此帖
旧 2024-11-16, 17:58   只看该作者   #2
cpclgw cpclgw 当前在线
中级会员
等级: 七袋长老
帅哥 级别:87 | 在线时长:7989小时 | 升级还需:107小时级别:87 | 在线时长:7989小时 | 升级还需:107小时级别:87 | 在线时长:7989小时 | 升级还需:107小时级别:87 | 在线时长:7989小时 | 升级还需:107小时级别:87 | 在线时长:7989小时 | 升级还需:107小时级别:87 | 在线时长:7989小时 | 升级还需:107小时级别:87 | 在线时长:7989小时 | 升级还需:107小时级别:87 | 在线时长:7989小时 | 升级还需:107小时级别:87 | 在线时长:7989小时 | 升级还需:107小时
 
Uid: 333099
注册日期: 2013-03-11, 13:56
帖子: 2465
感谢: 756
427 个帖子获得 704 次感谢
现金: 42金币
资产: 4042金币
声望: 10 cpclgw 向着好的方向发展
cpclgw cpclgw 当前在线
中级会员
等级: 七袋长老
帅哥 级别:87 | 在线时长:7989小时 | 升级还需:107小时级别:87 | 在线时长:7989小时 | 升级还需:107小时级别:87 | 在线时长:7989小时 | 升级还需:107小时级别:87 | 在线时长:7989小时 | 升级还需:107小时级别:87 | 在线时长:7989小时 | 升级还需:107小时级别:87 | 在线时长:7989小时 | 升级还需:107小时级别:87 | 在线时长:7989小时 | 升级还需:107小时级别:87 | 在线时长:7989小时 | 升级还需:107小时级别:87 | 在线时长:7989小时 | 升级还需:107小时
 
Uid: 333099
注册日期: 2013-03-11, 13:56
帖子: 2465
感谢: 756
427 个帖子获得 704 次感谢
现金: 42金币
资产: 4042金币
声望: 10 cpclgw 向着好的方向发展
默认

我在AI中执行你原来的代码,查看线条是单位就是mm.

请用这个AI修改的代码测试看看:

if (app.selection.length === 0) {
alert("未选择对象!");
} else {
app.executeMenuCommand("copy");
var newDoc = app.documents.add();
newDoc.activate();
app.executeMenuCommand("paste");
var artboard = newDoc.artboards[0];
artboard.artboardRect = newDoc.visibleBounds;
}

var SELECTION = activeDocument.selection;
if (SELECTION.length > 0) {
var VIEW = app.activeDocument.activeView;
var zoom = VIEW.zoom;

// 将 zoom 暂时重置为 1,以准确计算可见范围的尺寸
VIEW.zoom = 1;
var bounds = VIEW.bounds;
var ViewW = (bounds[2] - bounds[0]) * 0.3527777778; // 转换为毫米
var ViewH = (bounds[1] - bounds[3]) * 0.3527777778; // 转换为毫米
VIEW.zoom = zoom;

// 初始化边界值
var LeftX, TopY, RightX, BottomY;

for (var num = 0; num < SELECTION.length; num++) {
var SELECTED = SELECTION[num].geometricBounds;
LeftX = (LeftX == undefined) ? SELECTED[0] : Math.min(LeftX, SELECTED[0]);
TopY = (TopY == undefined) ? SELECTED[1] : Math.max(TopY, SELECTED[1]);
RightX = (RightX == undefined) ? SELECTED[2] : Math.max(RightX, SELECTED[2]);
BottomY = (BottomY == undefined) ? SELECTED[3] : Math.min(BottomY, SELECTED[3]);
}

// 计算选区的尺寸和中心点(转换为毫米)
var WidthX = (RightX - LeftX) * 0.3527777778;
var HeightY = (TopY - BottomY) * 0.3527777778;
var CenterX = ((RightX + LeftX) / 2) * 0.3527777778;
var CenterY = ((TopY + BottomY) / 2) * 0.3527777778;

// 根据视窗比例计算适当的缩放值
var Zoom = (ViewW / ViewH < WidthX / HeightY) ? ViewW / WidthX : ViewH / HeightY;
VIEW.zoom = Zoom * 0.9; // 设置缩放比例,留一些边距
VIEW.centerPoint = [CenterX / 0.3527777778, CenterY / 0.3527777778]; // 将毫米单位转换回点单位
}

此帖于 2024-11-16 18:13 被 cpclgw 编辑.
cpclgw 当前在线   回复时引用此帖回复时引用此帖
旧 2024-11-16, 18:34   只看该作者   #3
3X 3X 当前离线
正式会员
等级: 六袋长老
帅哥 级别:60 | 在线时长:3955小时 | 升级还需:10小时级别:60 | 在线时长:3955小时 | 升级还需:10小时级别:60 | 在线时长:3955小时 | 升级还需:10小时级别:60 | 在线时长:3955小时 | 升级还需:10小时级别:60 | 在线时长:3955小时 | 升级还需:10小时级别:60 | 在线时长:3955小时 | 升级还需:10小时
 
Uid: 62943
注册日期: 2007-12-26, 04:52
来自: 广东
帖子: 1380
感谢: 36
94 个帖子获得 118 次感谢
现金: 173金币
资产: 1061金币
声望: 10 3X 向着好的方向发展
3X 3X 当前离线
正式会员
等级: 六袋长老
帅哥 级别:60 | 在线时长:3955小时 | 升级还需:10小时级别:60 | 在线时长:3955小时 | 升级还需:10小时级别:60 | 在线时长:3955小时 | 升级还需:10小时级别:60 | 在线时长:3955小时 | 升级还需:10小时级别:60 | 在线时长:3955小时 | 升级还需:10小时级别:60 | 在线时长:3955小时 | 升级还需:10小时
 
Uid: 62943
注册日期: 2007-12-26, 04:52
来自: 广东
帖子: 1380
感谢: 36
94 个帖子获得 118 次感谢
现金: 173金币
资产: 1061金币
声望: 10 3X 向着好的方向发展
默认

引用:
作者: cpclgw 查看帖子
我在AI中执行你原来的代码,查看线条是单位就是mm.

请用这个AI修改的代码测试看看:

if (app.selection.length === 0) {
alert("未选择对象!");
} else {
app.executeMenuCommand("copy");
var newDoc = app.documents.add();
newDoc.activate();
app.executeMenuCommand("paste");
var artboard = newDoc.artboards[0];
ar...
这种转换方法最后的数字都不是整数吧,很多小数点
3X 当前离线   回复时引用此帖回复时引用此帖
旧 2024-11-16, 19:06   只看该作者   #4
meizunwl meizunwl 当前离线
正式会员
等级: 一袋长老
级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时
 
Uid: 734026
注册日期: 2024-04-25, 15:15
帖子: 38
感谢: 1
2 个帖子获得 3 次感谢
现金: 51金币
资产: 51金币
声望: 10 meizunwl 向着好的方向发展
meizunwl meizunwl 当前离线
正式会员
等级: 一袋长老
级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时
 
Uid: 734026
注册日期: 2024-04-25, 15:15
帖子: 38
感谢: 1
2 个帖子获得 3 次感谢
现金: 51金币
资产: 51金币
声望: 10 meizunwl 向着好的方向发展
默认 提取出来常规单位还是PT,主要的就是改常规单位为MM

引用:
作者: cpclgw 查看帖子
我在AI中执行你原来的代码,查看线条是单位就是mm.

请用这个AI修改的代码测试看看:

if (app.selection.length === 0) {
alert("未选择对象!");
} else {
app.executeMenuCommand("copy");
var newDoc = app.documents.add();
newDoc.activate();
app.executeMenuCommand("paste");
var artboard = newDoc.artboards[0];
ar...

提取出来常规单位还是PT,主要的就是改常规单位为MM
上传的图像
文件类型: png 微信图片_20241116190534.png (46.7 KB, 52 次查看)
meizunwl 当前离线   回复时引用此帖回复时引用此帖
旧 2024-11-16, 19:29   只看该作者   #5
aprking aprking 当前离线
中级会员
等级: 六袋长老
级别:68 | 在线时长:4988小时 | 升级还需:49小时级别:68 | 在线时长:4988小时 | 升级还需:49小时级别:68 | 在线时长:4988小时 | 升级还需:49小时级别:68 | 在线时长:4988小时 | 升级还需:49小时级别:68 | 在线时长:4988小时 | 升级还需:49小时
 
Uid: 4007
注册日期: 2005-07-24, 00:28
来自: adderss
帖子: 1788
感谢: 120
256 个帖子获得 509 次感谢
现金: 1458金币
资产: 4226金币
声望: 13 aprking 向着好的方向发展
aprking aprking 当前离线
中级会员
等级: 六袋长老
级别:68 | 在线时长:4988小时 | 升级还需:49小时级别:68 | 在线时长:4988小时 | 升级还需:49小时级别:68 | 在线时长:4988小时 | 升级还需:49小时级别:68 | 在线时长:4988小时 | 升级还需:49小时级别:68 | 在线时长:4988小时 | 升级还需:49小时
 
Uid: 4007
注册日期: 2005-07-24, 00:28
来自: adderss
帖子: 1788
感谢: 120
256 个帖子获得 509 次感谢
现金: 1458金币
资产: 4226金币
声望: 13 aprking 向着好的方向发展
默认

引用:
作者: cpclgw 查看帖子
我在AI中执行你原来的代码,查看线条是单位就是mm.

请用这个AI修改的代码测试看看:

if (app.selection.length === 0) {
alert("未选择对象!");
} else {
app.executeMenuCommand("copy");
var newDoc = app.documents.add();
newDoc.activate();
app.executeMenuCommand("paste");
var artboard = newDoc.artboards[0];
ar...
按这个方法改:
var WidthX = parseFloat(((RightX - LeftX) * 0.3527777778).toFixed(2));
__________________
ZXP版安装:
http://install.anastasiy.com
aprking 当前离线   回复时引用此帖回复时引用此帖
旧 2024-11-16, 20:29   只看该作者   #6
braintrust2004 braintrust2004 当前离线
正式会员
等级: 小兄弟
级别:2 | 在线时长:18小时 | 升级还需:3小时级别:2 | 在线时长:18小时 | 升级还需:3小时
 
Uid: 736941
注册日期: 2024-11-14, 10:32
帖子: 10
感谢: 2
2 个帖子获得 2 次感谢
声望: 10 braintrust2004 向着好的方向发展
braintrust2004 braintrust2004 当前离线
正式会员
等级: 小兄弟
级别:2 | 在线时长:18小时 | 升级还需:3小时级别:2 | 在线时长:18小时 | 升级还需:3小时
 
Uid: 736941
注册日期: 2024-11-14, 10:32
帖子: 10
感谢: 2
2 个帖子获得 2 次感谢
声望: 10 braintrust2004 向着好的方向发展
默认

AI 默认使用的是点 (points) 作为单位。1 点等于 1/72 英寸,如果需要将其改为毫米 (mm),你需要在计算时进行单位转换。关键修改是处理与几何边界 (geometricBounds) 和视图边界 (VIEW.bounds) 的值。1 点 (points) ≈ 0.352778 毫米, 因此,所有涉及到的坐标值需要乘以 0.352778。也就是楼上的0.3527777778。所以可以把你代码中var SELECTED = SELECTION[num].geometricBounds;改成var SELECTED = SELECTION[num].geometricBounds.map(function(value) {
return value * 0.352778; // 将点转换为毫米
});
braintrust2004 当前离线   回复时引用此帖回复时引用此帖
旧 2024-11-17, 14:13   只看该作者   #7
meizunwl meizunwl 当前离线
正式会员
等级: 一袋长老
级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时
 
Uid: 734026
注册日期: 2024-04-25, 15:15
帖子: 38
感谢: 1
2 个帖子获得 3 次感谢
现金: 51金币
资产: 51金币
声望: 10 meizunwl 向着好的方向发展
meizunwl meizunwl 当前离线
正式会员
等级: 一袋长老
级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时级别:7 | 在线时长:92小时 | 升级还需:4小时
 
Uid: 734026
注册日期: 2024-04-25, 15:15
帖子: 38
感谢: 1
2 个帖子获得 3 次感谢
现金: 51金币
资产: 51金币
声望: 10 meizunwl 向着好的方向发展
默认 直接替换那段也不行,命令错误,可能是我不会操作

引用:
作者: braintrust2004 查看帖子
AI 默认使用的是点 (points) 作为单位。1 点等于 1/72 英寸,如果需要将其改为毫米 (mm),你需要在计算时进行单位转换。关键修改是处理与几何边界 (geometricBounds) 和视图边界 (VIEW.bounds) 的值。1 点 (points) ≈ 0.352778 毫米, 因此,所有涉及到的坐标值需要乘以 0.352778。也就是楼上的0.3527777778。所以可以把你代码中var SELECTED = SELECTION[num].geometricBounds;改成var SELECTED = SELECTION[num].geometricBounds.m...

直接替换那段也不行,命令错误,可能是我不会操作
meizunwl 当前离线   回复时引用此帖回复时引用此帖
旧 2024-11-25, 11:10   只看该作者   #8
colorful girl 的头像
colorful girl colorful girl 当前在线
中级会员
等级: 七袋长老
美女 级别:70 | 在线时长:5287小时 | 升级还需:38小时级别:70 | 在线时长:5287小时 | 升级还需:38小时级别:70 | 在线时长:5287小时 | 升级还需:38小时级别:70 | 在线时长:5287小时 | 升级还需:38小时级别:70 | 在线时长:5287小时 | 升级还需:38小时级别:70 | 在线时长:5287小时 | 升级还需:38小时级别:70 | 在线时长:5287小时 | 升级还需:38小时
 
Uid: 312120
注册日期: 2012-08-06, 11:13
来自: 乌镇
帖子: 2959
感谢: 75
95 个帖子获得 117 次感谢
现金: 2882金币
资产: 2882金币
声望: 10 colorful girl 向着好的方向发展
colorful girl colorful girl 当前在线
中级会员
等级: 七袋长老
美女 级别:70 | 在线时长:5287小时 | 升级还需:38小时级别:70 | 在线时长:5287小时 | 升级还需:38小时级别:70 | 在线时长:5287小时 | 升级还需:38小时级别:70 | 在线时长:5287小时 | 升级还需:38小时级别:70 | 在线时长:5287小时 | 升级还需:38小时级别:70 | 在线时长:5287小时 | 升级还需:38小时级别:70 | 在线时长:5287小时 | 升级还需:38小时
colorful girl 的头像
 
Uid: 312120
注册日期: 2012-08-06, 11:13
来自: 乌镇
帖子: 2959
感谢: 75
95 个帖子获得 117 次感谢
现金: 2882金币
资产: 2882金币
声望: 10 colorful girl 向着好的方向发展
默认

引用:
作者: braintrust2004 查看帖子
AI 默认使用的是点 (points) 作为单位。1 点等于 1/72 英寸,如果需要将其改为毫米 (mm),你需要在计算时进行单位转换。关键修改是处理与几何边界 (geometricBounds) 和视图边界 (VIEW.bounds) 的值。1 点 (points) ≈ 0.352778 毫米, 因此,所有涉及到的坐标值需要乘以 0.352778。也就是楼上的0.3527777778。所以可以把你代码中var SELECTED = SELECTION[num].geometricBounds;改成var SELECTED = SELECTION[num].geometricBounds.m...
大神geometricBounds几何边界的4个点artboardRect[0]-[3]是什么意思 一直没搞懂,top, left, bottom, right吗?
colorful girl 当前在线   回复时引用此帖回复时引用此帖
发表新主题 回复


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

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


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


所有时间均为 +8, 现在的时间是 2025-01-01 20:02.

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