[英]`rotate()` does not set `BBAccumRotation`?
Illustrator 使用BBAccumRotation
以弧度0.51246700
跟蹤對象的旋轉。
如果BBAccumRotation
,則設置BBAccumRotation :
如果BBAccumRotation
,則未設置 BBAccumRotation:
rotate()
通過腳本旋轉問題是,是否有一種本機/烘焙方式可以讓rotate()
設置BBAccumRotation
?
雖然可以將BBAccumRotation
標簽添加到 object,但它會像任何自定義標簽一樣被處理 - Illustrator 在其旋轉標簽上無法識別它,因此它不會反映在“屬性”面板等位置。
我知道我可以使用自定義標簽來跟蹤rotate()
正在做什么 - 我寧願不在 go 那里。
似乎rotate()
應該設置BBAccumRotation
,我希望有一些我不知道的東西。
如果您有興趣親眼看看,這里有一些測試腳本:
檢查對象的標簽:
if (app.documents.length == 0 ) {
alert('Open a document to run this script.');
} else if (app.activeDocument.selection.length != 1) {
alert('Select 1 object to run this script.');
} else {
TagAlert();
}
function TagAlert() {
var iDoc = app.activeDocument;
var aObj = iDoc.selection;
var nObj = aObj.length;
for ( i = 0; i < nObj; i++ ) {
var obj = selection[0];
var aTags = obj.tags;
var nTags = aTags.length;
if (nTags == 0) {
alert('No tags.')
} else {
for ( i = 0; i < nObj; i++ ) {
var obj = aObj[0];
var aTags = obj.tags;
var nTags = aTags.length;
for ( i = 0; i < nTags; i++ ) {
tagName = aTags[i].name;
tagVal = aTags[i].value;
alert(tagName + ' ' + tagVal);
}
} // for
} // if
} // for
}; // TagAlert
將 object 旋轉 30 度:
if (app.documents.length == 0 ) {
alert('Open a document to run this script.');
} else if (app.activeDocument.selection.length != 1) {
alert('Select 1 and only 1 object to run this script.');
} else {
RotateObject();
}
function RotateObject() {
var iDoc = app.activeDocument;
var aObj = iDoc.selection;
var nObj = aObj.length;
for(i = 0; i < nObj; i++) {
aObj[i].rotate(30);
}
};
先感謝您:)
[Tags].add()
方法返回一個標簽 object,當它重命名以匹配內置標簽(例如,'BBAccumRotation')時,插圖畫家通常會識別它,例如在屬性面板中。
下面的代碼使用.rotate()
將第一個選擇的 object 旋轉 -22 度,然后相應地旋轉邊界框。 請注意, [Tags].value
必須從字符串轉換為數字。 另請注意,此功能似乎沒有記錄在案。
#target illustrator
// convert back to radians
function deg2Rad( n ) {
return n * ( Math.PI / 180 );
}
function rotateBBox( layer, degrees ) {
// `tag` will revert to an exiting BBAccumRotation tag if it exists
// if it doesn't exit, it is created
var tag = null;
var i;
for ( i = 0; i < layer.tags.length; i++ ) {
if ( layer.tags[i].name === 'BBAccumRotation' ) {
tag = layer.tags[i];
}
i += 1;
}
if ( !tag ) {
tag = layer.tags.add();
tag.name = 'BBAccumRotation';
}
if ( tag.value ) {
// tag.value must be converted from a String
tag.value = Number( tag.value ) + deg2Rad( degrees );
} else {
tag.value = deg2Rad( degrees );
}
}
function main() {
var doc = app.activeDocument;
var angle, sel;
if ( doc.selection.length < 1 ) {
alert( 'At least one (1) layer must be selected.' );
return 1;
} else {
doc = app.activeDocument;
sel = doc.selection[0];
angle = -22;
sel.rotate( angle );
rotateBBox( sel, angle );
}
}
main();```
function rotate(item, degrees) {
var angle = 0;
try {
angle = parseFloat(item.tags["BBAccumRotation"].value);
} catch(e) {
var tag = item.tags.add();
tag.name = "BBAccumRotation";
tag.value = 0;
}
item.tags["BBAccumRotation"].value = angle + degrees*Math.PI/180;
item.rotate(degrees);
}
var item = app.activeDocument.selection[0]; // no tag
rotate(item, 15); // BBAccumRotation 15°
rotate(item, 15); // BBAccumRotation 30°
rotate(item, -25); // BBAccumRotation 5°
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.