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

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

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

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

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

private static AcadApplication _app = null;

 #region 初始化CAD程序
#region CAD ProgramID对照表
//AutoCAD 2004
//R16
//AutoCAD.Application.16
//AutoCAD 200
//R16.
//AutoCAD.Application.16.
//AutoCAD 2006
//R16.
//AutoCAD.Application.16.
//AutoCAD 2007
//R17
//AutoCAD.Application.17
//AutoCAD 2008
//R17.
//AutoCAD.Application.17.
//AutoCAD 2009
//R17.
//AutoCAD.Application.17.
//AutoCAD 2010
//R18
//AutoCAD.Application.18
//AutoCAD 20
//R18.
//AutoCAD.Application.18.
#endregion
string programID = "AutoCAD.Application.18.0";
try
{
//如果CAD已经打开,就直接获取
_app = (AcadApplication)Marshal.GetActiveObject(programID);
}
catch
{
try
{
//创建新的实例
_app = (AcadApplication)new AcadDocument().Application;
}
catch (Exception ex)
{
return;
}
}
#endregion

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

 AcadDocument doc = null;
string destPath = string.Empty;
try
{
doc = _app.Documents.Open(pFile.FullName, true);
doc.SetVariable("sdi", );
doc.SetVariable("Filedia", );
doc.SetVariable("RASTERPREVIEW", );
doc.SetVariable("BACKGROUNDPLOT", );
doc.ActiveLayout.ConfigName = "PublishToWeb JPG.pc3";
doc.ActiveLayout.UseStandardScale = true;
doc.ActiveLayout.StandardScale = AcPlotScale.acScaleToFit;
doc.ActiveLayout.PlotType = AcPlotType.acExtents;
doc.ActiveLayout.CenterPlot = true;
doc.ActiveLayout.PlotRotation = AcPlotRotation.ac0degrees;
doc.ActiveLayout.PlotType = Autodesk.AutoCAD.Interop.Common.AcPlotType.acExtents;
doc.Plot.QuietErrorMode = true;
destPath = Path.Combine(pFile.Directory.FullName, Path.GetFileNameWithoutExtension(pFile.Name) + ".jpg");
doc.Plot.PlotToFile(destPath, "PublishToWeb JPG.pc3"); }
catch (System.Exception e)
{
return false;
}
finally
{
if (doc != null) doc.Close(false);
}

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

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

C# CAD批量转换为图片的更多相关文章

  1. 分享:Svg文件转换为图片(调用 Inkscape 命令行)

    其实只是做了简单封装,可以方便进行批量转换. 获取Svg对象坐标的代码请看:根据svg节点对象类型和路径值转换坐标值, DrawingColor方法是进行颜色填充的. /// <summary& ...

  2. 如果把PNG、JPG、BMP和GIF文件批量转换为ICO文件?

    有时候需要将大量的图片文件(比如PNG.JPG.BMP和GIF文件)批量转换为ICO图标文件,如果一个一个操作,非常费时间.本文将介绍如何用Dr. Folder软件快速批量转换图片文件为ICO图标文件 ...

  3. 使用IMAGEMAGICK的CONVERT工具批量转换图片格式

    使用IMAGEMAGICK的CONVERT工具批量转换图片格式 http://www.qiansw.com/linux-imagemagick-convert-img.html Home > 文 ...

  4. 个人永久性免费-Excel催化剂功能第89波-批量多图片转PDF

    前一篇展示了从PDF中提取到有用信息如图片.文本.表格等功能,部分人可能对自己手中的转PDF格式的保护性有所顾虑,此篇从反向角度,提供数据保护作用,让PDF文件的数据保护更彻底,让文本型的PDF文件彻 ...

  5. 【VBA】批量插入图片

    解决如下问题: 需要批量导入图片到Excel 图片放在一个文件夹中 图片有严格的顺序关系,即按照:共通名_编号的方式命名. 图片格式统一,即均为同一格式. 有两种方式可以插入图片到Excel中,其一为 ...

  6. Linux中如何使用gThumb批量调整图片大小

    Linux中如何使用gThumb批量调整图片大小 导读 如果你的工作涉及到图片编辑和处理,就一定会有同时对多张图片进行批量大小调整的经历.虽然大多数图片编辑应用都能够非常容易地批量调整多张图片,但对于 ...

  7. 使用Adobe Photoshop CC 2015批量修改图片尺寸

    最近在工作中遇到一个问题,当时客户给的图片尺寸与我要求的图片不符,由于图片非常的多,如果一张一张的修改,十分的麻烦,后来经过一位同事的指点,发现Adobe Photoshop CC 2015可以实现批 ...

  8. ps批量修改图片

    批量更改图片尺寸的ps脚本 高端干货!PHOTOSHOP实用脚本大合集

  9. java批量转换图片格式

    废话不多直接上代码,代码其实也不多.... package com.qiao.testImage; import java.awt.image.BufferedImage; import java.i ...

随机推荐

  1. SpringBoot之旅第一篇-初探

    一.SpringBoot是什么? 微服务,应该是近年来最火的概念,越来越多的公司开始使用微服务架构,面试中被问到的微服务的概率很高,不管对技术的追求,还是为了进更好的公司,微服务都是我们开发人员的必须 ...

  2. 基于promise对小程序http请求方法封装

    原因是我不想每次请求都复制粘贴那么长的请求地址,所以我把前边那一坨请求地址作为基础地址,只传后台给的路由就ok,而且,并不是每次请求都要显示正在加载,这对小程序体验很差,所以,我加了个形参,用来判断是 ...

  3. 外呼系统APP外呼软件手机电销软件拨号销售软件功能设计

    外呼系统APP外呼软件 1 系统概述 该软件系统设计功能主要为贷款.投资.资产管理等金融中介公司提供方便快捷的线上管理各类资源的一款应用软件工具. 可根据不同职位的账号登录APP来管理电话营销.客户签 ...

  4. SQLServer之删除数据库架构

    删除数据库架构注意事项 要删除的架构不能包含任何对象. 如果架构包含对象,则 DROP 语句将失败. 可以在 sys.schemas 目录视图中查看有关架构的信息. 要求对架构具有 CONTROL 权 ...

  5. Windows Server 2016-Hyper-V HNV 新增功能

    本内容主要介绍了Hyper-V 网络虚拟化 (HNV) 功能在 Windows Server 2016 中的新增或更改内容,具体信息如下: HNV更新 功能中的功能 新的或改进 描述 可编程 Hype ...

  6. ReactiveSwift源码解析(六) SignalProtocol的take(first)与collect()延展实现

    上篇博客我们聊了observe().map().filter()延展函数的具体实现方式以及使用方式.我们在之前的博客中已经聊过,Signal的主要功能是位于SignalProtocol的协议延展中的, ...

  7. Linux 桌面玩家指南:12. 优秀的文本化编辑思想大碰撞(Markdown、LaTeX、MathJax)

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  8. 如何以编程方式签署应用程序包(C ++)

    了解如何使用SignerSignEx2函数对应用包进行签名. 如果要使用Packaging API以编程方式创建Windows应用商店应用包,则还需要在部署之前对应用包进行签名.Packaging A ...

  9. dropload.js(上拉加载插件使用过程中遇到的坑)

    dropload.js相关介绍和使用以及demo下载详见:https://github.com/ximan/dropload (原文出处) 之前因为项目需要一个上拉加载的效果,然后无意中看到了此插件, ...

  10. MySQL学习(一)日志与索引 --- 2019年1月

    1.MySQL的架构 1).连接器 先根据Ip和端口号,用户名和密码,连接MySQL数据库,连接后如果没有下一步动作,连接就处于空闲状态,此时有一个连接超时时间的设置 wait_timeout默认8小 ...