打印当前的dwg文件,生成dwf文件。传入你要存入的filename(dwf文件位置具体到.dwf)

public static bool ExportMapToFileCAD(string fileName){try{Document doc = acDoc;Editor ed = doc.Editor;Database db = doc.Database;if (fileName.Trim().Equals("")) return false;using (doc.LockDocument()){using (Transaction tr = db.TransactionManager.StartTransaction()){// 将打印当前布局 BlockTableRecord btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);Layout lo = (Layout)tr.GetObject(btr.LayoutId, OpenMode.ForWrite);// lo.PlotRotation// 需要一个与布局有关的PlotInfo对象       PlotInfo pi = new PlotInfo();pi.Layout = btr.LayoutId;// 需要一个基于布局设置的PlotSettings对象,这样我们就可以进行自定义设置 PlotSettings ps = new PlotSettings(lo.ModelType);ps.CopyFrom(lo);// PlotSettingsValidator对象帮助我们创建一个有效的PlotSettings对象          PlotSettingsValidator psv = PlotSettingsValidator.Current;//进行范围打印、中心打印和按比例打印    psv.SetPlotType(ps, Autodesk.AutoCAD.DatabaseServices.PlotType.Extents);psv.SetPlotRotation(ps, PlotRotation.Degrees000);psv.SetStdScaleType(ps, StdScaleType.ScaleToFit);// psv.SetUseStandardScale(ps, true);//标准打印比例//  psv.SetStdScaleType(ps, StdScaleType.ScaleToFit);psv.SetPlotCentered(ps, true);//居中打印//psv.SetPlotOrigin(ps,new Point2d(1.5,0));//打印到文件psv.SetPlotConfigurationName(ps, "DWF6 ePlot.pc3", "ISO_A2_(594.00_x_420.00_MM)");psv.SetUseStandardScale(ps, true);// 把PlotInfo链接到PlotSettings并验证它的有效性         pi.OverrideSettings = ps;PlotInfoValidator piv = new PlotInfoValidator();piv.MediaMatchingPolicy = MatchingPolicy.MatchEnabled;piv.Validate(pi);// PlotEngine对象执行真正的打印工作                if (PlotFactory.ProcessPlotState == ProcessPlotState.NotPlotting){PlotEngine pe = PlotFactory.CreatePublishEngine();using (pe){//创建一个打印对话框,用于提供打印信息和允许用户取消打印             PlotProgressDialog ppd = new PlotProgressDialog(false, 1, true);using (ppd){ppd.set_PlotMsgString(PlotMessageIndex.DialogTitle, "CAD切图");ppd.set_PlotMsgString(PlotMessageIndex.CancelJobButtonMessage, "取消切图");ppd.set_PlotMsgString(PlotMessageIndex.CancelSheetButtonMessage, "取消切图");ppd.set_PlotMsgString(PlotMessageIndex.SheetSetProgressCaption, "切图");ppd.set_PlotMsgString(PlotMessageIndex.SheetProgressCaption, "正在切图");ppd.LowerPlotProgressRange = 0;ppd.UpperPlotProgressRange = 100;ppd.PlotProgressPos = 0;//启动打印                 ppd.OnBeginPlot();ppd.IsVisible = true;pe.BeginPlot(ppd, null);// 打印一个单文档               pe.BeginDocument(pi, fileName, null, 1, true, fileName);//int count = doc.Name.ToString().LastIndexOf('\\', doc.Name.Length);//string fileName = doc.Name.ToString().Substring(count, doc.Name.ToString().Length - count);//只包含一个图纸                ppd.OnBeginSheet();ppd.LowerSheetProgressRange = 0;ppd.UpperSheetProgressRange = 100;ppd.SheetProgressPos = 0;PlotPageInfo ppi = new PlotPageInfo();pe.BeginPage(ppi, pi, true, null);pe.BeginGenerateGraphics(null); pe.EndGenerateGraphics(null);// 结束图纸               pe.EndPage(null);ppd.SheetProgressPos = 100;ppd.OnEndSheet();// 结束文档                pe.EndDocument(null);// 结束打印                ppd.PlotProgressPos = 100;ppd.OnEndPlot();pe.EndPlot(null);}}}else{ed.WriteMessage("\n另外一个程序正在运行中。。。");}}}return true;}catch (Exception ex){throw ex;}}将dwf插入dwg<pre name="code" class="csharp"> /// <summary>加载dwf文件/// </summary>/// <param name="fileName">dwf路径</param>/// <param name="dwfName">dwf名称</param>public static void CommandInsertDWF(string fileName, string dwfName){try{// acess the databaseDatabase db = CurrentDB;// start the transactionusing (Transaction trans = db.TransactionManager.StartTransaction()){// get the NODDBDictionary nod = trans.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForWrite) as DBDictionary;// get the key for DWF Definitionstring defDictKey = UnderlayDefinition.GetDictionaryKey(typeof(DwfDefinition));// if the dictionary is not there, createif (!nod.Contains(defDictKey)){using (DBDictionary dict = new DBDictionary()){nod.SetAt(defDictKey, dict);trans.AddNewlyCreatedDBObject(dict, true);}}// open the dictionaryObjectId idDwfDef;DBDictionary dwfDict = trans.GetObject(nod.GetAt(defDictKey), OpenMode.ForWrite) as DBDictionary;// create a new definitionusing (DwfDefinition dwfDef = new DwfDefinition()){dwfDef.SourceFileName = fileName;idDwfDef = dwfDict.SetAt(dwfName, dwfDef);trans.AddNewlyCreatedDBObject(dwfDef, true);}// append to the model spaceBlockTable bt = trans.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;BlockTableRecord btr = trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;using (DwfReference dwf = new DwfReference()){dwf.DefinitionId = idDwfDef;btr.AppendEntity(dwf);trans.AddNewlyCreatedDBObject(dwf, true);}// create reference for Model space 将淡入度设为零,保证每次打印的时候图片颜色不会变浅using (UnderlayReference ur = new DwfReference()){ur.DefinitionId = idDwfDef;//设置淡入度ur.Fade = 0;//设置对比度ur.Contrast = 100;btr.AppendEntity((Entity)ur);trans.AddNewlyCreatedDBObject((DBObject)ur, true);}trans.Commit();}}catch (System.Exception ex){ }}

关于cad生成dwf文件和插入dwf快相关推荐

  1. Android使用poi生成docx文件,插入图片

    //创建图片(直接写一个类继承XWPFDocument,增加如下方法) public void createPicture(int id, int width, int height, XWPFPar ...

  2. ASP程序快速生成Excel文件

    ASP程序快速生成Excel文件 在一个web项目中,要求将数据生成Excel文件保存到本地,最早使用的方法是直接使用Microsoft的Office Web组件,但是总体感觉是慢(微软的通病).然后 ...

  3. DWF文件怎么用CAD打开?DWF输入CAD步骤

    DWF是一种开放.安全的文件格式,它可以将丰富的设计数据高效率地分发给需要查看.评审或打印这些数据的任何人.那么,DWF文件如何打开呢?下面就和小编一起来了解一下DWF输入浩辰CAD软件中的具体操作步 ...

  4. 六、完成Teigha.net在界面插入直线,多线段,弧线,圆形,点,图片,dwf文件等功能

    Teigha.net插入实体 01.拖拽界面 02.界面动态插入实体项 001.画笔实现 002.插入直线,多线段实体 003.插入圆弧,圆,点实体 004.插入图片实体 005.插入DWF文件 01 ...

  5. CAD文件怎么转换为DWF文件

    小编最近遇到一个难题"怎么将CAD文件转换为DWF文件,一直没有好的方法,在网站花了很长的时间才会怎么转换,为了大家少走弯路,小编分享就分享个大家怎么将CAD文件转换为DWF文件. 小编是在 ...

  6. PDF文件转换为DWF文件

    这篇教程呢就来说一下如何用CAD梦想画图把PDF文件转换为DWF文件. 操作工具 操作系统:Windows10 AutoCAD版本:2020 步骤 1.首先打开CAD梦想画图软件,点击"功能 ...

  7. ise生成msk文件的用处_修改cad图纸后怎么设置不生成bak文件及bak备份文件的用处...

    默认状态下,AutoCAD在保存的时候都会生成备份文件(*.bak),这也是CAD的一种安全保护错误,避免软件操作或保存过程中出现异常导致图形文件损坏.BAK文件就是图纸上一次保存的版本.如果图纸已经 ...

  8. dat文件导入cad画图步骤_图说CAD|多文件、多布局图纸批量打印设置的8个关键步骤...

    在AutoCAD中,Publish(发布)功能具有批量打印图纸的功能:1. 以读取预设页面设置的方式进行打印,可直接打印为一套图纸电子文件,也可以打印为单张图纸电子文件.2. 支持批量自定义图纸名称指 ...

  9. CAD中插入外部参照字体会变繁体_为什么CAD图纸作为外部参照插入后有些文字消失?...

    下面是本公众号文章分类目录,点击标题文字可打开分类文章列表: 安装卸载  异常.退出  文件及输入输出  基本操作技巧  设置及相关问题  界面和显示  快捷键  视图设置 选择及组 坐标输入.定位  ...

  10. Java实现pdf和Excel的生成及数据动态插入、导出

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 作者:慢时光 cnblogs.com/Tom-shushu/ ...

最新文章

  1. Asp.Net获取客户端信息-学习中
  2. HP 3055 恢复出厂
  3. Unity3d Time的使用
  4. Media Query在SAP Spartacus里的用途
  5. linux下web压力测试工具ab使用及详解
  6. php 匹配图片路径_php正则匹配图片路径原理与方法
  7. linux内核怎么修改屏幕旋转方向_树莓派4—屏幕旋转
  8. 作者:张思思(1985-),女,博士,中国科学院北京基因组研究所生命与健康大数据中心工程师...
  9. Python 数据科学手册 5.5 朴素贝叶斯分类
  10. 分页查询超时问题(1)
  11. python竞赛试题及答案_【技术分享】用python解NOIP竞赛题
  12. 洛谷 P2578 [ZJOI2005]九数码游戏【bfs+康托展开】
  13. 最大生成树算法matlab,基于最大生成树的社团划分算法
  14. flv格式怎么转换成mp4
  15. easyPOI 模板导出Excel
  16. 计算机需要那些高中数学知识点,高中数学知识点(高中数学知识点最全版)
  17. 35岁的程序员真的到头了么?国外的大龄程序员在干什么?
  18. 聂微东:《暗时间》读书笔记与读后感 - 博客 - 伯乐在线
  19. 全球及中国双十烷基二甲基氯化铵(DDAC)行业现状动态及供需前景预测报告2022-2027
  20. super 和 this

热门文章

  1. Leetcode每日一题——T32. 最长有效括号(难)——栈
  2. linux KVM的网络设置方法(bridge和nat)
  3. objectArx ---反应器
  4. 解决iOS中调用系统中的相机,显示英文标题
  5. 为什么这么多人会选择单页设计?
  6. MATLAB 中ans变量详细介绍
  7. Windows权限维持
  8. 深度学习七:GAN和DCGAN入门
  9. HDS设备高级操作_VSP_更换Cache电池手册
  10. fastbin attack学习总结