javascript Illustrator 添加扇形

时间:2023-02-01 11:58:09


javascript Illustrator 添加扇形

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();
}


相关文章