本帖最后由 作者 于 2007-2-16 14:30:40 编辑
这个功能的实现并不复杂,但对非从事AutoCAD二次开发的开发人员而言还是比较麻烦的,我就走了很大的弯路,研究了半天ObjectARX,在此感谢QQ名为“甘泉”的Q友指点。
实现原理:调用COM API 1、AutoCAD Print设置: 1-1、安装AutoCAD 2006、Adobe Acrobat Profesional 7.0,安装Acrobat后会新增一个“Adobe PDF”系统打印机 1-2、添加“Adobe PDF”系统打印机为绘图仪(如命名为“Adobe PDF.pc3”);在“添加绘图仪—完成”步骤选择“编辑绘图仪配置”,在“设备和文档设置”分页选择“图形”下的“自定义特性”;在“Adobe PDF Settings”分页:设置“Adobe PDF Output Folder”为“My Documents\*.pdf”(注:或选择其他目录,此处定义dwg),设置“Adobe PDF Page Size”为“A4”,“View Adobe PDF results”取消,“Add Document Information”取消; 1-3、选择打印,打印对话框中:设置“打印机/绘图仪器—名称”为“Adobe PDF.pc3”,设置“图纸尺寸”为“A4”,设置“打印范围”为“范围”;点“确定”即可将当前dwg文件打印为pdf文件; 2、C#.net代码编写(Visual Studio.nt 2003): 2-1:添加COM引用:AutoCAD 2006 Type Library;AutoCAD/ObjectDBX Common 16.0 Type Library 2-2:测试代码如下: string flname = "1001.dwg"; //定义文件名 string flpath = "C:\\Documents and Settings\\Administrator\\My Documents\\"; //定义文件目录 string fuflname = flpath + flname; //定义文件全路径名 AcadDocumentClass AcdDoc = new AcadDocumentClass(); AcadDocument docu = AcdDoc.Application.Documents.Open(fuflname, true, null); //以只读方式打开该文件 docu.ActiveLayout.ConfigName = "Adobe PDF.pc3"; //定义打印机 docu.ActiveLayout.CanonicalMediaName = "A4"; //定义打印纸张 docu.ActiveLayout.PlotType = Autodesk.AutoCAD.Interop.Common.AcPlotType.acExtents; //定义打印范围 docu.Plot.PlotToDevice(null); //发送打印命令 docu.Close(null, null); //关闭文件 以上测试通过,但还是有个小小的问题,在打开指定文档时,会同时打开一份空文档,虽然在最后会与指定文档一起被关闭,但总觉得是个问题。有哪位高人指点一二? |