這幾天搞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軟件可能會出現錯誤。
