大家好,
我只是想在不打开AutoCAD或任何其他外部dwg查看器的情况下将dwg文件转换为pdf格式。我遵循了.NET开发指南中的概要(http://docs.autodesk.com/ACD/2010/ENU/AutoCAD%20.NET%20Developer这是%20Guide/index.html吗?url=WS1a9193826455f5ff2566ffd511ff6f8c7ca-33b0.htm,topicNumber=d0e50852)以及其他开发人员的帮助(
http://through-the-interface.typepad.com/through_the_interface/2007/10/previewing-and-.html
)但我已经被无数的错误所困扰
首先,打开外部文件的最佳格式是什么?文档管理员。Open()命令或数据库。readDWGFile()
其次,DocumentManager也会这样做。MdiActiveDocument=以前打开的文件,是否建立“当前”文件?每个解决方案都需要访问“当前”文档,这是否可行?
那么[CommandMethod(“XXXX”)]有什么意义吗?如果是这样,我将使用什么来打印/转换单个DWG文件?Simplot?
最后,表单“Autodesk.AutoCAD.ApplicationServices”出现错误的原因是什么。XXXXX是否没有实施?我确保所有引用的“复制本地”功能设置为False
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Reflection;
- using System.ComponentModel;
- using Autodesk.AutoCAD.EditorInput;
- using Autodesk.AutoCAD.Runtime;
- using Autodesk.AutoCAD.DatabaseServices;
- using Autodesk.AutoCAD.PlottingServices;
- //using Autodesk.AutoCAD.ApplicationServices;
- using Autodesk.AutoCAD.Geometry;
- using CAD_AS = Autodesk.AutoCAD.ApplicationServices;
- namespace ......(ommitted)
- {
- class AutoCADToPDF : (abstract class ommitted)
- {
-
- public AutoCADToPDF()
- { }
- [CommandMethod("simplot")]
- public override string Convert(string filein)
- {
-
- //**FILE IN STRING ERROR CHECK HERE
- //**Make a try/catch statement
- //Open the drawing; read-only
- Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.Open(filein, true);
-
-
- //Establish as current, active document
- CAD_AS.Application.DocumentManager.MdiActiveDocument = dwg;
- //**Probably unecessary, but setting document to Active
- CAD_AS.Document doc = CAD_AS.Application.DocumentManager.MdiActiveDocument;
-
- //Initalize the editor
- Editor edit = doc.Editor;
- //Initalize the database by loading the drawing into it
- Database db = doc.Database;
-
- //Start a new transaction against the open drawing
- using (Transaction tr = db.TransactionManager.StartTransaction())
- {
- //Reference the Layout Manager
- LayoutManager layman = LayoutManager.Current;
-
- //Open layout as read-only
- Layout layout = (Layout)tr.GetObject(layman.GetLayoutId(layman.CurrentLayout),OpenMode.ForRead);
- //Create plot info for layout
- PlotInfo plotInfo = new PlotInfo();
- plotInfo.Layout = layout.ObjectId;
- //Copy plot settings from layout
- PlotSettings settings = new PlotSettings(layout.ModelType);
- settings.CopyFrom(layout);
- //Retrieve the current plot settings validator
- PlotSettingsValidator setValidator = PlotSettingsValidator.Current;
- //Set Plot type
- setValidator.SetPlotType(settings, Autodesk.AutoCAD.DatabaseServices.PlotType.Extents);
-
- //Set the Plot Scale and center the plot
- setValidator.SetUseStandardScale(settings, true);
- setValidator.SetStdScaleType(settings, StdScaleType.ScaleToFit);
- setValidator.SetPlotCentered(settings, true);
- //Set the plotter and media
- setValidator.SetPlotConfigurationName(settings, "DWG to PDF.pc3", "ANSI_A_(8.50 x 11.00 Inches)");
- //Link plot settings to plot info
- //**Override not needed?
- plotInfo.OverrideSettings = settings;
- PlotInfoValidator infoValidator = new PlotInfoValidator();
- infoValidator.MediaMatchingPolicy = MatchingPolicy.MatchEnabled;
- infoValidator.Validate(plotInfo);
- //Check to see if a plot is already in progress
- if(PlotFactory.ProcessPlotState != ProcessPlotState.NotPlotting)
- {
- throw new ConvertException("Cannot proceed, another plot is in progress !");
- }
- //Plot the document
- using (PlotEngine engine = PlotFactory.CreatePublishEngine())
- {
- //Silence the plot dialogue
- PlotProgressDialog dlg = new PlotProgressDialog(false, 1, true);
- dlg.OnBeginPlot();
- dlg.IsVisible = false;
-
- //SPecify plot destination
- engine.BeginPlot(dlg, null);
- engine.BeginDocument(plotInfo, filein, null, 1, true, @"D:");
- //Plot the first sheet
- PlotPageInfo pageInfo = new PlotPageInfo();
- engine.BeginPage(pageInfo, plotInfo, true, null);
- engine.BeginGenerateGraphics(null);
- engine.EndGenerateGraphics(null);
- //End plotting sheet
- engine.EndPage(null);
- engine.EndDocument(null);
- //Finish plot
- dlg.OnEndPlot();
- engine.EndPlot(null);
- }
- }
- return @"D:";
- return null;
- } //End Convert
- }
- }
本帖以下内容被隐藏保护;需要你回复后,才能看到! 游客,如果您要查看本帖隐藏内容请 回复 |