问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用.NET将DWG文件打印为PDF

发布网友 发布时间:2022-04-11 01:01

我来回答

2个回答

热心网友 时间:2022-04-11 02:30

因为有人问到,所以写了个例子。具体的要求是从.NET(比如C#)里面调用AutoCAD ActiveX API实现后台打印DWG文件为PDF文件,而且要把打印页面的大小设置成和DWG视图的页面的大小一致。当然除了ActiveX API,其它接口,比如ObjectARX和AutoCAD.NET API也支持打印并能实现上述功能的。不过我们今天就限定一下范围,用一用ActiveX API,而且指定产品是AutoCAD 2010吧。
执行步骤:打开一个dwg文件,用netload加载下面代码所在的.dll文件,再输入命令plottest,就得到输出结果(一个.pdf文件)。
要用到的参考:
AcDbMgd.dll;AcMgd.dll;AutoCAD 2010 Type Library;System.Windows.Forms; AutoCAD/ObjectDBX Common 18.0 Type Library.
VB.NET:
Imports System
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.Interop
Imports Autodesk.AutoCAD.Interop.Common
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.EditorInput

<Autodesk.AutoCAD.Runtime.CommandMethod("Plottest")> _
Public Sub PlotToPDF()
Dim activeDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim ThisDrawing As AcadDocument = CType(activeDoc.AcadDocument, AcadDocument)
Dim layout As AcadLayout = ThisDrawing.ActiveLayout
Dim MediaName As String = layout.CanonicalMediaName
If MediaName.Equals("") Then
activeDoc.Editor.WriteMessage("There is no media set for the active layout.")
Return
Else
activeDoc.Editor.WriteMessage(("The media for the active layout is: " + MediaName))
End If
Try
Dim oplot As AcadPlotConfiguration = ThisDrawing.PlotConfigurations.Add("PDF", layout.ModelType)
oplot.PaperUnits = AcPlotPaperUnits.acMillimeters
oplot.StyleSheet = "monochrome.ctb"
oplot.PlotWithPlotStyles = True
oplot.ConfigName = "DWG To PDF.pc3"
oplot.UseStandardScale = True
oplot.StandardScale = AcPlotScale.acScaleToFit
oplot.PlotType = AcPlotType.acExtents
oplot.CenterPlot = True
Dim oMediaNames As Object = layout.GetCanonicalMediaNames
Dim mediaNames As ArrayList = New ArrayList(CType(oMediaNames, String()))
For Each sName As String In mediaNames
If sName.Contains(MediaName) Then
oplot.CanonicalMediaName = sName
layout.CopyFrom(oplot)
layout.PlotRotation = AcPlotRotation.ac0degrees
layout.RefreshPlotDeviceInfo()
ThisDrawing.SetVariable("BACKGROUNDPLOT", 0)
ThisDrawing.Plot.QuietErrorMode = True
ThisDrawing.Plot.PlotToFile("c:/temp/d1.pdf", "DWG To PDF.pc3")
oplot.Delete()
oplot = Nothing
Return
End If
Next
Catch es As System.Exception
System.Windows.Forms.MessageBox.Show(es.ToString)
End Try
End Sub

C#:
using System;
using System.Collections;
using System.Collections.Specialized;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Interop;
using Autodesk.AutoCAD.Interop.Common;

// Define Command "plotTest"
[CommandMethod("plotTest")]
static public void PlotToPDF()
{
Document activeDoc = Application.DocumentManager.MdiActiveDocument;
AcadDocument ThisDrawing = activeDoc.AcadDocument as AcadDocument;
AcadLayout layout = ThisDrawing.ActiveLayout;

String MediaName = layout.CanonicalMediaName;
if (MediaName.Equals(""))
{
activeDoc.Editor.WriteMessage("There is no media set for the active layout.");
return;
}
else
{
activeDoc.Editor.WriteMessage("The media for the active layout is: " + MediaName);
}

try
{
AcadPlotConfiguration oplot = ThisDrawing.PlotConfigurations.Add("PDF", layout.ModelType);
oplot.PaperUnits = AcPlotPaperUnits.acMillimeters;
oplot.StyleSheet = "monochrome.ctb";
oplot.PlotWithPlotStyles = true;
oplot.ConfigName = "DWG To PDF.pc3";
oplot.UseStandardScale = true;
oplot.StandardScale = AcPlotScale.acScaleToFit;
oplot.PlotType = AcPlotType.acExtents;
oplot.CenterPlot = true;

Object oMediaNames = layout.GetCanonicalMediaNames();

ArrayList mediaNames = new ArrayList((string[])oMediaNames);

foreach (String sName in mediaNames)
{
if (sName.Contains(MediaName))
{
oplot.CanonicalMediaName = sName;
layout.CopyFrom(oplot);
layout.PlotRotation = AcPlotRotation.ac0degrees;
layout.RefreshPlotDeviceInfo();

ThisDrawing.SetVariable("BACKGROUNDPLOT", 0);
ThisDrawing.Plot.QuietErrorMode = true;

ThisDrawing.Plot.PlotToFile("c://temp//d1.pdf","DWG To PDF.pc3");
oplot.Delete();
oplot=null;
return;
}
}
}
catch (System.Exception es)
{
System.Windows.Forms.MessageBox.Show(es.ToString());
}
}
输出结果:

热心网友 时间:2022-04-11 03:48

pdf是扫描件,这个需要打印之后,扫描就是PDF文件了
如何用.NET将DWG文件打印为PDF

执行步骤:打开一个dwg文件,用netload加载下面代码所在的.dll文件,再输入命令plottest,就得到输出结果(一个.pdf文件)。要用到的参考:AcDbMgd.dll;AcMgd.dll;AutoCAD 2010 Type Library;System.Windows.Forms; AutoCAD/ObjectDBX Common 18.0 Type Library.VB.NET:Imports System Imports Autodesk.Auto...

如何把doc文件转换成PDF格式?

"1.当然可以,首先要确定自己有一个pdf文档,而且确定目的是需要将pdf文档转换为word格式,然后我们将现有文档通过迅捷pdf转换器软件打开。2.通过选择PDF转换页面功能其中的PDF文件转WORD项目拖入文件。3.接着在迅捷pdf转换器下方按自己的需要是否更改文件名,然而在保存类型中选择*.doc选项。4.全部设置完成点击开始转换,确定自己设置好路径、更改文件名和保存类型即可。5.转换完成之后的word文档同样可以通过迅捷pdf转换器重新转换成一开始的pdf文档。"1.当然可以,首先要确定自己有一个pdf文档,而且确定目的是需要将pdf文档转换为word格式,然后我们将现有文档通过迅捷pdf转换器软件打开。2.通过选择PDF转换页面功能其中的PDF文件转WORD项目拖入文件。3.接着在迅捷pdf转换器下方按自己的需要是...

如何用.NET将DWG文件打印为PDF

执行步骤:打开一个dwg文件,用netload加载下面代码所在的.dll文件,再输入命令plottest,就得到输出结果(一个.pdf文件)。要用到的参考:AcDbMgd.dll;AcMgd.dll;AutoCAD 2010 Type Library;System.Windows.Forms; AutoCAD/ObjectDBX Common 18.0 Type Library.VB.NET:Imports System Imports Autodesk.Auto...

autocad2010 二次开发 .NET COM 如何导出pdf

DWG转PDF:选择需要转PDF的图纸,ctrl+P进如打印界面,打印机/绘图仪中选择DWG To PDF,设置好打印效果以后,(具体打印尺寸在打印范围里选择窗口然后选出需要打印的区域,再把打印比例设置好)设置完成后点击打印,然后选择您想要的路径即可,这就能转成PDF文件且您自定义选择路径 ...

如何用.NET将DWG文件打印为PDF

建议还是请你安装Adobe Acrobat XI Pro软件,用Adobe PDF打印机打印你要输出的内容,即可得到你要的PDF文档。

autocad.net不打开cad打印

具体步骤如下:1、使用AutoCAD.NETAPI来实现。AutoCAD.NETAPI提供了一系列的类,可以用来读取、操作和保存AutoCAD图纸文件,而不需要打开AutoCAD程序。2、使用AutoCAD.NETAPI读取图纸文件,可以使用Database类的ReadDwgFile方法,该方法可以从指定的文件中读取图纸文件,并返回一个Database对象,该对象可以用来...

autoCAD文件如何在没有CAD软件的电脑上打印

先把DWG格式的文件转换成DXF或者PDF文档,再打印 推荐使用Acme CAD Converter,下载地址:http://www.onlinedown.net/soft/18782.htm,下载安装完成后,打开ACC,执行“文件→批量转换”,会弹出“批量转换”对话框,单击“添加文件”或“添加文件夹中的所有图形文件”选择要转换的DWG文件,再单击“目标...

asp.net 能对DWG文件进行操作吗

DWG文件,是AUTOCAD的专用图形格式文件,在ASP.NET并不能直接支持DWG文件。如果将dwg文件转换成DXF文件,可以用ASP.NET文件读写方式,读取并绘制其中的图形数据。

.net实现cad预览的方式

可以使用AutoCADActiveX控件或者DWGTrueView。1、使用AutoCADActiveX控件:通过使用AutoCADActiveX控件,可以在应用程序中嵌入AutoCAD编辑器,从而实现对CAD文件的预览和编辑。2、使用DWGTrueView:DWGTrueView是Autodesk公司开发的免费CAD文件查看器,可以用于查看和打印DWG和DXF文件。

C#.Net 如何将CAD图导入到C#.Net界面上显示?

如果是显示DWG的内容,也就是预览功能,可以采用AUTOVUE来解决,AUTOVUE支持对其进行组件式开发。获取CAD上图元信息,有很多方法,本身CAD是支持二次开发的,可以利用CAD的二次开发API来读取CAD数据库信息。关于CAD的二次开发技术可以到网上搜索,资源很多。还可以利用ODA来进行开发(搜索Teigha.NET)。大...

C# 读取DWG文件?

以下是一个使用 Teigha .NET 的例子,读取 DWG 文件并将要素存储到 List 中:首先,您需要下载并安装 Teigha .NET。然后在 Visual Studio 中创建一个新的 C# 控制台应用程序,然后添加对 Teigha .NET 的引用。然后,在代码中使用以下命名空间:using Teigha.DatabaseServices;using Teigha.Geometry;usi...

如何打印pdf格式的文件 如何打印文件 微信pdf文件如何打印 文件打印怎么打印出来 如何打印一整个文件夹 打印文件怎么打 打印pdf文件 怎么打印pdf文件 pdf文件可以直接打印吗
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
请教高手一句地道英语表达"打擦边球/钻法律漏洞" 商品期货做什么品种好 ...团体中起主导作用的人喻为 2.把足智多谋的人喻为 3.把接待宾客的当 ... 初三物理问题~!急!!(详细解法) ...支付宝蚂蚁庄园2022年9月9日第一题答案是什么 鸳鸯中的哪个字代表雄鸟鸳鸯中代表雄鸟的字是哪个 鸳鸯中代表雄鸟的字是哪个 鸳鸯中的哪个字代表雄鸟 阳台插座如何留 阳台有哪些插座 阳台预留哪些插座 福州大学锐捷无线宽带怎么用 学校里面用的校园网,需要用锐捷客户端才能上网。这样怎么用无线路由器来热点 必联校园无线网怎么登陆锐捷账号密码 需要锐捷客户端认证的校园网,如何用手机WIFI上?? 我是校园网想用无线路由器登陆锐捷客户端怎么设置?连接后各自用各自的账号,并不是用一个人账号一起上网 三魂七魄是什么意思?请解释。 道家认为人的精神是由三魂七魄组成的,三魂七魄究竟是什么呢? 道教,佛教,师教三教的三魂七魄是什么 请问人的三魂七魄是指什么? 梦见一家人在公厕所里 梦见一家人蜗居在厕所里 梦见男朋友和爸爸在厕所吃饭 三魂七魄指的是什么 如何安慰生病的人 梦到一家人围在屎尿边吃饭是什么意思 三魂七魄,哪个掌管思想? 三魂七魄是什么意思? 怎样才能使QQ宠物显示在桌面上 人们常说“七情六欲,三魂七魄”,到底指的是哪三魂,哪七魄? 要怎样把QQ宠物请出桌面 校园网要用锐捷登录才能上网,这样能用无限路由建立WIFI吗? 校园锐捷怎么开wifi? 关于卖耳环的问题。向知道的朋友来请教一下销路问题 我想摆地摊卖点小饰品(如:耳环,耳钉,项链什么的),但是第一次做这个... 我用12306订票,用微信付款,我的微信消费记录显示已付款,但是12306网上没有订票记录。 摆地摊卖耳钉项链一般卖什么价位好卖? 黄金耳钉发票丢了可以卖吗? 在快手卖耳环需要什么条件能不能来点有用的回答? 我是小白,但喜欢耳饰,想卖耳饰,应该怎么做呢? 我想把钻石耳钉项链戒指卖掉怎么卖 关于卖耳钉 摆地摊卖耳钉如何 哪里有卖耳钉的 如何卖首饰 新浪微博手机账号被盗,其他人看你被盗的微博,会怎么显示???是不是所有关注都没了,发的消息全没了? 有没有办法知道微博有没有被盗号,总感觉自己的微博疑似被盗号了。 白银td行情主要受哪些因素影响 如果根据国际白银行情能不能算出实物白银的价格 为什么现货白银和国际白银走势不一样 现货白银投资应该看哪些经济数据?怎么看经济数据对白银价格波动的影响?