C#操作Illustrator 如何全选编组

wangl0703 2017-11-16 06:31:02
我在用C#程序自动操作Illustrator软件,将EPS转存为SVG.。
但是需要eps文件,画板相对于页面元素的位置不确定,
我需要全选所有的元素,相当于编组,然后利用参考系设定X和Y,给所有元素移位。
如何用C#实现。

下面是我操作画板,]给画板移位。但还是不能精准确定内容和画板四周的间距,需要对所有元素再操作一次。

for(int i = 1; i <= fileNum; i++)
{
string epsPath = epsFilePath + @"\杂志预览_" + i + ".eps";
Illustrator.Document doc = app.Open(epsPath, Illustrator.AiDocumentColorSpace.aiDocumentRGBColor, null);
Console.WriteLine("AI打开eps: "+i);

Illustrator.Artboards boards = doc.Artboards;
double width = 125 * 72 / 25.4;
double height = 214 * 72 / 25.4; //mm换算为pt

if (boards.Count > 0)
{
Illustrator.Artboard board = boards[1];
object[] array = (object[])board.ArtboardRect;

array[0] = ((double)array[2] - width) /2 ;
array[3] = ((double)array[1] - height) / 2;
array[2] = width + (double)array[0];
array[1] = height + (double)array[3];

boards[1].ShowCenter = true;
object[] array2 = new object[] { array[0], array[1], array[2], array[3] };
board.ArtboardRect = array2;
}
。。。。
doc.Export(svgPath, Illustrator.AiExportType.aiSVG, svg);

...全文
218 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangl0703 2017-11-17
  • 打赏
  • 举报
回复
这是我自己试验出来的,board.ArtboardRec四个t参数的算法

//自定义ArtboardRect,是一个数组表示矩形,转为Illustrator画板参数表示:
                    //W: array[2]-array[0] 
                    //H: array[1]-array[3] 
                    //X: array[0] 
                    //Y: array[3] (参考原点:左下角)
xuzuning 2017-11-16
  • 打赏
  • 举报
回复
((double)array[2] - width) /2 是什么意思? 新x = x初始偏移 + 原x*(原图宽/新图宽)
wangl0703 2017-11-16
  • 打赏
  • 举报
回复
不要沉。。。

110,547

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧