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

  • 相关阅读:
    c++单例模式为什么不在析构函数中释放静态的单例对象(转)
    Ubuntu 树莓派2b交叉编译环境
    多线程std::cout 深入研究
    c++11的 move并没有实际move
    RTC时间设置
    QT 第三方串口库COM10以上无法读取问题
    ubuntu gcc-5 安装
    STM32正交编码器驱动电机
    (转)layoutSubviews总结
    自定义视图控制器切换(iOS)
  • 原文地址:https://www.cnblogs.com/wylaok/p/3287510.html
Copyright © 2020-2023  润新知