zoukankan      html  css  js  c++  java
  • 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软件可能会出现错误。

  • 相关阅读:
    java.lang.IllegalArgumentException: No converter found for return value of type: class XXX.XXXX
    关于websocket集群中不同服务器的用户间通讯问题
    JavaScript中 location.host 与 location.hostname 的区别
    Spring在代码中获取bean的几种方式
    在websocket中怎么样注入service类
    阿里云上部署kafka--遇到的坑
    linux系统部署Java程序获取ip时报Caused by: java.net.UnknownHostException: XXXXXXXXXX: XXXXXXXXXX: Name or service not known
    解决bash: mysql: command not found 的方法
    Nginx的启动、停止与重启
    Java8:Lambda表达式增强版Comparator和排序
  • 原文地址:https://www.cnblogs.com/wylaok/p/3287510.html
Copyright © 2011-2022 走看看