Illustrator脚本开发蒙版问题
发布时间:2024-11-08 11:52 [ 我要自学网原创 ] 发布人: 快乐小女 阅读: 1180

// ----获取位置/宽高信息
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]
}

Illustrator脚本开发教程
我要自学网商城 ¥70 元
进入购买
文章评论
0 条评论 按热度排序 按时间排序 /350
遵守中华人民共和国的各项道德法规,
承担因您的行为而导致的法律责任,
本站有权保留或删除有争议评论。
参与本评论即表明您已经阅读并接受
上述条款。
V
特惠充值
联系客服
APP下载
官方微信
返回顶部
分类选择:
电脑办公 平面设计 室内设计 室外设计 机械设计 工业自动化 影视动画 程序开发 网页设计 会计课程 兴趣成长 AIGC