【发布时间】:2020-09-08 13:39:21
【问题描述】:
Illustrator 使用BBAccumRotation 以弧度跟踪对象的旋转0.51246700。
BBAccumRotation IS 设置 if 对象:
- 当前已旋转 - 弧度 = 旋转值
- 之前已旋转,当前为 0 度 - 弧度 = 0.000000
- 通过拖动手柄旋转
- 通过对象 > 变换 > 旋转进行旋转
- 通过属性面板旋转 > 旋转
BBAccumRotation IS NOT 如果对象设置:
- 通过使用
rotate()的脚本旋转 - 通过实时效果旋转 > 扭曲和变换 > 变换 > 旋转
- 使用实时效果旋转并展开
问题是,有没有一种本地/烘焙方式让rotate() 设置BBAccumRotation?
虽然可以将BBAccumRotation 标签添加到对象,但它会像任何自定义标签一样被处理 - Illustrator 在其旋转标签上无法识别它,因此它不会反映在“属性”面板等位置.
我知道我可以使用自定义标签来跟踪 rotate() 正在做什么 - 我宁愿不去那里。
似乎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
将对象旋转 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);
}
};
提前谢谢你:)
【问题讨论】:
标签: rotation adobe-illustrator extendscript object-tag