如何用.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...