AutoCAD圖形打印出圖片 C#


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM