1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C# CAD批量转换为图片

C# CAD批量转换为图片

时间:2019-09-10 10:58:52

相关推荐

C# CAD批量转换为图片

最近写了个工具,将指定目录下的CAD文件批量转换为图片格式。

首先需要添加对应的引用 :

在AutoCAD的环境下对应AutoCAD Type Library 和 AutoCAD/ObjectDBX Common 17.0 Type Library 这两个引用,

笔者由于是AutoCAD,只找到了AutoCAD Type Library 没能找到第二个,百度后得知添加对文件“C:\Program Files\Common Files\Autodesk Shared\axdb18enu.tlb”的引用就可以了。

初始化AutoCAD,根据版本不同对应的ProgramID也不相同:

1 private static AcadApplication _app = null;

1 #region 初始化CAD程序 2 #region CAD ProgramID对照表 3 //AutoCAD 4 //R16 5 //AutoCAD.Application.16 6 //AutoCAD 200 7 //R16. 8 //AutoCAD.Application.16. 9 //AutoCAD 10 //R16.11 //AutoCAD.Application.16.12 //AutoCAD 13 //R1714 //AutoCAD.Application.1715 //AutoCAD 16 //R17.17 //AutoCAD.Application.17.18 //AutoCAD 19 //R17.20 //AutoCAD.Application.17.21 //AutoCAD 22 //R1823 //AutoCAD.Application.1824 //AutoCAD 2025 //R18.26 //AutoCAD.Application.18.27 #endregion28 string programID = "AutoCAD.Application.18.0";29 try30 {31//如果CAD已经打开,就直接获取 32_app = (AcadApplication)Marshal.GetActiveObject(programID);33 }34 catch35 {36try37{38 //创建新的实例 39 _app = (AcadApplication)new AcadDocument().Application;40}41catch (Exception ex)42{43 return;44}45 }46 #endregion

然后加载CAD文件并转换为图片格式,转换完成后需要关闭对应的CAD文件释放占用:

1 AcadDocument doc = null; 2 string destPath = string.Empty; 3 try 4 { 5doc = _app.Documents.Open(pFile.FullName, true); 6doc.SetVariable("sdi", 0); 7doc.SetVariable("Filedia", 0); 8doc.SetVariable("RASTERPREVIEW", 1); 9doc.SetVariable("BACKGROUNDPLOT", 0);10doc.ActiveLayout.ConfigName = "PublishToWeb JPG.pc3";11doc.ActiveLayout.UseStandardScale = true;12doc.ActiveLayout.StandardScale = AcPlotScale.acScaleToFit;13doc.ActiveLayout.PlotType = AcPlotType.acExtents;14doc.ActiveLayout.CenterPlot = true;15doc.ActiveLayout.PlotRotation = AcPlotRotation.ac0degrees;16doc.ActiveLayout.PlotType = Autodesk.mon.AcPlotType.acExtents;17doc.Plot.QuietErrorMode = true;18destPath = bine(pFile.Directory.FullName, Path.GetFileNameWithoutExtension(pFile.Name) + ".jpg");19doc.Plot.PlotToFile(destPath, "PublishToWeb JPG.pc3");20 21 }22 catch (System.Exception e)23 {24return false;25 }26 finally27 {28if (doc != null) doc.Close(false);29 }

在全部处理完成后需要关闭CAD应用:

#region 关闭CAD程序try{_app.Quit();}catch (Exception ex){return;}#endregion

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。