在这里插入图片描述

var r = 100;
var p1 = new Point(0,0);
var p2 = new Point(100,0);
var p3 = new Point(-100,0);
add_svg(add_a(p1,p2,p3,r,r));
add_svg(add_a_by_rotate(120,r,r));
var s = add_svg(add_a_by_rotate(45,40,80));
set_position_xy(s,0,0);
set_size_wh(s,100,100);






function set_size_wh(obj, w, h) {
    /**
     * 设置尺寸 w h
     */
    if (w == undefined || w == undefined) return
    obj.width = w;
    obj.height = h;
    return obj;
}
function set_position_xy(obj, x, y) {
    /**
     * 移动到 x y
     */
    if (obj == undefined || x == undefined || y == undefined) return
    obj.left = x;
    obj.top = y;
    return obj;
}

/**
 * 点
 * @param x
 * @param y
 * @constructor
 */
function Point(x, y) {
    this.x=x;
    this.y=y;
}

/**
 * 根据角度添加扇形
 * @param rotate
 * @param rx
 * @param ry
 * @returns {any[]}
 */
function add_a_by_rotate(rotate,rx,ry) {
    var rg = Math.PI / 180;
    var rotate = rotate*rg;
    var p1 = new Point(0,0);
    var p2 = new Point(rx*Math.sin(rotate),ry*Math.cos(rotate));
    var p3 = new Point(-rx*Math.sin(rotate),ry*Math.cos(rotate));

    var pt = 72/25.4;
    var list = new Array();
    list.push('<svg xmlns="http://www.w3.org/2000/svg" version="1.1">');
    var path = '<path d="M p1x p1y L p2x p2y A rx ry 0 0 1 p3x p3y z" />'
    if(rotate/rg>90){
        path = '<path d="M p1x p1y L p2x p2y A rx ry 0 1 1 p3x p3y z" />'
    }
    path=path.replace(/p1x/,p1.x*pt);
    path=path.replace(/p1y/,p1.y*pt);
    path=path.replace(/p2x/,p2.x*pt);
    path=path.replace(/p2y/,p2.y*pt);
    path=path.replace(/p3x/,p3.x*pt);
    path=path.replace(/p3y/,p3.y*pt);
    path=path.replace(/rx/,rx*pt);
    path=path.replace(/ry/,ry*pt);
    list.push(path);
    list.push('</svg>');
    return list;



}

/**
 * 添加一个线段
 * @param p1x 第一点X坐标
 * @param p1y 第一点Y坐标
 * @param p2x 第二点X坐标
 * @param p2y 第二点Y坐标
 * @param p3x 第三点X坐标
 * @param p3y 第三点Y坐标
 * @param rx 圆弧左右的半径
 * @param ry 圆弧上下的半径
 * @returns list
 */
function add_a(p1,p2,p3,rx,ry){
    var pt = 72/25.4;
    var list = new Array();
    list.push('<svg xmlns="http://www.w3.org/2000/svg" version="1.1">');
    var path = '<path d="M p1x p1y L p2x p2y A rx ry 0 0 1 p3x p3y z" />'
    path=path.replace(/p1x/,p1.x*pt);
    path=path.replace(/p1y/,p1.y*pt);
    path=path.replace(/p2x/,p2.x*pt);
    path=path.replace(/p2y/,p2.y*pt);
    path=path.replace(/p3x/,p3.x*pt);
    path=path.replace(/p3y/,p3.y*pt);
    path=path.replace(/rx/,rx*pt);
    path=path.replace(/ry/,ry*pt);
    list.push(path);
    list.push('</svg>');
    return list;

}

/**
 * 添加svg文件
 * @param list
 * @returns {*} 返回svg对象
 */
function add_svg(list){
    var dest = "C:/temp.svg";
    save_txt_by_list(dest,list);
    app.activeDocument.groupItems.createFromFile(new File(dest));
    app.executeMenuCommand('group');
    new File(dest).remove();
    return app.activeDocument.selection[0];
}

/**
 * 根据列表保存文本
 * @param file
 * @param list
 */
function save_txt_by_list(file,list){
    var f = new File(file);
    f.open('w');
    for(var i=0;i<list.length;i++){
        f.write(list[i]+'\r\n');
    }
    f.close();
}





Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐