Geo*_*nza 4 extendscript adobe-illustrator
我有一个简单的问题,但似乎无法找到解决方法:我有PathItem和Illustrator指出它位于(781px,250px).
如何在jsx中获取这些值?
我已经注意到,PathItem继承position属性PageItem和位置是一个点,但是当我尝试打印的价值观,我得到未定义:
$.writeln(app.activeDocument.selection[0].position.x);
Run Code Online (Sandbox Code Playgroud)
如果我从上面的行中省略.x,我会在控制台中打印出来:
521,510
Run Code Online (Sandbox Code Playgroud)
这些价值观是什么?它们是x,y坐标吗?在什么单位?如何转换为像素?
为什么我无法访问x,y/top,left属性?
我正在使用Illustrator CS5.
@ bradido的回答是有帮助的,它是不完整的.
Illustrator似乎有不同的坐标系:文档坐标系和画板坐标系.一个原点位于文档的中心,而另一个原点位于左上角.它的Y值也会向上增加.
首先使用app.coordinateSystem属性检查坐标系是明智的,如果需要,还有一个转换函数(doc.convertCoordinate)来处理与中心的偏移.
这是一个片段,演示如何在Illustrator中检索符号的x,y值,以后可以在actionscript中使用(使用坐标系转换):
var doc = app.activeDocument;
var hasDocCoords = app.coordinateSystem == CoordinateSystem.DOCUMENTCOORDINATESYSTEM;
var sel = doc.selection;
var selLen = sel.length;
var code = 'var pointsOnMap:Vector.<Vec> = Vector.<Vec>([';
for(var i = 0 ; i < selLen ; i++){
var pos = hasDocCoords ? doc.convertCoordinate (sel[i].position, CoordinateSystem.DOCUMENTCOORDINATESYSTEM, CoordinateSystem.ARTBOARDCOORDINATESYSTEM) : sel[i].position;
code += 'new Vec('+(pos[0] + (sel[i].width * .5)).toFixed(2) + ' , ' + Math.abs((pos[1] - (sel[i].height*.5))).toFixed(2);//Math.abs(pos-height) - same for both coord systems ?
if(i < selLen-1) code += '),';
else code += ')]);pointsOnMap.fixed=true;';
}
$.writeln(code);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6610 次 |
| 最近记录: |