Illustrator腳本開發(fā)蒙版問題
發(fā)布時間:2024-11-08 11:52 [ 我要自學網原創(chuàng) ] 發(fā)布人: 快樂小女 閱讀: 137

// ----獲取位置/寬高信息
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腳本開發(fā)教程
我要自學網商城 ¥70 元
進入購買
文章評論
0 條評論 按熱度排序 按時間排序 /350
添加表情
遵守中華人民共和國的各項道德法規(guī),
承擔因您的行為而導致的法律責任,
本站有權保留或刪除有爭議評論。
參與本評論即表明您已經閱讀并接受
上述條款。
V
特惠充值
聯系客服
APP下載
官方微信
返回頂部
分類選擇:
電腦辦公 平面設計 室內設計 室外設計 機械設計 工業(yè)自動化 影視動畫 程序開發(fā) 網頁設計 會計課程 興趣成長 AIGC