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

发表新主题 关闭主题
 
只看楼主 主题工具
旧 2023-04-02, 13:52     #1
hry496255232@163.com hry496255232@163.com 当前离线
正式会员
等级: 四袋长老
级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时
 
Uid: 386344
注册日期: 2014-01-13, 18:31
帖子: 351
感谢: 29
38 个帖子获得 70 次感谢
现金: 292金币
资产: 292金币
声望: 10 hry496255232@163.com 向着好的方向发展
hry496255232@163.com hry496255232@163.com 当前离线
正式会员
等级: 四袋长老
级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时
 
Uid: 386344
注册日期: 2014-01-13, 18:31
帖子: 351
感谢: 29
38 个帖子获得 70 次感谢
现金: 292金币
资产: 292金币
声望: 10 hry496255232@163.com 向着好的方向发展
默认 替换对像怎样支持蒙版   



这个不知道是那个大佬发的了
只要原物件或目标物件有蒙版会跑位
怎样支持蒙版不跑位

var docRef = activeDocument;
// 判断选择物件2个以上
if (docRef.selection.length > 1) {
// 定义选择物件
mySelection = docRef.selection;

// 最上层物件为替换源
var sourceObj = docRef.selection[0];

// 定义数组用来保存选择物件的左上角坐标
var alterObjectArray = new Array();
for (var i=0; i < mySelection.length; i++) {
// PageItem.position 获得物件群组左上角坐标
var sel_xy = mySelection[i].position
alterObjectArray.push(sel_xy);
}
// 删除用来定位的下层物件
for (var i=1; i < mySelection.length; i++) {
mySelection[i].remove();
}
// PageItem.duplicate 复制对象, 需要一个相对对象定位
var newGroup = sourceObj.parent.groupItems.add();
for (var i=1; i < alterObjectArray.length; i++) {
sourceObj.position = alterObjectArray[i]; // 设置替换物的左上角位置,达到替换目的
sourceObj.duplicate(newGroup, ElementPlacement.PLACEATEND);
}
sourceObj.remove();
}
hry496255232@163.com 当前离线  
旧 2023-04-02, 13:59   只看该作者   #2
hry496255232@163.com hry496255232@163.com 当前离线
正式会员
等级: 四袋长老
级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时
 
Uid: 386344
注册日期: 2014-01-13, 18:31
帖子: 351
感谢: 29
38 个帖子获得 70 次感谢
现金: 292金币
资产: 292金币
声望: 10 hry496255232@163.com 向着好的方向发展
hry496255232@163.com hry496255232@163.com 当前离线
正式会员
等级: 四袋长老
级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时
 
Uid: 386344
注册日期: 2014-01-13, 18:31
帖子: 351
感谢: 29
38 个帖子获得 70 次感谢
现金: 292金币
资产: 292金币
声望: 10 hry496255232@163.com 向着好的方向发展
默认

如图有蒙版位置会对不上..........
上传的图像
文件类型: png 111.png (4.6 KB, 8 次查看)
文件类型: png 222.png (4.3 KB, 4 次查看)
hry496255232@163.com 当前离线  
旧 2023-04-02, 14:02   只看该作者   #3
hry496255232@163.com hry496255232@163.com 当前离线
正式会员
等级: 四袋长老
级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时
 
Uid: 386344
注册日期: 2014-01-13, 18:31
帖子: 351
感谢: 29
38 个帖子获得 70 次感谢
现金: 292金币
资产: 292金币
声望: 10 hry496255232@163.com 向着好的方向发展
hry496255232@163.com hry496255232@163.com 当前离线
正式会员
等级: 四袋长老
级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时级别:38 | 在线时长:1665小时 | 升级还需:12小时
 
Uid: 386344
注册日期: 2014-01-13, 18:31
帖子: 351
感谢: 29
38 个帖子获得 70 次感谢
现金: 292金币
资产: 292金币
声望: 10 hry496255232@163.com 向着好的方向发展
默认

或者改个这个也是蒙版对位不上

/////////////////////////////////////////////////////////////////
//Copy to Object(s) v4.5 -- CS,CS2
//>=--------------------------------------
// User selects two (or more) objects:
// This script copies the top most object to the position and size of
// all other selected objects.
//
//Version 2 update: Now adjusts stroke based on difference in area.
//Version 3 update: Now accepts multiple targets.
// -- thanks to an awesome hack by Iain Henderson (iain@addition.com.au)
//Version 4 update: Deselects everything but source object
// --this makes it easy to delete the source object if you wish,
// -- also this makes the older "Replace-Object" script obsolete.
// -- now allows user to choose whether to resize to target. (copies are centered to target.)
//>=--------------------------------------
// JS code (c) copyright: John Wundes ( john@wundes.com ) www.wundes.com
//copyright full text here: http://www.wundes.com/js4ai/copyright.txt
//////////////////////////////////////////////////////////////////

var selObjs = "Please select at least two objects on the page.";
var docRef = activeDocument;
if (documents.length>0) {
if (docRef.selection.length > 1) {
mySelection = docRef.selection;
var sourceObj = docRef.selection[0];
//if object is a (collection of) object(s) not a text field.
if (mySelection instanceof Array) {
//initialize vars
//
//*******************************************************
//toggle for scaling stroke: set to true to scale stroke.
var scaled = true;
//*******************************************************
//create stroke Array
var strokeArray = new Array();
//create bounding objects
//********************************************************
var origBounds = mySelection[0].geometricBounds;

//define paramaters of top object
var oul_x = origBounds[0];
var oul_y = origBounds[1];
var olr_x = origBounds[2];
var olr_y = origBounds[3];
var oSelWidth = (olr_x-oul_x);
var oSelHeight = (oul_y-olr_y);
var oSelPos = [oul_x, oul_y];
// *********************************************************
var initBounds;
var ul_x;
var ul_y;
var lr_x;
var lr_y;
var mySelWidth;
var mySelHeight;
var mySelPos;
var scaleObjects = confirm("Scale Objects?"); //false;
var centerObjects = true; // confirm("Center copies to targets?");
var newX = 0;
var newY = 0;
var alterObjectArray = new Array();

for (var i=0; i < mySelection.length; i++) {
eval('subArray' + i + '=' + 'new Array()');
eval('subArray' + i + '["object"]' + '=' + mySelection[i]);
initBounds = mySelection[i].geometricBounds;
ul_x = initBounds[0];
ul_y = initBounds[1];
lr_x = initBounds[2];
lr_y = initBounds[3];
mySelWidth = (lr_x-ul_x);
mySelHeight = (ul_y-lr_y);
mySelPos = [ul_x, ul_y];
eval('subArray' + i + '["width"]=' + mySelWidth);
eval('subArray' + i + '["xpos"]=' + ul_x);
eval('subArray' + i + '["ypos"]=' + ul_y);
eval('subArray' + i + '["height"]=' + mySelHeight);

eval('alterObjectArray.push(subArray' + i + ')');
}

for (var i=1; i < alterObjectArray.length; i++) {
//find proportional Difference
//average height and width to find new stroke
if (scaled == true) {
var wdiff = mySelWidth/oSelWidth;
var whght = mySelHeight/oSelHeight;
var propDiff = (wdiff+whght)/2;
} else {
var propDiff = 1;
}
//mark stroked Items
//apply transforms
var newGroup = docRef.groupItems.add();
//modify move behavior for changes in JS for CS...
if (version == "10.0") {
newGroup.moveToEnd(docRef);
var tempObj = mySelection[0].duplicate();
tempObj.moveToEnd(newGroup);
} else {
newGroup.move(docRef, ElementPlacement.PLACEATEND);
mySelection[0].duplicate(newGroup, ElementPlacement.PLACEATEND);
}
markStroked(newGroup);


if (scaleObjects)
{
eval('newGroup.position = [alterObjectArray['+i+']["xpos"], alterObjectArray['+i+']["ypos"]]');
eval('newGroup.height = alterObjectArray['+ i +']["height"]');
eval('newGroup.width = alterObjectArray[' + i +']["width"]');
//restroke with new proportions
scaleStroke(strokeArray, propDiff);
} else {

if(centerObjects){
newX = (alterObjectArray[i].width/2);
newY = (alterObjectArray[i].height/2);
newX -= newGroup.width/2;
newY -= newGroup.height/2;
}

eval('newGroup.position = [alterObjectArray['+i+']["xpos"]+newX, alterObjectArray['+i+']["ypos"]-newY]');

}
//move object

mySelection[i].remove();
}
slen = selection.length;

for (var s= slen-1;s>=0;s-- )
{
selection[s].selected = false;
}
sourceObj.selected = true;
} else {
alert(selObjs);
}
} else {
alert(selObjs);
}
}
//Create the stroke Object that goes into the stroke Array.
// contains the items colorObject, and it's initial stroke weight.
function strokeObj(pName, strokeWt) {
this.pName = pName;
this.strokeWt = strokeWt;
}
function markStroked(Sel) {
var slen = Sel.length;
// if selected is a single object...
if (Sel.typename == "GroupItem") {
markStroked(Sel.pageItems);
} else if (Sel.typename == "CompoundPathItem") {
//add object and stroke weight to the array...
myColor = Sel.pathItems[0];
myWt = myColor.strokeWidth;
bob = new strokeObj(myColor, myWt);
strokeArray.push(bob);
} else if (Sel.typename == "TextFrame") {
if (Sel.textRange.characterAttributes.strokeColor.typename != "NoColor") {
var clMax = Sel.textRange.characters.length;
for (var cl=0; cl<clMax; cl++) {
myColor = Sel.textRange.characters[0].characterAttributes;
myWt = myColor.strokeWeight;
bob = new strokeObj(myColor, myWt);
strokeArray.push(bob);
}
}
}
// if selected contains more than one object...
for (var a=0; a<slen; a++) {
if (Sel[a].typename == "GroupItem") {
//alert("a group in markStroke");
markStroked(Sel[a].pageItems);
} else if (Sel[a].typename == "CompoundPathItem") {
myColor = Sel[a].pathItems[0];
myWt = myColor.strokeWidth;
bob = new strokeObj(myColor, myWt);
strokeArray.push(bob);
} else if (Sel[a].typename == "PathItem") {
if (Sel[a].stroked == true) {
myColor = Sel[a];
myWt = myColor.strokeWidth;
bob = new strokeObj(myColor, myWt);
strokeArray.push(bob);
}
} else if (Sel[a].typename == "TextFrame") {
if (Sel[a].textRange.characterAttributes.strokeColor.typename != "NoColor") {
var clMax = Sel[a].textRange.characters.length;
for (var cl=0; cl<clMax; cl++) {
myColor = Sel[a].textRange.characters[cl].characterAttributes;
myWt = myColor.strokeWeight;
bob = new strokeObj(myColor, myWt);
strokeArray.push(bob);
}
}
}
}
}
function scaleStroke(mySlx, strokeScale) {
var slen = mySlx.length;
for (var a=0; a<slen; a++) {
//set it's strokeweight or strokewidth, whatever... :)
mySlx[a].pName.strokeWidth = mySlx[a].strokeWt*strokeScale;
mySlx[a].pName.strokeWeight = mySlx[a].strokeWt*strokeScale;
}
}
hry496255232@163.com 当前离线  
发表新主题 关闭主题


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

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


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


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

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