// ----获取位置/宽高信息
var el = app.activeDocument.selection[0]
alert(getRealySize(el))
// 第一种
// alert(el.top)
// alert(el.left)
// alert(el.width)
// alert(el.height)
// 第二种
// alert(el.visibleBounds) // 可见范围(包含描边的)
// 第三种
// alert(el.geometricBounds) // 几何范围(不包含描边)
// ----获取位置/宽高信息
function getRealySize(el) {
var arr = []
var leftArr = []
var topArr = []
var rightArr = []
var bottomArr = []
function getRealySizeEl(el, arr) {
// 如果是剪切组, 将蒙版路径放置进去
if (el.clipped) {
arr.push({
el: el.pageItems[0],
isClippedPath: true
})
return
}
// 如果不是剪切组, 但是你自身又是一个组, 说明组里面可能有剪切组
if (el.constructor.name == "GroupItem") {
for (var i = 0; i < el.pageItems.length; i++) {
getRealySizeEl(el.pageItems[i], arr)
}
return
}
// 如果不是剪切组, 将自身放置进去
arr.push({
el: el,
isClippedPath: false
})
}
function minInArr(arr) {
var min = arr[0];
for (var i = 1; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
function maxInArr(arr) {
var max = arr[0];
for (var i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
getRealySizeEl(el, arr)
for (var i = 0; i < arr.length; i++) {
if (i.isClippedPath) {
// 如果是剪切蒙版, 获取不加描边的边界
leftArr.push(arr[i].el.geometricBounds[0])
topArr.push(arr[i].el.geometricBounds[1])
rightArr.push(arr[i].el.geometricBounds[2])
bottomArr.push(arr[i].el.geometricBounds[3])
} else {
// 如果不是剪切蒙版, 获取加描边的边界
leftArr.push(arr[i].el.visibleBounds[0])
topArr.push(arr[i].el.visibleBounds[1])
rightArr.push(arr[i].el.visibleBounds[2])
bottomArr.push(arr[i].el.visibleBounds[3])
}
}
var left = minInArr(leftArr)
var top = maxInArr(topArr)
var right = maxInArr(rightArr)
var bottom = minInArr(bottomArr)
return [left, top, right, bottom]
}





承担因您的行为而导致的法律责任,
本站有权保留或删除有争议评论。
参与本评论即表明您已经阅读并接受
上述条款。