21/11/2015
Публикация листов в PDF с помощью COM API
У нас нет специального API, которое бы позволило публиковать несколько листов в один PDF-документ, так что придётся это сделать другим способом.
В этой статье я покажу как создать простой DSD-файл и использовать его для выполнения команды _PUBLISH (ПУБЛ).
Код - C#: [Выделить]
- class DSDObject
- {
- public DSDObject()
- {
- }
- public string DWG { get; set; }
- public string Layout { get; set; }
- public string Setup { get; set; }
- public string dwgName { get; set; }
- public String createDSDEntry()
- {
- StringBuilder sb = new StringBuilder();
- sb.Append("[DWF6Sheet:" + this.dwgName + "-" + Layout + "]");
- sb.AppendLine();
- sb.Append("DWG=" + DWG);
- sb.AppendLine();
- sb.Append("Layout=" + Layout);
- sb.AppendLine();
- sb.Append("Setup=");
- return sb.ToString();
- }
- }
- public static void TP()
- {
- Autodesk.AutoCAD.Interop.AcadApplication acadCOMApp;
- acadCOMApp = (Autodesk.AutoCAD.Interop.AcadApplication)Application.AcadApplication;
- AcadDocument acadDoc = acadCOMApp.ActiveDocument;
- string drawingName = acadDoc.Name;
- string drawingPath = acadDoc.FullName;
- List entries = new List();
- foreach(AcadLayout alayout in acadDoc.Layouts)
- {
- DSDObject dsdObj = new DSDObject();
- dsdObj.DWG = drawingPath;
- dsdObj.dwgName = drawingName;
- dsdObj.Layout = alayout.Name;
- dsdObj.Setup = "";
- entries.Add(dsdObj.createDSDEntry());
- }
- StreamWriter writer = new StreamWriter("c:\\trash\\testDSD.dsd");
- writer.WriteLine("[DWF6Version]");
- writer.WriteLine("Ver=1");
- foreach(string entry in entries)
- {
- writer.WriteLine(entry);
- }
- writer.WriteLine("[Target]");
- writer.WriteLine("Type=6");
- writer.WriteLine("DWF=C:\\Users\\moogalm\\Desktop\\Kitchens.pdf");
- writer.WriteLine("OUT=C:\\Users\\moogalm\\Desktop\\");
- writer.WriteLine("PWD=");
- writer.Close();
- FileInfo fi = new FileInfo("C:\\Trash\\testDSD.dsd");
- if (fi.Length > 0)
- {
- acadDoc.SetVariable("FILEDIA", 0);
- acadDoc.SendCommand("_-PUBLISH " + fi.FullName +"\n");
- acadDoc.SetVariable("FILEDIA", 1);
- }
- }
Источник: http://adndevblog.typepad.com/autocad/2015/11/publish-layouts-to-pdf-using-com.html
Автор перевода: Александр Ривилис
Отредактировано 22.11.2015 в 14:20:02
Обсуждение: http://adn-cis.org/forum/index.php?topic=3224
Опубликовано 21.11.2015Отредактировано 22.11.2015 в 14:20:02