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软件可能会出现错误。

 

posted @ 2013-08-28 16:32  心平_气和  阅读(4687)  评论(1编辑  收藏  举报