前言
上期我们介绍了如何在CAD中插入尺寸标注功能,这期我们再讲一下如何实现在CAD中打印pdf功能。

打印pdf

要实现打印pdf功能,需要借助一个软件pdfFactory,这个是pdf虚拟打印机,可以实现CAD打印pdf功能,该软件的下载地址为:
链接:https://pan.baidu.com/s/1LFvNM4V8UIAOUi2bEPbPEQ 提取码:8wwj
当然也可以使用CAD自带的打印pdf功能,但是有时候打印出来的pdf文档中的某些希腊字符可能会出现乱码,故本次使用的是pdfFactory软件来实现。
代码贴上:

private static void plotPdf(AcadDocument Doc, double[] lowerLeft, double[] upperRight)
{AcadLayout layout2 = Doc.ActiveLayout;AcadPlotConfiguration plotConfiguration2 = Doc.PlotConfigurations.Add(Guid.NewGuid().ToString("N"), Doc.ActiveLayout.ModelType);plotConfiguration2.ConfigName = pdfFactory Pro.pc3; //打印机名,这里选择安装好的pdffactoryplotConfiguration2.StyleSheet = "monochrome.ctb"; //样式表名plotConfiguration2.PlotWithLineweights = true; //线宽比例plotConfiguration2.PlotWithPlotStyles = true; //使用样式plotConfiguration2.CanonicalMediaName = "A4"; //图纸尺寸double[] LowerLeft2 = Doc.Utility.TranslateCoordinates(lowerLeft, AcCoordinateSystem.acWorld, AcCoordinateSystem.acDisplayDCS, 0, Type.Missing) as double[];double[] UpperRight2 = Doc.Utility.TranslateCoordinates(upperRight, AcCoordinateSystem.acWorld, AcCoordinateSystem.acDisplayDCS, 0, Type.Missing) as double[];plotConfiguration2.SetWindowToPlot(new double[] { LowerLeft2[0], LowerLeft2[1] }, new double[] { UpperRight2[0], UpperRight2[1] });plotConfiguration2.PlotType = AcPlotType.acWindow; //打印模式為窗口plotConfiguration2.UseStandardScale = true;plotConfiguration2.StandardScale = AcPlotScale.acScaleToFit; //标准比例,需要UseStandardScale = true;plotConfiguration2.CenterPlot = true; //居中打印plotConfiguration2.PaperUnits = AcPlotPaperUnits.acMillimeters; //单位毫米plotConfiguration2.PlotRotation = AcPlotRotation.ac0degrees;//横向纵向layout2.CopyFrom(plotConfiguration2);layout2.RefreshPlotDeviceInfo();//发送打印命令给pdfDoc.Plot.QuietErrorMode = true;Doc.Plot.PlotToDevice();}

其中传入CAD Doc对象,就可以设置相应的打印选项。这里要注意的是,需要引用CAD两个东西:
using Autodesk.AutoCAD.Interop.Common;
using Autodesk.AutoCAD.Interop;
可以设置打印样式、选择打印机、图纸尺寸等等;
控制打印范围的方法主要是这个SetWindowToPlot,通过传入一个double数组double[]来控制选取的点(之前一直卡在这里,因为SetWindowToPlot方法里的参数为(object LowerLeft, object UpperRight),不知道object应该是什么)。
除了选取范围打印,也可以设置其他方式打印,具体读者可以通过设置AcPlotType来尝试一下,这里再介绍一下如何实现自动打开CAD文件,

public class OpreateCad
{public static AcadApplication App;public static AcadDocument Doc;private static void open_cad(){//連接CADif (connect_autocad() == false){return;}//關閉已打開文檔App.Documents.Close();Doc = App.Documents.Open(Application.StartupPath + "\\" + "source.dwg");App.ZoomExtents();}private static bool connect_autocad(){try{   // if AUTOCAD alread open,then conenct it.App = (AcadApplication)System.Runtime.InteropServices.Marshal.GetActiveObject("AutoCAD.Application");}catch{   // if AUTOCAD don't open then open it. try{App = new AcadApplication();}catch (Exception e) { Console.WriteLine(e); return false; }}App.Visible = true;return true;
}

通过调用open_cad这个方法就可以实现自动打开你所指定路径下的CAD文档,这样就不用每次都要自己手动去打开CAD。
同样的,我们把打印pdf的方法放到我们Command类中,在打开CAD之后,输入cad命令,即可实现打印pdf的功能,如果需要打印多张的话,可以多次调用这个方法,并设置成不同的坐标点即可。
默认情况下,每打印一张pdf会弹出一个预览框,会影响到下一个pdf的打印,我们需要把这一个预览的选项关闭。首先我们按CTRL+P进入打印机选项界面

选择我们安装的pdffactory,点击旁边的性质选项

再点击自订性质选项,选中不要显示对话方块,下方全部取消勾选即可。
默认pdf的保存路径为C盘的文件的pdf档案的自动保存中,文件名默认

打印pdf效果如下(这里没显示具体打印内容,总共打印了三次)

这期打印pdf功能的介绍就到这里了,由于本项目会和python进行文件传输,下期我会介绍如何通过socket与python进行文件传输的功能。

C#实战之CAD二次开发005:打印pdf相关推荐

  1. 用Python做CAD二次开发(打印)

    用Python做CAD二次开发(打印) 在CSDN上用CAD做二次开发的文章已经有大神做出来了,本文中也直接把部分代码搬了过来. 现在把打印图纸的代码发上来让大家看看,权当补充说明. 大部分方法查ac ...

  2. C#实战之CAD二次开发006:与python进行Socket传输文件

    前言 前面介绍了与CAD相关的一些功能,本期介绍一下C#和python如何通过socket通信来进行文件的传输,建议不了解Socket的同学先去了解一下socket的通讯原理,这样看起来不会云里雾里的 ...

  3. C#实战之CAD二次开发001:CAD和C#的环境配置

    前言 本博文主要介绍利用C#对CAD进行二次开发,结合了ObjectARX功能强大的特点和VBA易用的特点,通过实战项目对C#开发CAD进行一个简要的介绍. 1.CAD的安裝 首先我们需要安装CAD, ...

  4. C#实战之CAD二次开发004:插入尺寸标注

    前言 上期我们介绍了CAD中插入文字和插入图块两个功能,这期我们继续介绍一个比较常用的功能--标注尺寸,标注尺寸是我们在绘图的时候经常用到这个功能. 插入标注 CAD中的标注形式有很多种,例如水平标注 ...

  5. C#实战之CAD二次开发003:插入文字和插入图块

    前言 上期我们介绍了如何利用C#在CAD中绘制直线和圆,这期我们介绍一下CAD中两个比较重要的功能,插入文字和插入图块,在CAD中插入文字主要是单行文字和多行文字,插入块主要有内部图块和外部图块.本文 ...

  6. CAD二次开发资料汇总

    欢迎加入建筑信息化开发交流群,获取开发资料 群号:711844216 一.背景 对工程出身的朋友来说,CAD就像一位朋友,常伴吾身,为了提高效率,于是小伙伴门开始尝试CAD二次开发,刚入门,资料去哪找 ...

  7. C# Cad二次开发新手入门系列教程(一)开发环境搭建

    目录 前言 开发需要做什么准备? 编写自己的第一个程序 前言 本课程主要针对刚接触Cad二次开发或者准备入门Cad二次开发的朋友,笔者是用的C#进行开发,在该系列教程内,笔者会带着大家从最基础的开发到 ...

  8. cad二次开发程序的绿色安装

    此问题的引入是因为一个cad二次开发软件,客户要求做成绿色安装.何为绿色安装呢?软件包copy到一台电脑上(已安装CAD),双击exe,打开的界面包含自定义的菜单.菜单的图标能正确显示.每个功能能使用 ...

  9. intersect 相交 范围_关于CAD二次开发中(范围线自相交)相交线的问题

    CAD二次开发对于毕业没多久,又是半路出家的我来说,是一个很大的挑战,遇到过很多难以解决的问题,这次在CAD二次开发遇到一个很苦恼的问题:判断 一个由线段组成的闭合区域中,是否存在着相互之间相交的线段 ...

  10. CAD 二次开发 图层操作(1)创建图层

    CAD二次开发的资料比较少,除了李冠亿先生的<深居浅出AutoCAD二次开发>这本书之外,目前没有找到合适的参考资料.现将自己工作中用的的一些方法贴出来.方便各位网友快速入门. #regi ...

最新文章

  1. android 屏幕旋转180度
  2. 招财铃:即时通信整合,
  3. Magicodes.IE编写多框架版本支持和执行单元测试
  4. 普通树与二叉树的相互转化及哈夫曼树的了解
  5. mongodb mysql资源占用_如何限制mongodb启动时占用过多内存
  6. linux下使用free命令查看实际内存占用(可用内存)
  7. 三大性质总结:原子性,有序性,可见性
  8. 微软收购AI创业公司Bonsai,机械臂效率比DeepMind高45倍
  9. #STM32学习#6D加速度传感器测量风机震动
  10. 12月21诛仙服务器维护,【12月31日】全服停机更新维护公告
  11. thinkphp 5 验证码错误,可能与session保存路径不同有关
  12. [原创] Python3.6+request+beautiful 半次元Top100 爬虫实战,将小姐姐的cos美图获得
  13. 学习日记day16 ps
  14. 学习笔记(15):C++编程FFMpeg(QT5+OpenCV)实战--实时美颜直播推流-opencv播放rtsp海康摄像头和播放系统摄像头...
  15. 凸包——Graham-Scan算法
  16. 【Azure Data Platform】ETL工具(8)——ADF 数据集和链接服务
  17. Docker部署Jenkins服务
  18. Ubuntu WPS系统缺失字体symbol、wingdings、wingdings wingdings webding
  19. C语言实现乘法口诀表
  20. 第五人格服务器维护中怎么办6,第五人格新联动刚来就出问题,紧急停服维护,这得补偿多少?...

热门文章

  1. Apple Magic Mouse 卡顿的问题
  2. Talloc内存池介绍
  3. L2:Abbott隐式格式有限差分法解一维明渠非恒定流
  4. 判断经纬度是否落在中国地图上
  5. Excel如何实现随机抽取
  6. 如何解决卸载驱动之后又重新装的问题
  7. GIS中的矢量数据、栅格数据
  8. Python数据处理及分析详解
  9. Codesys中国官网下载中心
  10. xmind8 破解激活教程