这几天搞cad二次开发,用的是C#语言,目前在网上找到的资料比较少。弄了两天,才做出怎样实现打印出图片。首先得在AutoCAD软件界面下,设置打印机的页面设置和打印机设备名称一样(以防打印不出来)。即都为PublishToWeb JPG.pc3。注意图片名称最好为数字(我也不知道原因)。具体实现代码如下:
/// <summary> /// 打印出图片 /// </summary> public void PrintCADToJPG() { bool isZong = true; isZong=PrintPlotRotation(); string jpgNamePath = StaticDJMessage.DictoryDJ + "\\" + StaticDJMessage.JpgName;//目标文件 if (System.IO.File.Exists(jpgNamePath)) { System.IO.File.Delete(jpgNamePath); } AcadDocument drawing = AcadApp.ActiveDocument; //验证活动空间是模型空间 if (drawing.ActiveSpace == AcActiveSpace.acPaperSpace) { drawing.MSpace = true; drawing.ActiveSpace = AcActiveSpace.acModelSpace; } //前台打印 drawing.SetVariable("BACKGROUNDPLOT", 0); // 绘图设置 drawing.Application.ZoomExtents(); drawing.ActiveLayout.ConfigName = "PublishToWeb JPG.pc3";//页面设置名称 //设置打印图纸大小 string[] cMNameLst = (string[])drawing.ActiveLayout.GetCanonicalMediaNames(); foreach (string name in cMNameLst) { //查找纸张大小 if (name.Contains("2000.00") && name.Contains("2000.00")) { drawing.ActiveLayout.CanonicalMediaName = name; break; } } drawing.ActiveLayout.CenterPlot = true; // 居中 drawing.ActiveLayout.PlotType = AcPlotType.acExtents; drawing.ActiveLayout.UseStandardScale = true; // 使用标准比例 drawing.ActiveLayout.StandardScale = AcPlotScale.acScaleToFit; // 自动缩放适应 // 设置打印样式 drawing.ActiveLayout.StyleSheet = "acad.ctb"; //颜色样式表 if (isZong) { drawing.ActiveLayout.PlotRotation = AcPlotRotation.ac0degrees; //纵向打印 } else drawing.ActiveLayout.PlotRotation = AcPlotRotation.ac270degrees; //纵向打印 //打印预览 // drawing.Plot.DisplayPlotPreview(AcPreviewMode.acFullPreview); drawing.Plot.QuietErrorMode = true; // 生成存档,避免报错 drawing.Plot.NumberOfCopies = 1; //打印份数 drawing.ActiveLayout.RefreshPlotDeviceInfo(); // 打印到文件 //第二个参数为打印机名称 drawing.Plot.PlotToFile(jpgNamePath, "PublishToWeb JPG.pc3"); }
注意:要设置为前台打印,如果不设置默认为后台打印,后台打印不同的CAD软件可能会出现错误。
请发表评论